aiwf 0.3.3 → 0.3.5
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/.aiwf/config/language.json +1 -1
- package/.aiwf/metrics/metrics.json +18 -0
- package/.aiwf/personas/current.json +5 -0
- package/.aiwf/sessions/session_1752877859489_1t7n2fhdb.json +7 -0
- package/.aiwf/sessions/session_1752877859515_cwdv211ry.json +7 -0
- package/.aiwf/sessions/session_1752877860664_huziadmbo.json +7 -0
- package/.aiwf/sessions/session_1752877860666_kyr5u1np6.json +7 -0
- package/.aiwf/sessions/session_1752877861848_9yinepw3t.json +7 -0
- package/.aiwf/sessions/session_1752877861874_y32sputuc.json +7 -0
- package/.aiwf/sessions/session_1752877862685_ivxbl5rhz.json +7 -0
- package/.aiwf/sessions/session_1752877862820_wnq4glvxi.json +7 -0
- package/.aiwf/sessions/session_1752877864632_3ebnpaelb.json +7 -0
- package/.aiwf/sessions/session_1752877864879_b9zgjcb7d.json +7 -0
- package/.aiwf/sessions/session_1752877865533_x14m1vodi.json +7 -0
- package/.aiwf/sessions/session_1752877865562_gkoh19n7d.json +7 -0
- package/.aiwf/sessions/session_1752877866333_wp8qpdcoh.json +7 -0
- package/.aiwf/sessions/session_1752877866509_dawntfpab.json +7 -0
- package/.aiwf/sessions/session_1752877866890_plc5vfucl.json +7 -0
- package/.aiwf/sessions/session_1752877866895_ga8hmq3oi.json +7 -0
- package/.aiwf/sessions/session_1752877867761_ayjp4v5f5.json +7 -0
- package/.aiwf/sessions/session_1752877867892_lfz6jy252.json +7 -0
- package/.aiwf/sessions/session_1752877868139_7bqd9ubli.json +7 -0
- package/.aiwf/sessions/session_1752877868162_zq3ofjbsh.json +7 -0
- package/.aiwf/sessions/session_1752877869054_7rlgm9jt6.json +7 -0
- package/.aiwf/sessions/session_1752877869477_ax3nhbxzr.json +7 -0
- package/.aiwf/sessions/session_1752877870095_6hgp4vl1e.json +7 -0
- package/.aiwf/sessions/session_1752877870381_qfcrdg4li.json +7 -0
- package/.aiwf/sessions/session_1752877871895_pgd5vllhz.json +7 -0
- package/.aiwf/sessions/session_1752877872199_jbhv2g2da.json +7 -0
- package/.aiwf/sessions/session_1752877872680_x04wpffu6.json +7 -0
- package/.aiwf/sessions/session_1752877872895_3y4vbeauo.json +7 -0
- package/.aiwf/sessions/session_1752877873178_3maolzc6b.json +7 -0
- package/.aiwf/sessions/session_1752877873180_ytm83j07f.json +7 -0
- package/.aiwf/sessions/session_1752877874217_dp56c9t42.json +7 -0
- package/.aiwf/sessions/session_1752877874415_epwp1g1og.json +7 -0
- package/.aiwf/sessions/session_1752877874454_heicyuryb.json +7 -0
- package/.aiwf/sessions/session_1752877874869_1c2illeu5.json +7 -0
- package/.aiwf/sessions/session_1752877874879_k1vo4vxyx.json +7 -0
- package/.aiwf/sessions/session_1752877874913_bwgyiz9bp.json +7 -0
- package/.aiwf/sessions/session_1752877876218_44807kztz.json +7 -0
- package/.aiwf/sessions/session_1752877876515_qkhjv5kpw.json +7 -0
- package/.aiwf/sessions/session_1752877876543_p605aud1m.json +7 -0
- package/.aiwf/sessions/session_1752877876819_l65w7ifck.json +7 -0
- package/.aiwf/sessions/session_1752877876867_xrhzss4we.json +7 -0
- package/.aiwf/sessions/session_1752877876872_u7aso54qb.json +7 -0
- package/.aiwf/sessions/session_1752877877705_telnfg4o6.json +7 -0
- package/.aiwf/sessions/session_1752877878285_6s45im2ib.json +7 -0
- package/.aiwf/sessions/session_1752877878506_v0dvguqhz.json +7 -0
- package/.aiwf/sessions/session_1752877878581_3ri3yc66a.json +7 -0
- package/.aiwf/sessions/session_1752877878756_a82x9s2pd.json +7 -0
- package/.aiwf/sessions/session_1752877878886_20pjsfour.json +7 -0
- package/.aiwf/sessions/session_1752877880266_fm1ydjw0g.json +7 -0
- package/.aiwf/sessions/session_1752877881149_xbat4z03d.json +7 -0
- package/.aiwf/sessions/session_1752877881551_qy5sic9qs.json +7 -0
- package/.aiwf/sessions/session_1752877881554_24ugd96wu.json +7 -0
- package/.aiwf/sessions/session_1752877881797_e9mm25uh0.json +7 -0
- package/.aiwf/sessions/session_1752877881822_bxvjj8c9g.json +7 -0
- package/.aiwf/sessions/session_1752877881890_jv7l6jve3.json +7 -0
- package/.aiwf/sessions/session_1752877881991_f0qugdtcq.json +7 -0
- package/.aiwf/sessions/session_1752877883387_0bvw9rvnx.json +7 -0
- package/.aiwf/sessions/session_1752877883820_q6g2md2up.json +7 -0
- package/.aiwf/sessions/session_1752877884393_sqr7trvjl.json +7 -0
- package/.aiwf/sessions/session_1752877884500_whtypmzlf.json +7 -0
- package/.aiwf/sessions/session_1752877884645_y9mvvxli1.json +7 -0
- package/.aiwf/sessions/session_1752877884733_hk46eenel.json +7 -0
- package/.aiwf/sessions/session_1752877884738_c62j6214r.json +7 -0
- package/.aiwf/sessions/session_1752877884771_temhxehoz.json +7 -0
- package/.aiwf/sessions/session_1752877885643_6v5fcktc7.json +7 -0
- package/.aiwf/sessions/session_1752877886426_ee8di2fqh.json +7 -0
- package/.aiwf/sessions/session_1752877886549_3xj6tdoew.json +7 -0
- package/.aiwf/sessions/session_1752877886604_aj80yyfco.json +7 -0
- package/.aiwf/sessions/session_1752877886702_2b8841vyg.json +7 -0
- package/.aiwf/sessions/session_1752877886712_ntqc8b8bz.json +7 -0
- package/.aiwf/sessions/session_1752877886968_946m8tbw6.json +7 -0
- package/.aiwf/sessions/session_1752877887008_wg6zfg8dn.json +7 -0
- package/.aiwf/sessions/session_1752877888479_ciiu2qiqs.json +7 -0
- package/.aiwf/sessions/session_1752877889330_ravg8l66k.json +7 -0
- package/.aiwf/sessions/session_1752877889542_7zepkhjkc.json +7 -0
- package/.aiwf/sessions/session_1752877889638_ev4htqiu0.json +7 -0
- package/.aiwf/sessions/session_1752877889956_szphy2qma.json +7 -0
- package/.aiwf/sessions/session_1752877890220_o6aaa57tt.json +7 -0
- package/.aiwf/sessions/session_1752877890527_v2loy5vu1.json +7 -0
- package/.aiwf/sessions/session_1752877890572_cwq8fiuma.json +7 -0
- package/.aiwf/sessions/session_1752877892200_sgcwq1alt.json +7 -0
- package/.aiwf/sessions/session_1752877892268_v8kexpbc5.json +7 -0
- package/.aiwf/sessions/session_1752877892384_1gbbgrp4y.json +7 -0
- package/.aiwf/sessions/session_1752877893568_9p2n5p31a.json +7 -0
- package/.aiwf/sessions/session_1752877893727_un34a5tvp.json +7 -0
- package/.aiwf/sessions/session_1752877893778_01j79sw9i.json +7 -0
- package/.aiwf/sessions/session_1752877894053_jrhba6wko.json +7 -0
- package/.aiwf/sessions/session_1752877894082_x3bghawox.json +7 -0
- package/.aiwf/sessions/session_1752877894500_iytiav2ku.json +7 -0
- package/.aiwf/sessions/session_1752877894667_ucn0gc2ge.json +7 -0
- package/.aiwf/test-results-s02.json +4 -4
- package/.claude/commands/aiwf/aiwf_changelog.md +82 -0
- package/.claude/commands/aiwf/aiwf_code_review.md +88 -0
- package/.claude/commands/aiwf/aiwf_commit.md +160 -0
- package/.claude/commands/aiwf/aiwf_compress_aggressive_persona.md +53 -0
- package/.claude/commands/aiwf/aiwf_compress_context.md +116 -0
- package/.claude/commands/aiwf/aiwf_compress_minimal_persona.md +48 -0
- package/.claude/commands/aiwf/aiwf_compress_stats.md +79 -0
- package/.claude/commands/aiwf/aiwf_compress_with_persona.md +51 -0
- package/.claude/commands/aiwf/aiwf_create_feature_ledger.md +54 -0
- package/.claude/commands/aiwf/aiwf_create_general_task.md +147 -0
- package/.claude/commands/aiwf/aiwf_create_milestone_plan.md +194 -0
- package/.claude/commands/aiwf/aiwf_create_prd.md +280 -0
- package/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +189 -0
- package/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +121 -0
- package/.claude/commands/aiwf/aiwf_default_mode.md +44 -0
- package/.claude/commands/aiwf/aiwf_discuss_review.md +29 -0
- package/.claude/commands/aiwf/aiwf_do_task.md +109 -0
- package/.claude/commands/aiwf/aiwf_docs.md +225 -0
- package/.claude/commands/aiwf/aiwf_evaluate.md +92 -0
- package/.claude/commands/aiwf/aiwf_get_feature_details.md +78 -0
- package/.claude/commands/aiwf/aiwf_infinite.md +202 -0
- package/.claude/commands/aiwf/aiwf_initialize.md +134 -0
- package/.claude/commands/aiwf/aiwf_issue_create.md +65 -0
- package/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +57 -0
- package/.claude/commands/aiwf/aiwf_list_features.md +54 -0
- package/.claude/commands/aiwf/aiwf_mermaid.md +272 -0
- package/.claude/commands/aiwf/aiwf_persona_architect.md +48 -0
- package/.claude/commands/aiwf/aiwf_persona_backend.md +37 -0
- package/.claude/commands/aiwf/aiwf_persona_data_analyst.md +37 -0
- package/.claude/commands/aiwf/aiwf_persona_frontend.md +37 -0
- package/.claude/commands/aiwf/aiwf_persona_security.md +48 -0
- package/.claude/commands/aiwf/aiwf_persona_status.md +50 -0
- package/.claude/commands/aiwf/aiwf_pr_create.md +76 -0
- package/.claude/commands/aiwf/aiwf_prime.md +9 -0
- package/.claude/commands/aiwf/aiwf_project_review.md +261 -0
- package/.claude/commands/aiwf/aiwf_switch_language.md +160 -0
- package/.claude/commands/aiwf/aiwf_test.md +124 -0
- package/.claude/commands/aiwf/aiwf_testing_review.md +198 -0
- package/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +210 -0
- package/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +460 -0
- package/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +165 -0
- package/.claude/commands/aiwf/aiwf_ultrathink_general.md +305 -0
- package/.claude/commands/aiwf/aiwf_update_docs_kr.md +25 -0
- package/.claude/commands/aiwf/aiwf_update_feature_status.md +53 -0
- package/.claude/commands/aiwf/aiwf_yolo.md +300 -0
- package/.eslintrc.json +26 -0
- package/.prettierrc +10 -0
- package/CHANGELOG.md +54 -5
- package/CLAUDE.md +154 -54
- package/README.ko.md +25 -0
- package/README.md +25 -0
- package/TEST_RECOVERY_PLAN.md +68 -0
- package/claude-code/aiwf/ko/commands/ai-persona.js +1 -1
- package/docs/CLEANUP_RECOMMENDATIONS.md +86 -0
- package/docs/CLI_USAGE_GUIDE.md +479 -0
- package/package.json +9 -9
- package/scripts/update-feature-status.js +70 -0
- package/{lib → src/cli}/cache-cli.js +4 -4
- package/src/cli/index.js +206 -0
- package/{language-cli.js → src/cli/language-cli.js} +11 -4
- package/src/commands/cache-templates.js +209 -0
- package/src/commands/create-offline.js +86 -0
- package/src/commands/create-project.js +151 -0
- package/src/commands/persona.js +288 -0
- package/src/lib/backup-manager.js +270 -0
- package/src/lib/file-downloader.js +208 -0
- package/src/lib/installer.js +676 -0
- package/src/lib/rollback-manager.js +418 -0
- package/src/lib/validator.js +561 -0
- package/src/utils/git-integration.js +173 -0
- package/{language-utils.js → src/utils/language-utils.js} +2 -1
- package/src/utils/messages.js +136 -0
- package/src/utils/paths.js +130 -0
- package/tests/application.test.js +2 -2
- package/tests/installer.test.js +2 -2
- package/tests/integration/ai-persona-system.test.js +4 -4
- package/tests/integration/test-persona-system/docs/README.md +1 -0
- package/tests/integration/test-persona-system/package.json +1 -0
- package/tests/integration/test-persona-system/src/auth.js +1 -0
- package/tests/integration/test-persona-system/src/index.js +1 -0
- package/tests/integration/test-persona-system/test/test.js +1 -0
- package/tests/language-utils.test.js +1 -1
- package/tests/temp_invalid_json/invalid.json +1 -0
- package/tests/unit/ai-persona-manager.test.js +7 -7
- package/.aiwf/05_DOCUMENTATION/performance-report.md +0 -33
- package/.aiwf/test-cache/86c7f9e80251abb8bedd58953ab0d1779e46b4f43ea33b63bffdb778106373b0.json +0 -6
- package/.aiwf/test-cache/9e252a90b80fce0585d7ed0646e7a9b4343e109f661f42a3ae678ba1ec5e22c7.json +0 -7
- package/.aiwf/token-data/alerts.json +0 -293
- package/.aiwf/token-data/monitor-config.json +0 -12
- package/CHANGELOG_M02.md +0 -52
- package/claude-code/aiwf/ko/templates/web-app/template/package-lock.json +0 -10022
- package/claude-code/aiwf/ko/token-data/alerts.json +0 -293
- package/claude-code/aiwf/ko/token-data/monitor-config.json +0 -12
- package/docs/m02-dod-checklist.md +0 -125
- package/docs/m02-gap-analysis.md +0 -214
- package/docs/m02-milestone-completion-report.md +0 -186
- package/docs/m02-milestone-executive-summary.md +0 -68
- package/index.js +0 -1951
- package/lib/cache-integration.js +0 -401
- package/lib/file-batch-processor.js +0 -401
- package/lib/performance-benchmark.js +0 -621
- package/lib/template-manager.js +0 -310
- package/scripts/validate-commands.cjs +0 -338
- /package/{lib → src/lib}/ai-persona-manager.js +0 -0
- /package/{lib → src/lib}/cache-system.js +0 -0
- /package/{lib → src/lib}/context-engine.js +0 -0
- /package/{lib → src/lib}/memory-profiler.js +0 -0
- /package/{lib → src/lib}/metrics-collector.js +0 -0
- /package/{lib → src/lib}/offline-detector.js +0 -0
- /package/{lib → src/lib}/task-analyzer.js +0 -0
- /package/{lib → src/lib}/template-cache-system.js +0 -0
- /package/{lib → src/lib}/template-downloader.js +0 -0
- /package/{lib → src/lib}/template-version-manager.js +0 -0
- /package/{lib → src/lib}/token-optimizer.js +0 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# 테스팅 리뷰 - 탑 다운 실행
|
|
2
|
+
|
|
3
|
+
아키텍처, 진행 상황, 기술 결정에 초점을 맞춘 포괄적인 프로젝트 수준 리뷰를 수행합니다.
|
|
4
|
+
|
|
5
|
+
## 전제조건 확인
|
|
6
|
+
|
|
7
|
+
**먼저**, 테스팅 전략 문서가 존재하는지 확인하세요:
|
|
8
|
+
|
|
9
|
+
- `.aiwf/01_PROJECT_DOCS/TESTING_STRATEGY.md` 확인
|
|
10
|
+
- 찾을 수 없는 경우, 사용자에게 알립니다: "테스팅 전략 문서가 없습니다. 새로 만들어드릴까요, 아니면 일반적인 테스트 품질 검토로 진행할까요?"
|
|
11
|
+
- 사용자가 전략 없이 진행하려는 경우, 일반적인 테스트 품질 원칙에 초점을 맞춰 검토를 조정합니다
|
|
12
|
+
|
|
13
|
+
## 정확히 다음 7개 항목으로 TODO 생성
|
|
14
|
+
|
|
15
|
+
1. 테스팅 전략 문서 로드 (또는 검토 기준 정의)
|
|
16
|
+
2. 테스트 구현 구조 분석
|
|
17
|
+
3. 테스트-코드 정렬 평가
|
|
18
|
+
4. 잘못 정렬되거나 불필요한 테스트 식별
|
|
19
|
+
5. 핵심 기능 커버리지 평가
|
|
20
|
+
6. 수정 권장사항 생성
|
|
21
|
+
7. 정렬 보고서 생성
|
|
22
|
+
|
|
23
|
+
단계별로 따라가며 각 단계에 대한 다음 지침을 엄격히 준수하세요.
|
|
24
|
+
|
|
25
|
+
## 모든 TODO 항목에 대한 세부사항
|
|
26
|
+
|
|
27
|
+
### 1. 테스팅 전략 문서 로드 (또는 검토 기준 정의)
|
|
28
|
+
|
|
29
|
+
**옵션 A - 전략 문서가 존재하는 경우:**
|
|
30
|
+
|
|
31
|
+
- `.aiwf/01_PROJECT_DOCS/TESTING_STRATEGY.md` 로드
|
|
32
|
+
- 주요 원칙과 우선순위 추출
|
|
33
|
+
- 테스트해야 할 것과 하지 말아야 할 것 식별
|
|
34
|
+
- 커버리지 기대치와 품질 게이트 주목
|
|
35
|
+
- 테스팅 철학 이해
|
|
36
|
+
|
|
37
|
+
**옵션 B - 전략 문서가 없는 경우:**
|
|
38
|
+
검토 기준으로 일반적인 모범 사례를 사용:
|
|
39
|
+
|
|
40
|
+
- 테스트는 구현이 아닌 동작에 초점을 맞춰야 함
|
|
41
|
+
- 핵심 경로에는 커버리지가 있어야 함
|
|
42
|
+
- 테스트는 유지보수 가능하고 명확해야 함
|
|
43
|
+
- 단순한 getter/setter 과도 테스트 피하기
|
|
44
|
+
- 커버리지와 유지보수 부담 간의 균형
|
|
45
|
+
|
|
46
|
+
이 검토에 사용되는 접근법을 **문서화**하세요.
|
|
47
|
+
|
|
48
|
+
### 2. 테스트 구현 구조 분석
|
|
49
|
+
|
|
50
|
+
현재 테스트 코드베이스를 **검토**하세요:
|
|
51
|
+
|
|
52
|
+
- 테스트 실행을 위해 test.md 명령 사용 (@.claude/commands/aiwf/aiwf_test.md)
|
|
53
|
+
- 테스트 디렉토리 구조와 조직 탐색
|
|
54
|
+
- 테스트 카테고리와 그 목적 식별
|
|
55
|
+
- 테스트 명명 규칙과 패턴 확인
|
|
56
|
+
- 테스트 인프라나 유틸리티 주목
|
|
57
|
+
|
|
58
|
+
**개수 세기가 아닌 존재하는 것을 이해하는 데 집중하세요.**
|
|
59
|
+
|
|
60
|
+
### 3. 테스트-코드 정렬 평가
|
|
61
|
+
|
|
62
|
+
테스트를 실제 구현과 **비교**하세요:
|
|
63
|
+
|
|
64
|
+
- 각 주요 구성요소에 대해 테스트가 기능과 일치하는지 확인
|
|
65
|
+
- 동작 대 구현 세부사항을 테스트하는 테스트 식별
|
|
66
|
+
- 과도한 설정이나 모킹이 있는 테스트 찾기
|
|
67
|
+
- 리팩토링 시 자주 깨지는 테스트 찾기
|
|
68
|
+
- 테스트 복잡성이 코드 복잡성과 일치하는지 확인
|
|
69
|
+
|
|
70
|
+
**핵심 질문:** 테스트가 사용자가 중요하게 여기는 것을 검증하는가?
|
|
71
|
+
|
|
72
|
+
### 4. 잘못 정렬되거나 불필요한 테스트 식별
|
|
73
|
+
|
|
74
|
+
가치를 제공하지 않는 테스트를 **검색**하세요:
|
|
75
|
+
|
|
76
|
+
**전략 문서를 사용하는 경우:**
|
|
77
|
+
|
|
78
|
+
- 전략에서 "건너뛰기"로 표시된 영역의 테스트
|
|
79
|
+
- 정의된 범위를 벗어난 테스트
|
|
80
|
+
- 전략 가이드라인에 따라 과도하게 명시된 테스트
|
|
81
|
+
|
|
82
|
+
**일반 원칙을 사용하는 경우:**
|
|
83
|
+
|
|
84
|
+
- 단순한 기능에 대한 과도하게 설계된 테스트
|
|
85
|
+
- 모든 리팩토링에서 깨지는 테스트
|
|
86
|
+
- 중요하지 않은 기능의 에지 케이스 테스트
|
|
87
|
+
- 과도한 모킹/설정이 있는 테스트
|
|
88
|
+
- 성능 요구사항 없는 성능 테스트
|
|
89
|
+
|
|
90
|
+
**수정하거나 제거할 특정 테스트 목록을 생성하세요.**
|
|
91
|
+
|
|
92
|
+
### 5. 핵심 기능 커버리지 평가
|
|
93
|
+
|
|
94
|
+
필수 기능에 적절한 테스트가 있는지 **검증**하세요:
|
|
95
|
+
|
|
96
|
+
**전략 문서를 사용하는 경우:**
|
|
97
|
+
|
|
98
|
+
- 전략에서 정의된 높은 우선순위 영역의 커버리지 확인
|
|
99
|
+
- 전략별 요구사항이 테스트되는지 검증
|
|
100
|
+
|
|
101
|
+
**모든 검토에 대해:**
|
|
102
|
+
|
|
103
|
+
- 핵심 경로 테스트의 차이 식별
|
|
104
|
+
- 해당되는 경우 인증/권한 확인
|
|
105
|
+
- 중요한 작업의 오류 처리 검증
|
|
106
|
+
- 필요한 곳에 데이터 무결성 테스트 존재 보장
|
|
107
|
+
- 통합 지점이 테스트되는지 확인
|
|
108
|
+
|
|
109
|
+
**해결이 필요한 특정 차이를 기록하세요.**
|
|
110
|
+
|
|
111
|
+
### 6. 수정 권장사항 생성
|
|
112
|
+
|
|
113
|
+
구체적이고 실행 가능한 권장사항을 **생성**하세요:
|
|
114
|
+
|
|
115
|
+
각 발견사항에 대해:
|
|
116
|
+
|
|
117
|
+
- 테스트 파일과 함수 명시
|
|
118
|
+
- 수정이 필요한 이유 설명
|
|
119
|
+
- 구체적인 변경사항 제안 (제거, 단순화, 추가)
|
|
120
|
+
- 도움이 된다면 개선된 접근법의 예시 제공
|
|
121
|
+
|
|
122
|
+
**형식:**
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
파일: tests/test_example.py::test_function_name
|
|
126
|
+
문제: [문제점]
|
|
127
|
+
조치: [해야 할 일]
|
|
128
|
+
이유: [전략과 일치하는 이유]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 7. 정렬 보고서 생성
|
|
132
|
+
|
|
133
|
+
테스트-전략 정렬에 대한 집중된 보고서를 **생성**하세요:
|
|
134
|
+
|
|
135
|
+
- 시스템 날짜 명령을 사용하여 현재 타임스탬프 가져오기
|
|
136
|
+
- `.aiwf/10_STATE_OF_PROJECT/YYYY-MM-DD-HH-MM-test-alignment.md`에 보고서 생성
|
|
137
|
+
|
|
138
|
+
**보고서 구조:**
|
|
139
|
+
|
|
140
|
+
```markdown
|
|
141
|
+
# 테스트-전략 정렬 검토 - [YYYY-MM-DD HH:MM]
|
|
142
|
+
|
|
143
|
+
## 정렬 요약
|
|
144
|
+
|
|
145
|
+
테스팅 전략과의 전반적인 정렬: [우수 | 양호 | 개선 필요 | 부족]
|
|
146
|
+
|
|
147
|
+
주요 발견사항:
|
|
148
|
+
|
|
149
|
+
- [테스트 스위트 건강상태에 대한 주요 발견사항]
|
|
150
|
+
- [커버리지에 대한 주요 발견사항]
|
|
151
|
+
- [유지보수 부담에 대한 주요 발견사항]
|
|
152
|
+
|
|
153
|
+
## 수정이 필요한 테스트
|
|
154
|
+
|
|
155
|
+
### 제거 (과도하게 설계되었거나 범위를 벗어남)
|
|
156
|
+
|
|
157
|
+
[이유와 함께 특정 테스트 목록]
|
|
158
|
+
|
|
159
|
+
### 단순화 (목적에 비해 너무 복잡함)
|
|
160
|
+
|
|
161
|
+
[단순화 접근법과 함께 특정 테스트 목록]
|
|
162
|
+
|
|
163
|
+
### 추가 (핵심 격차)
|
|
164
|
+
|
|
165
|
+
[핵심 경로에 대한 특정 누락된 테스트 목록]
|
|
166
|
+
|
|
167
|
+
## 권장 조치
|
|
168
|
+
|
|
169
|
+
### 즉시 (차단 문제)
|
|
170
|
+
|
|
171
|
+
- [ ] [파일/테스트 참조와 함께 구체적인 조치]
|
|
172
|
+
|
|
173
|
+
### 단기 (품질 개선)
|
|
174
|
+
|
|
175
|
+
- [ ] [파일/테스트 참조와 함께 구체적인 조치]
|
|
176
|
+
|
|
177
|
+
### 장기 (기술 부채)
|
|
178
|
+
|
|
179
|
+
- [ ] [파일/테스트 참조와 함께 구체적인 조치]
|
|
180
|
+
|
|
181
|
+
## 테스트 건강 지표
|
|
182
|
+
|
|
183
|
+
- 테스트가 코드 목적과 일치: [예 | 부분적으로 | 아니오]
|
|
184
|
+
- 핵심 경로 커버됨: [예 | 부분적으로 | 아니오]
|
|
185
|
+
- 유지보수 부담 합리적: [예 | 부분적으로 | 아니오]
|
|
186
|
+
- 테스트가 개발 속도 지원: [예 | 부분적으로 | 아니오]
|
|
187
|
+
|
|
188
|
+
## 구현 예시
|
|
189
|
+
|
|
190
|
+
[필요한 경우, 테스트 개선의 전후 예시 표시]
|
|
191
|
+
|
|
192
|
+
## 다음 검토
|
|
193
|
+
|
|
194
|
+
권장 검토 시기: [X주/스프린트]
|
|
195
|
+
다음 검토 집중 영역: [모니터링할 특정 영역]
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**중요:** 메트릭이 아닌 정렬과 균형에 초점을 맞추세요. 목표는 프로젝트의 실제 요구를 충족하는 테스트입니다.
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# 전체 작업 지능형 실행
|
|
2
|
+
|
|
3
|
+
Arguments: $ARGUMENTS
|
|
4
|
+
|
|
5
|
+
프로젝트의 모든 작업(전체 task 또는 특정 작업의 하위 작업)을 지능적으로 분석하고 최적화된 순서로 실행합니다.
|
|
6
|
+
|
|
7
|
+
## 지능형 분석 및 실행
|
|
8
|
+
|
|
9
|
+
### 컨텍스트 분석
|
|
10
|
+
|
|
11
|
+
실행 전 다음 요소들을 분석합니다:
|
|
12
|
+
|
|
13
|
+
- **작업 의존성**: 작업 간 의존 관계 파악 (상위-하위, 작업-작업 간)
|
|
14
|
+
- **작업 복잡도**: 각 작업의 난이도와 예상 소요 시간
|
|
15
|
+
- **현재 상태**: 진행 중인 작업, 블록된 작업, 완료된 작업 식별
|
|
16
|
+
- **사용자 패턴**: 이전 작업 수행 방식과 선호도
|
|
17
|
+
- **프로젝트 우선순위**: 전체 프로젝트 관점에서의 중요도
|
|
18
|
+
|
|
19
|
+
### 스마트 실행 전략
|
|
20
|
+
|
|
21
|
+
상황에 따른 최적화된 실행 방식:
|
|
22
|
+
|
|
23
|
+
**의존성 기반 실행**:
|
|
24
|
+
|
|
25
|
+
- 의존 관계가 있는 작업들을 올바른 순서로 배치
|
|
26
|
+
- 병렬 처리 가능한 작업들 식별
|
|
27
|
+
- 차단된 작업의 의존성 해결 우선
|
|
28
|
+
|
|
29
|
+
**복잡도 기반 실행**:
|
|
30
|
+
|
|
31
|
+
- 간단한 작업 먼저 → 빠른 성취감과 모멘텀
|
|
32
|
+
- 복잡한 작업 먼저 → 집중력이 높을 때 어려운 작업 처리
|
|
33
|
+
|
|
34
|
+
**시간대별 최적화**:
|
|
35
|
+
|
|
36
|
+
- 오전: 복잡한 작업 우선
|
|
37
|
+
- 오후: 루틴한 작업이나 리뷰 작업
|
|
38
|
+
- 저녁: 마무리 작업이나 문서화
|
|
39
|
+
|
|
40
|
+
**우선순위 기반 실행**:
|
|
41
|
+
|
|
42
|
+
- 프로젝트 전체 관점에서 중요한 작업 우선
|
|
43
|
+
- 마일스톤 달성에 필요한 작업 우선
|
|
44
|
+
|
|
45
|
+
## 워크플로우
|
|
46
|
+
|
|
47
|
+
### 1. 전체 프로젝트 분석
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# 모든 작업 조회
|
|
51
|
+
task-master get-tasks --with-subtasks
|
|
52
|
+
|
|
53
|
+
# 의존성 검증
|
|
54
|
+
task-master validate-dependencies
|
|
55
|
+
|
|
56
|
+
# 복잡도 분석
|
|
57
|
+
task-master complexity-report
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2. 실행 모드 결정
|
|
61
|
+
|
|
62
|
+
**전체 프로젝트 실행**:
|
|
63
|
+
|
|
64
|
+
- 모든 pending 상태의 작업을 대상
|
|
65
|
+
- 전체 프로젝트 완료를 목표
|
|
66
|
+
|
|
67
|
+
**특정 작업 및 하위 작업 실행**:
|
|
68
|
+
|
|
69
|
+
- 특정 작업과 그 하위 작업들을 대상
|
|
70
|
+
- 해당 작업 완료를 목표
|
|
71
|
+
|
|
72
|
+
### 3. 지능형 실행 순서 결정
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# 다음 실행 가능한 작업 찾기
|
|
76
|
+
task-master next
|
|
77
|
+
|
|
78
|
+
# 실행 가능한 모든 작업 나열 (차단되지 않은 작업들)
|
|
79
|
+
task-master get-tasks --status=pending --with-subtasks
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 4. 최적화된 작업 실행
|
|
83
|
+
|
|
84
|
+
**전체 작업 실행 루프**:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# 실행 가능한 작업이 있는 동안 반복
|
|
88
|
+
while [ "$(task-master next)" != "No tasks available" ]; do
|
|
89
|
+
CURRENT_TASK=$(task-master next --format=id)
|
|
90
|
+
|
|
91
|
+
# 작업 정보 표시
|
|
92
|
+
echo "=== 실행 중: Task $CURRENT_TASK ==="
|
|
93
|
+
task-master show $CURRENT_TASK
|
|
94
|
+
|
|
95
|
+
# 하위 작업이 있는지 확인
|
|
96
|
+
if task-master show $CURRENT_TASK | grep -q "subtasks"; then
|
|
97
|
+
echo "하위 작업 실행 시작..."
|
|
98
|
+
# 하위 작업들을 순차적으로 실행
|
|
99
|
+
for subtask in $(task-master show $CURRENT_TASK --subtasks-only --format=ids); do
|
|
100
|
+
echo "--- 하위 작업 $subtask 실행 ---"
|
|
101
|
+
task-master show $subtask
|
|
102
|
+
|
|
103
|
+
# 실제 구현 로직 수행
|
|
104
|
+
echo "작업 구현 중..."
|
|
105
|
+
|
|
106
|
+
# 완료 표시
|
|
107
|
+
task-master set-status --id=$subtask --status=done
|
|
108
|
+
echo "하위 작업 $subtask 완료"
|
|
109
|
+
done
|
|
110
|
+
else
|
|
111
|
+
# 단일 작업 실행
|
|
112
|
+
echo "단일 작업 실행 중..."
|
|
113
|
+
|
|
114
|
+
# 실제 구현 로직 수행
|
|
115
|
+
echo "작업 구현 중..."
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
# 작업 완료 표시
|
|
119
|
+
task-master set-status --id=$CURRENT_TASK --status=done
|
|
120
|
+
echo "Task $CURRENT_TASK 완료"
|
|
121
|
+
echo ""
|
|
122
|
+
done
|
|
123
|
+
|
|
124
|
+
echo "모든 실행 가능한 작업이 완료되었습니다!"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 5. 진행 상황 추적 및 학습
|
|
128
|
+
|
|
129
|
+
- 실행 패턴 기록
|
|
130
|
+
- 예상 vs 실제 소요 시간 학습
|
|
131
|
+
- 효율성 메트릭 수집
|
|
132
|
+
- 차단된 작업들에 대한 해결 방안 제안
|
|
133
|
+
|
|
134
|
+
### 6. 완료 후 상태 분석
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# 전체 프로젝트 상태 확인
|
|
138
|
+
task-master get-tasks --status=all
|
|
139
|
+
|
|
140
|
+
# 차단된 작업들 확인
|
|
141
|
+
task-master get-tasks --status=blocked,deferred
|
|
142
|
+
|
|
143
|
+
# 다음 마일스톤까지의 진행률
|
|
144
|
+
echo "프로젝트 진행률 분석..."
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 학습 모드
|
|
148
|
+
|
|
149
|
+
이 명령어는 실행 패턴을 학습합니다:
|
|
150
|
+
|
|
151
|
+
- **실행 순서 최적화**: 성공적인 패턴 기억
|
|
152
|
+
- **시간 예측 개선**: 실제 소요 시간 데이터 축적
|
|
153
|
+
- **개인 선호도 학습**: 사용자의 작업 스타일 적응
|
|
154
|
+
- **효율성 향상**: 생산성 높은 워크플로우 식별
|
|
155
|
+
- **프로젝트 패턴 학습**: 프로젝트 유형별 최적 실행 전략
|
|
156
|
+
|
|
157
|
+
## 사용법
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# 전체 프로젝트의 모든 작업 실행
|
|
161
|
+
/tm run-all-tasks
|
|
162
|
+
|
|
163
|
+
# 특정 작업과 그 하위 작업들 실행
|
|
164
|
+
/tm run-all-tasks <task-id>
|
|
165
|
+
|
|
166
|
+
# 실행 전략 지정
|
|
167
|
+
/tm run-all-tasks --strategy=dependency # 의존성 우선
|
|
168
|
+
/tm run-all-tasks --strategy=complexity # 복잡도 우선
|
|
169
|
+
/tm run-all-tasks --strategy=priority # 우선순위 우선
|
|
170
|
+
/tm run-all-tasks --strategy=time # 시간대 최적화
|
|
171
|
+
|
|
172
|
+
# 특정 상태의 작업만 실행
|
|
173
|
+
/tm run-all-tasks --status=pending # pending 작업만
|
|
174
|
+
/tm run-all-tasks --status=in-progress # 진행 중인 작업만
|
|
175
|
+
|
|
176
|
+
# 드라이런 모드 (실제 실행 없이 계획만 표시)
|
|
177
|
+
/tm run-all-tasks --dry-run
|
|
178
|
+
|
|
179
|
+
# 대화형 모드 (각 작업 실행 전 확인)
|
|
180
|
+
/tm run-all-tasks --interactive
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## 지능형 기능
|
|
184
|
+
|
|
185
|
+
### 자동 중단점
|
|
186
|
+
|
|
187
|
+
- 차단된 작업 발견 시 자동 일시 정지
|
|
188
|
+
- 의존성 해결 제안
|
|
189
|
+
- 대안 작업 경로 제시
|
|
190
|
+
|
|
191
|
+
### 진행률 예측
|
|
192
|
+
|
|
193
|
+
- 남은 작업량 기반 완료 시간 예측
|
|
194
|
+
- 일일/주간 목표 달성 가능성 분석
|
|
195
|
+
- 프로젝트 전체 완료 예상 시점
|
|
196
|
+
|
|
197
|
+
### 컨텍스트 기반 제안
|
|
198
|
+
|
|
199
|
+
실행 완료 후 상황별 다음 액션:
|
|
200
|
+
|
|
201
|
+
- **모든 작업 완료** → 프로젝트 완료 축하 + 다음 프로젝트 제안
|
|
202
|
+
- **일부 작업 차단됨** → 차단 해제 방법 제안 + 대체 작업 제안
|
|
203
|
+
- **복잡한 작업 남음** → 휴식 제안 + 작업 분할 제안
|
|
204
|
+
- **의존성 문제** → 의존 관계 재구성 제안
|
|
205
|
+
|
|
206
|
+
### 스마트 배치
|
|
207
|
+
|
|
208
|
+
- **에너지 수준 고려**: 오전에는 복잡한 작업, 오후에는 단순한 작업
|
|
209
|
+
- **컨텍스트 스위칭 최소화**: 유사한 작업들을 그룹핑하여 연속 실행
|
|
210
|
+
- **병렬 처리 기회**: 독립적인 작업들의 동시 진행 제안
|