@bifos/dooray-cli
Advanced tools
+1
-1
| { | ||
| "name": "@bifos/dooray-cli", | ||
| "version": "0.10.1", | ||
| "version": "0.11.0", | ||
| "description": "CLI tool for Dooray project management — AI agent & terminal friendly", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
+51
-0
@@ -94,2 +94,18 @@ # dooray-cli | ||
| **projectId 직접 입력** (Issue #78, ADR-030): | ||
| `member=me` 응답에 없는 프로젝트 (다른 팀 / 권한만 있는 프로젝트) 도 projectId (15+자리 numeric) 를 직접 입력하면 자동으로 cache 우회. | ||
| ```bash | ||
| # 코드 매칭 (기존) | ||
| dooray post search <project> "keyword" | ||
| # projectId 직접 입력 — member 아닌 프로젝트도 자동화 가능 | ||
| dooray post search 1234567890123456789 "keyword" | ||
| dooray post list 1234567890123456789 | ||
| dooray member list 1234567890123456789 | ||
| ``` | ||
| 권한 검증은 후속 API 호출 시점 — 권한 없으면 4xx. | ||
| ### 업무 생성 | ||
@@ -387,2 +403,18 @@ | ||
| `--json` 옵션으로 자동화 파이프라인에서 동일 parse 코드를 사용할 수 있습니다 (ADR-031): | ||
| ```bash | ||
| # download — { outputPath, fileName, size } | ||
| dooray wiki page file download <project> <page-id> --file-id <id> -o ./ --json | ||
| # download-all — { count, succeeded, failed } (부분 실패 시 exit 1) | ||
| dooray wiki page file download-all <project> <page-id> -o ./ --json | jq '.failed' | ||
| # delete — { fileId, status: "deleted" } | ||
| dooray wiki page file delete <project> <page-id> --file-id <id> --json | ||
| # upload — res.result raw (--quiet 는 id 만) | ||
| dooray wiki page file upload <project> <page-id> --file ./report.pdf --json | ||
| ``` | ||
| **주의**: | ||
@@ -479,2 +511,21 @@ - `upload` 시 multipart 필드 순서 (`type` → `file`) 가 중요. | ||
| 자동화 스크립트에서 `--json` 옵션으로 구조화된 출력을 파이프로 가공할 수 있습니다 (ADR-031): | ||
| ```bash | ||
| # download — { outputPath, fileName, size } | ||
| dooray post file download <project> <number> --file-id <id> -o ./ --json | ||
| # 출력: {"outputPath": "./<fileName>", "fileName": "...", "size": 12345} | ||
| # download-all — { count, succeeded, failed } (부분 실패 시 exit 1) | ||
| dooray post file download-all <project> <number> -o ./ --json | jq '.failed' | ||
| # 출력: [] 또는 [{"fileId": "...", "error": "..."}] | ||
| # delete — { fileId, status: "deleted" } | ||
| dooray post file delete <project> <number> --file-id <id> --json | ||
| # 출력: {"fileId": "...", "status": "deleted"} | ||
| # upload — res.result raw (--quiet 는 id 만) | ||
| dooray post file upload <project> <number> ./report.pdf --json | ||
| ``` | ||
| URL/`--id`/`--url` 모드에서는 sub-id를 옵션으로 전달: | ||
@@ -481,0 +532,0 @@ ```bash |
@@ -65,3 +65,3 @@ --- | ||
| | 업무 목록 조회 | `dooray post list <project>` | | ||
| | 업무 검색 | `dooray post search <project> "<keyword>"` | | ||
| | 업무 검색 | `dooray post search <project|projectId> "<keyword>"` — projectId (15+자리 numeric) 직접 입력 시 cache 우회 (ADR-030) | | ||
| | 업무 상세 보기 | `dooray post get <project> <number>` | | ||
@@ -108,2 +108,3 @@ | 업무 생성 | `dooray post create <project> --title "..." [--body "..." \| --body-file <path>]` (`--tag`/`--parent`/`--workflow`/`--milestone` 지원) | | ||
| | 첨부파일 삭제 | `dooray post file delete <project> <number> <file-id>` | | ||
| | file 명령군 자동화 파싱 | `dooray post file <verb> ... --json` — `download` = `{outputPath,fileName,size}`, `download-all` = `{count,succeeded,failed}` (부분 실패 시 exit 1), `delete` = `{fileId,status}`, `upload` = `res.result` raw (ADR-031) | | ||
| | 댓글 첨부 목록 | `dooray post comment file list <project> <number> <comment-id>` | | ||
@@ -212,2 +213,12 @@ | 댓글 파일 업로드 | `dooray post comment file upload <project> <number> <comment-id> <path>` | | ||
| ### 첨부파일 일괄 다운로드 후 실패 분리 (ADR-031) | ||
| ```bash | ||
| # --json 으로 구조화 출력 → jq 로 성공/실패 분리 | ||
| RESULT=$(dooray post file download-all <project> <number> -o ./ --json) | ||
| echo "$RESULT" | jq -r '.failed[] | "\(.fileId): \(.error)"' >&2 | ||
| echo "$RESULT" | jq -r '.succeeded[].path' | ||
| # exit code 1 이 설정되어 있으면 실패 있는 상태 | ||
| ``` | ||
| ### 위키 페이지 첨부파일 — 스킬 파일 팀 공유 (Issue #70) | ||
@@ -593,2 +604,20 @@ | ||
| ## projectId 직접 입력 시나리오 (Issue #78, ADR-030) | ||
| AI agent 가 `member=me` 응답에 없는 프로젝트의 업무를 다뤄야 할 때: | ||
| 1. **사용자가 projectId (15+자리 numeric) 를 줬으면 그대로 명령에 사용**: | ||
| ```bash | ||
| dooray post search 1234567890123456789 "keyword" | ||
| ``` | ||
| 2. **사용자가 코드만 줬고 cache 매칭 실패 (member 아닌 프로젝트)**: | ||
| - 에러 메시지의 ADR-030 안내 확인 | ||
| - 사용자에게 "프로젝트 ID 가 필요합니다 — Dooray UI 의 프로젝트 URL 에서 확인 가능" 요청 | ||
| - 또는 `dooray project list --type private` 로 private 캐시 갱신 시도 | ||
| 3. **권한 없는 projectId 입력 시**: resolver 통과 후 후속 API 4xx 발생 — 에러 메시지에서 권한 부재 확인 후 사용자에게 보고 | ||
| 권한 검증이 resolver 단보다 한 단계 지연되는 trade-off — AI 친화적 자동화 우선 (ADR-030). | ||
| ## 캐시 | ||
@@ -595,0 +624,0 @@ |
Sorry, the diff of this file is too big to display
306015
2.18%5709
1.31%668
8.27%