@bifos/dooray-cli
Advanced tools
+1
-1
| { | ||
| "name": "@bifos/dooray-cli", | ||
| "version": "0.8.0", | ||
| "version": "0.9.0", | ||
| "description": "CLI tool for Dooray project management — AI agent & terminal friendly", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
+68
-0
@@ -49,2 +49,3 @@ # dooray-cli | ||
| dooray project tags <project> # 태그 목록 (ID / Color / Name / Group / Mandatory) | ||
| dooray project templates <project> # 템플릿 목록 (ID / Template Name, ADR-027) | ||
| ``` | ||
@@ -112,2 +113,20 @@ | ||
| #### 템플릿 기반 정형 task (ADR-027) | ||
| ```bash | ||
| # 프로젝트의 템플릿 목록 | ||
| dooray project templates <project> | ||
| # 템플릿으로 업무 생성 (body/users/tags 자동 채움) | ||
| dooray post create <project> --template "릴리스 플랜" | ||
| # 사용자 옵션 override — 일부 필드만 다르게 | ||
| dooray post create <project> --template "릴리스 플랜" --title "v0.9 릴리스 계획" --tag "p0" | ||
| # 19자리 templateId 직접 입력 | ||
| dooray post create <project> --template 1234567890123456789 --title "by id" | ||
| ``` | ||
| `interpolation=true` 가 기본 — Dooray 가 `${year}`, `${month}` 같은 시스템 매크로를 응답에서 자동 치환. 사용자 정의 변수 (`--field key=value`) 는 본 release scope 외. | ||
| ### 업무 수정 | ||
@@ -191,2 +210,51 @@ | ||
| #### 생성 후 태그 변경 (Issue #66) | ||
| ```bash | ||
| # 기존 태그 유지 + 신규 추가 (dedupe) | ||
| dooray post edit --id <postId> --tag "<group>: <name>" | ||
| # 기존 태그 전부 제거 + 신규만 적용 | ||
| dooray post edit --id <postId> --tag-clear --tag "<group>: <name>" | ||
| # 특정 태그만 제거 (기존 유지) | ||
| dooray post edit --id <postId> --tag-remove "<group>: <name>" | ||
| ``` | ||
| `--title` / `--body` 없이 단독 호출 가능 — 기존 본문은 자동 재전송. | ||
| mandatory tag 그룹은 `post create` 와 동일하게 사전 검증 (ADR-019). | ||
| #### 상위 업무 변경 (`--parent`) | ||
| ```bash | ||
| # 자식 업무에 부모 지정 | ||
| dooray post edit <project> <child-number> --title "<원제목>" --parent <project>/<parent-number> | ||
| # 다른 부모로 변경 | ||
| dooray post edit --id <postId> --title "<원제목>" --parent <other-parent-postId> | ||
| ``` | ||
| 내부적으로 `client.updatePost` 호출 후 별도 `POST .../set-parent-post` endpoint 추가 호출. **parent 해제 (top-level 화)** 는 Dooray API 가 미지원이라 웹 UI 에서 수동 처리. | ||
| interactive ($EDITOR) 모드에서 `--parent` 사용 시 무시 + stderr 경고. **parent 만 단독 변경하려면 `--title "<원제목>"` 동반 필요** — `post edit` 가 본문 변경(`--title`/`--body`) 동반 시에만 non-interactive 분기로 들어가며, parent 변경은 그 분기 안에서만 수행됨. (Issue #60) | ||
| `--dry-run --json` 출력의 `parentChange` 필드는 **사용자 입력 원문 그대로** (`<project>/<number>` 또는 raw postId) — resolver 처리 전 미리보기 값이며 실제 호출 대상 `postId` 가 아님. dry-run 은 API 미호출 원칙을 유지해 `resolvePostRef` 도 건너뜀. | ||
| #### `--to` / `--cc` / `--mention` 입력 형식 (자동 분기) | ||
| 이름 외에도 이메일 / organizationMemberId 직접 입력 가능 — **동명이인 우회 + ID 직접 입력** (Issue #58): | ||
| ```bash | ||
| # 이름 (이전부터 지원, 부분일치) | ||
| dooray post create <project> --title "..." --cc 홍길동 | ||
| # 이메일 (동명이인 우회) | ||
| dooray post create <project> --title "..." --cc user@example.com | ||
| # organizationMemberId 직접 | ||
| dooray post create <project> --title "..." --cc 1234567890123456789 | ||
| ``` | ||
| 분기 규칙: `^\d{15,}$` → memberId / `^[^\s@]+@[^\s@]+\.[^\s@]+$` → 이메일 / 그 외 → 이름 부분일치. `member search --email` 의 인프라 재사용. | ||
| #### comment list 필터 옵션 | ||
@@ -193,0 +261,0 @@ |
@@ -58,2 +58,3 @@ --- | ||
| | 프로젝트 태그 목록 | `dooray project tags <project>` (ID / Color / Name / Group / Mandatory) | | ||
| | 프로젝트 템플릿 목록 | `dooray project templates <project>` (id / templateName) | | ||
| | 멤버 상세 (organizationMemberId) | `dooray member get <organizationMemberId>` (cache 우회, ADR-021) | | ||
@@ -65,2 +66,3 @@ | organization 전체 멤버 검색 | `dooray member search <keyword>` (이름 기본), `--email`(이메일 exact), `--user-code`(사번 like), `--user-code-exact`(사번 exact), `--page`/`--size` | | ||
| | 업무 생성 | `dooray post create <project> --title "..." --body "..."` 또는 `--body-file <path>` (`--body`와 `--body-file`은 동시 사용 불가, `--tag`/`--parent`/`--workflow`/`--milestone` 지원) | | ||
| | 템플릿 기반 업무 생성 | `dooray post create <project> --template <name\|id>` — body/users/tags 자동 채움 (사용자 옵션 우선 override, ADR-027) | | ||
| | 업무 제목/본문 수정 | `dooray post edit <project> <number> --title "..." --body "..."` 또는 `--body-file <path>` | | ||
@@ -100,2 +102,6 @@ | 업무 완료 처리 | `dooray post done <project> <number>` | | ||
| | 신규 업무 + 그룹 cc | `dooray post create <project> --title "..." --cc-group <code>` — 생성 시 그룹 참조자 포함 | | ||
| | 상위 업무 설정/변경 | `dooray post edit <project> <number> --title "<원제목>" --parent <ref>` — `<ref>` 는 `<project>/<number>` 또는 raw postId. `--title` 미동반 시 interactive 모드로 진입해 무시. unset 미지원 (Issue #60) | | ||
| | `dooray post edit --id <postId> --tag <name>` | 태그 추가 (반복, dedupe) | | ||
| | `dooray post edit --id <postId> --tag-clear --tag <name>` | 태그 전체 교체 | | ||
| | `dooray post edit --id <postId> --tag-remove <name>` | 특정 태그 제거 | | ||
@@ -310,2 +316,17 @@ > **제목 옵션 네이밍**: `post` 와 `wiki page` 모두 `--title` 표준. `post`의 `--subject`는 deprecated alias로 당분간 동작하되, 새 코드에서는 `--title` 사용을 권장. | ||
| ## 동명이인 우회 — 이메일 / memberId 직접 (Issue #58) | ||
| 이름이 동일한 멤버가 여러 명이라 `--cc 홍길동` 이 모호로 실패할 때: | ||
| ```bash | ||
| # 1) 이메일로 우회 | ||
| dooray post edit --id "$POST_ID" --cc user.specific@example.com | ||
| # 2) 사전에 member search 로 ID 확보 후 직접 | ||
| MEMBER_ID=$(dooray member search 홍길동 --json | jq -r '.[] | select(.externalEmailAddress=="user.specific@example.com") | .id') | ||
| dooray post edit --id "$POST_ID" --cc "$MEMBER_ID" | ||
| ``` | ||
| `--to` / `--mention` 동일 분기 (resolveMember 인프라). 분기 규칙: `^\d{15,}$` → memberId / 이메일 정규형 → searchMembers exact / 그 외 → 이름 부분일치. | ||
| ## 신규 업무 생성 후 그룹 cc 첨부 (ADR-025) | ||
@@ -329,2 +350,32 @@ | ||
| ## 자식 업무 먼저 → 후속 부모 지정 (Issue #60) | ||
| ```bash | ||
| # 1. 자식 업무 생성 (parent 모르고) | ||
| CHILD_ID=$(dooray post create <project> --title "subtask A" --json | jq -r '.id') | ||
| # 2. 부모 결정 후 후속 지정 | ||
| dooray post edit --id "$CHILD_ID" --title "subtask A" --parent <project>/<parent-number> | ||
| ``` | ||
| **한계** (cmux-browser spike 결과): Dooray API 가 `unset-parent-post` 미제공 → CLI 로 parent 해제 불가. 필요 시 웹 UI 에서 처리. | ||
| --- | ||
| ## 태그 사후 분류 자동화 (Issue #66) | ||
| 분류 분석 결과를 받아 태그를 재분류하는 자동화는 단독 호출 패턴이 효율적: | ||
| ```bash | ||
| # 분석 스크립트가 분류한 태그 이름을 cli 로 적용 — body fetch 불요 | ||
| POST_ID=$(...) | ||
| CATEGORY=$(...) | ||
| dooray post edit --id "$POST_ID" --tag "분류: $CATEGORY" | ||
| ``` | ||
| 태그만 변경하는 시나리오에서 `--title` / `--body` 강제 없음. | ||
| mandatory 그룹은 친절한 에러 메시지로 안내 (ADR-019). | ||
| --- | ||
| ### 댓글 추가 (non-interactive) | ||
@@ -440,2 +491,17 @@ | ||
| ## 정형 task 자동화 (Issue #59 / ADR-027) | ||
| 매주 같은 형식의 task 를 만드는 자동화는 템플릿 + override 패턴이 효율적: | ||
| ```bash | ||
| # 매주 월요일 실행되는 cron — "주간 릴리스 체크" 템플릿으로 자동 생성 | ||
| TODAY=$(date +%Y-%m-%d) | ||
| POST_ID=$(dooray post create <project> \ | ||
| --template "주간 릴리스 체크" \ | ||
| --title "주간 릴리스 체크 — $TODAY" \ | ||
| --json | jq -r '.id') | ||
| ``` | ||
| 템플릿 본문의 `${year}` / `${month}` 등 매크로는 Dooray 가 자동 치환 (`interpolation=true` 기본). 사용자 정의 변수는 미지원 — 필요 시 client 측 string replace 로 처리. | ||
| ## 캐시 | ||
@@ -442,0 +508,0 @@ |
Sorry, the diff of this file is too big to display
252776
7.92%4810
6.39%505
15.56%