@bifos/dooray-cli 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,6 +46,7 @@ dooray project members <project> # 멤버 목록
46
46
  dooray project workflows <project> # 워크플로우 목록
47
47
  dooray project groups <project> # 멤버 그룹 목록 (ID / Code)
48
48
  dooray project tags <project> # 태그 목록 (ID / Color / Name / Group / Mandatory)
49
+ dooray project templates <project> # 템플릿 목록 (ID / Template Name, ADR-027)
49
50
  ```
50
51
 
51
52
  > **태그 캐시 갱신**: 이전 버전에서 캐시한 태그가 색상 없이 표시되면 `dooray cache clear` 실행 후 다시 조회하세요.
@@ -108,6 +109,24 @@ dooray post create <project> \
108
109
 
109
110
  > mandatory-tag 정책 프로젝트(예: `<project>`)에서는 mandatory 그룹마다 1개 이상 `--tag`로 지정해야 한다. 누락 시 클라이언트가 사전 검증으로 후보 목록과 함께 에러 출력.
110
111
 
112
+ #### 템플릿 기반 정형 task (ADR-027)
113
+
114
+ ```bash
115
+ # 프로젝트의 템플릿 목록
116
+ dooray project templates <project>
117
+
118
+ # 템플릿으로 업무 생성 (body/users/tags 자동 채움)
119
+ dooray post create <project> --template "릴리스 플랜"
120
+
121
+ # 사용자 옵션 override — 일부 필드만 다르게
122
+ dooray post create <project> --template "릴리스 플랜" --title "v0.9 릴리스 계획" --tag "p0"
123
+
124
+ # 19자리 templateId 직접 입력
125
+ dooray post create <project> --template 1234567890123456789 --title "by id"
126
+ ```
127
+
128
+ `interpolation=true` 가 기본 — Dooray 가 `${year}`, `${month}` 같은 시스템 매크로를 응답에서 자동 치환. 사용자 정의 변수 (`--field key=value`) 는 본 release scope 외.
129
+
111
130
  ### 업무 수정
112
131
 
113
132
  ```bash
@@ -163,6 +182,78 @@ dooray post comment add <project> <post-number> --body "..." --link-task <projec
163
182
  > `--mention` / `--mention-group` / `--link-task` / `--dry-run` 은 `post create`, `post edit`, `post comment add`, `post comment edit` 4 명령 모두 지원.
164
183
  > 이전 버전 캐시는 orgId가 없으므로 첫 호출 시 자동 갱신됩니다 (또는 `dooray cache clear`).
165
184
 
185
+ #### 참조자(cc) / 담당자(to) 변경 (ADR-025)
186
+
187
+ ```bash
188
+ # 멤버/그룹 추가 (기존 참조자 유지 + dedupe)
189
+ dooray post edit <project> <post-number> \
190
+ --cc 홍길동 --cc-group dev-team \
191
+ --to 김철수
192
+
193
+ # 기존 참조자 전부 비우고 신규만
194
+ dooray post edit <project> <post-number> --cc-clear --cc 홍길동
195
+
196
+ # 신규 업무 생성 시 그룹 cc 동봉
197
+ dooray post create <project> --title "주간 audit" --cc-group dev-team
198
+ ```
199
+
200
+ interactive ($EDITOR) 모드에서는 위 6개 옵션이 무시되고 stderr 경고가 출력됩니다.
201
+ `post edit --dry-run --json` 사용 시 출력에 `users: { to, cc }` 가 포함되어 API 호출 없이 변경 결과 미리보기 가능. (`post create --dry-run` 은 본문만 출력하며 `users` 는 포함하지 않음.)
202
+
203
+ ```bash
204
+ dooray post edit <project> <post-number> --cc-group dev-team --dry-run --json | jq '.users.cc'
205
+ # 출력 예: [{ "type": "group", "group": { "projectMemberGroupId": "...", "members": [] } }, ...]
206
+ ```
207
+
208
+ #### 생성 후 태그 변경 (Issue #66)
209
+
210
+ ```bash
211
+ # 기존 태그 유지 + 신규 추가 (dedupe)
212
+ dooray post edit --id <postId> --tag "<group>: <name>"
213
+
214
+ # 기존 태그 전부 제거 + 신규만 적용
215
+ dooray post edit --id <postId> --tag-clear --tag "<group>: <name>"
216
+
217
+ # 특정 태그만 제거 (기존 유지)
218
+ dooray post edit --id <postId> --tag-remove "<group>: <name>"
219
+ ```
220
+
221
+ `--title` / `--body` 없이 단독 호출 가능 — 기존 본문은 자동 재전송.
222
+ mandatory tag 그룹은 `post create` 와 동일하게 사전 검증 (ADR-019).
223
+
224
+ #### 상위 업무 변경 (`--parent`)
225
+
226
+ ```bash
227
+ # 자식 업무에 부모 지정
228
+ dooray post edit <project> <child-number> --title "<원제목>" --parent <project>/<parent-number>
229
+
230
+ # 다른 부모로 변경
231
+ dooray post edit --id <postId> --title "<원제목>" --parent <other-parent-postId>
232
+ ```
233
+
234
+ 내부적으로 `client.updatePost` 호출 후 별도 `POST .../set-parent-post` endpoint 추가 호출. **parent 해제 (top-level 화)** 는 Dooray API 가 미지원이라 웹 UI 에서 수동 처리.
235
+
236
+ interactive ($EDITOR) 모드에서 `--parent` 사용 시 무시 + stderr 경고. **parent 만 단독 변경하려면 `--title "<원제목>"` 동반 필요** — `post edit` 가 본문 변경(`--title`/`--body`) 동반 시에만 non-interactive 분기로 들어가며, parent 변경은 그 분기 안에서만 수행됨. (Issue #60)
237
+
238
+ `--dry-run --json` 출력의 `parentChange` 필드는 **사용자 입력 원문 그대로** (`<project>/<number>` 또는 raw postId) — resolver 처리 전 미리보기 값이며 실제 호출 대상 `postId` 가 아님. dry-run 은 API 미호출 원칙을 유지해 `resolvePostRef` 도 건너뜀.
239
+
240
+ #### `--to` / `--cc` / `--mention` 입력 형식 (자동 분기)
241
+
242
+ 이름 외에도 이메일 / organizationMemberId 직접 입력 가능 — **동명이인 우회 + ID 직접 입력** (Issue #58):
243
+
244
+ ```bash
245
+ # 이름 (이전부터 지원, 부분일치)
246
+ dooray post create <project> --title "..." --cc 홍길동
247
+
248
+ # 이메일 (동명이인 우회)
249
+ dooray post create <project> --title "..." --cc user@example.com
250
+
251
+ # organizationMemberId 직접
252
+ dooray post create <project> --title "..." --cc 1234567890123456789
253
+ ```
254
+
255
+ 분기 규칙: `^\d{15,}$` → memberId / `^[^\s@]+@[^\s@]+\.[^\s@]+$` → 이메일 / 그 외 → 이름 부분일치. `member search --email` 의 인프라 재사용.
256
+
166
257
  #### comment list 필터 옵션
167
258
 
168
259
  ```bash