@bifos/dooray-cli 0.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bifos/dooray-cli",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "CLI tool for Dooray project management — AI agent & terminal friendly",
5
5
  "keywords": [
6
6
  "dooray",
@@ -55,12 +55,14 @@ dooray doctor # 설정 검증
55
55
  | 프로젝트 멤버 보기 | `dooray project members <project>` 또는 `dooray member list <project>` (이름·organizationMemberId) |
56
56
  | 프로젝트 멤버 그룹 목록 | `dooray project groups <project>` (ID / Code) |
57
57
  | 프로젝트 태그 목록 | `dooray project tags <project>` (ID / Color / Name / Group / Mandatory) |
58
+ | 프로젝트 템플릿 목록 | `dooray project templates <project>` (id / templateName) |
58
59
  | 멤버 상세 (organizationMemberId) | `dooray member get <organizationMemberId>` (cache 우회, ADR-021) |
59
60
  | organization 전체 멤버 검색 | `dooray member search <keyword>` (이름 기본), `--email`(이메일 exact), `--user-code`(사번 like), `--user-code-exact`(사번 exact), `--page`/`--size` |
60
61
  | 업무 목록 조회 | `dooray post list <project>` |
61
62
  | 업무 검색 | `dooray post search <project> "<keyword>"` |
62
63
  | 업무 상세 보기 | `dooray post get <project> <number>` |
63
64
  | 업무 생성 | `dooray post create <project> --title "..." --body "..."` 또는 `--body-file <path>` (`--body`와 `--body-file`은 동시 사용 불가, `--tag`/`--parent`/`--workflow`/`--milestone` 지원) |
65
+ | 템플릿 기반 업무 생성 | `dooray post create <project> --template <name\|id>` — body/users/tags 자동 채움 (사용자 옵션 우선 override, ADR-027) |
64
66
  | 업무 제목/본문 수정 | `dooray post edit <project> <number> --title "..." --body "..."` 또는 `--body-file <path>` |
65
67
  | 업무 완료 처리 | `dooray post done <project> <number>` |
66
68
  | 업무 워크플로우 변경 | `dooray post workflow <project> <number> <workflow>` |
@@ -95,6 +97,10 @@ dooray doctor # 설정 검증
95
97
  | 참조자(cc) 멤버/그룹 추가 | `dooray post edit <project> <number> --cc-group <code>` — 기존 참조자 유지 + 그룹 추가 (dedupe, ADR-025) |
96
98
  | 참조자 전체 교체 | `dooray post edit <project> <number> --cc-clear --cc <name>` — 기존 참조자 비우고 신규 멤버만 |
97
99
  | 신규 업무 + 그룹 cc | `dooray post create <project> --title "..." --cc-group <code>` — 생성 시 그룹 참조자 포함 |
100
+ | 상위 업무 설정/변경 | `dooray post edit <project> <number> --title "<원제목>" --parent <ref>` — `<ref>` 는 `<project>/<number>` 또는 raw postId. `--title` 미동반 시 interactive 모드로 진입해 무시. unset 미지원 (Issue #60) |
101
+ | `dooray post edit --id <postId> --tag <name>` | 태그 추가 (반복, dedupe) |
102
+ | `dooray post edit --id <postId> --tag-clear --tag <name>` | 태그 전체 교체 |
103
+ | `dooray post edit --id <postId> --tag-remove <name>` | 특정 태그 제거 |
98
104
 
99
105
  > **제목 옵션 네이밍**: `post` 와 `wiki page` 모두 `--title` 표준. `post`의 `--subject`는 deprecated alias로 당분간 동작하되, 새 코드에서는 `--title` 사용을 권장.
100
106
 
@@ -304,6 +310,21 @@ dooray post edit --id "$POST_ID" --cc-group qa-team --dry-run --json \
304
310
 
305
311
  > interactive (`$EDITOR`) 모드에서는 위 옵션이 무시되고 stderr 경고가 출력됩니다.
306
312
 
313
+ ## 동명이인 우회 — 이메일 / memberId 직접 (Issue #58)
314
+
315
+ 이름이 동일한 멤버가 여러 명이라 `--cc 홍길동` 이 모호로 실패할 때:
316
+
317
+ ```bash
318
+ # 1) 이메일로 우회
319
+ dooray post edit --id "$POST_ID" --cc user.specific@example.com
320
+
321
+ # 2) 사전에 member search 로 ID 확보 후 직접
322
+ MEMBER_ID=$(dooray member search 홍길동 --json | jq -r '.[] | select(.externalEmailAddress=="user.specific@example.com") | .id')
323
+ dooray post edit --id "$POST_ID" --cc "$MEMBER_ID"
324
+ ```
325
+
326
+ `--to` / `--mention` 동일 분기 (resolveMember 인프라). 분기 규칙: `^\d{15,}$` → memberId / 이메일 정규형 → searchMembers exact / 그 외 → 이름 부분일치.
327
+
307
328
  ## 신규 업무 생성 후 그룹 cc 첨부 (ADR-025)
308
329
 
309
330
  audit 리포트 분석 → 신규 업무 생성 → 후속으로 특정 그룹을 참조에 추가하는 자동화 패턴:
@@ -322,6 +343,36 @@ dooray post edit --id "$POST_ID" --cc-group qa-team
322
343
 
323
344
  ---
324
345
 
346
+ ## 자식 업무 먼저 → 후속 부모 지정 (Issue #60)
347
+
348
+ ```bash
349
+ # 1. 자식 업무 생성 (parent 모르고)
350
+ CHILD_ID=$(dooray post create <project> --title "subtask A" --json | jq -r '.id')
351
+
352
+ # 2. 부모 결정 후 후속 지정
353
+ dooray post edit --id "$CHILD_ID" --title "subtask A" --parent <project>/<parent-number>
354
+ ```
355
+
356
+ **한계** (cmux-browser spike 결과): Dooray API 가 `unset-parent-post` 미제공 → CLI 로 parent 해제 불가. 필요 시 웹 UI 에서 처리.
357
+
358
+ ---
359
+
360
+ ## 태그 사후 분류 자동화 (Issue #66)
361
+
362
+ 분류 분석 결과를 받아 태그를 재분류하는 자동화는 단독 호출 패턴이 효율적:
363
+
364
+ ```bash
365
+ # 분석 스크립트가 분류한 태그 이름을 cli 로 적용 — body fetch 불요
366
+ POST_ID=$(...)
367
+ CATEGORY=$(...)
368
+ dooray post edit --id "$POST_ID" --tag "분류: $CATEGORY"
369
+ ```
370
+
371
+ 태그만 변경하는 시나리오에서 `--title` / `--body` 강제 없음.
372
+ mandatory 그룹은 친절한 에러 메시지로 안내 (ADR-019).
373
+
374
+ ---
375
+
325
376
  ### 댓글 추가 (non-interactive)
326
377
 
327
378
  ```bash
@@ -432,6 +483,21 @@ CLI 에러 발생 시 복구 방법:
432
483
 
433
484
  ---
434
485
 
486
+ ## 정형 task 자동화 (Issue #59 / ADR-027)
487
+
488
+ 매주 같은 형식의 task 를 만드는 자동화는 템플릿 + override 패턴이 효율적:
489
+
490
+ ```bash
491
+ # 매주 월요일 실행되는 cron — "주간 릴리스 체크" 템플릿으로 자동 생성
492
+ TODAY=$(date +%Y-%m-%d)
493
+ POST_ID=$(dooray post create <project> \
494
+ --template "주간 릴리스 체크" \
495
+ --title "주간 릴리스 체크 — $TODAY" \
496
+ --json | jq -r '.id')
497
+ ```
498
+
499
+ 템플릿 본문의 `${year}` / `${month}` 등 매크로는 Dooray 가 자동 치환 (`interpolation=true` 기본). 사용자 정의 변수는 미지원 — 필요 시 client 측 string replace 로 처리.
500
+
435
501
  ## 캐시
436
502
 
437
503
  프로젝트, 멤버, 워크플로우, 위키 정보는 `~/.dooray/cache/`에 캐시된다.