aiwf 0.3.15 → 0.3.17
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.ko.md +4 -5
- package/README.md +90 -196
- package/docs/ADR_MANAGEMENT_GUIDE.ko.md +602 -0
- package/docs/ADR_MANAGEMENT_GUIDE.md +602 -0
- package/docs/API_REFERENCE_FULL.ko.md +1135 -0
- package/docs/API_REFERENCE_FULL.md +1135 -0
- package/docs/ARCHITECTURE.ko.md +314 -0
- package/docs/ARCHITECTURE.md +314 -0
- package/docs/EXAMPLES.ko.md +695 -0
- package/docs/EXAMPLES.md +12 -12
- package/docs/GETTING_STARTED.ko.md +219 -0
- package/docs/GETTING_STARTED.md +19 -26
- package/docs/MODULE_MANAGEMENT_GUIDE.ko.md +289 -0
- package/docs/MODULE_MANAGEMENT_GUIDE.md +289 -0
- package/docs/PERFORMANCE_GUIDELINES.ko.md +388 -0
- package/docs/PRD.ko.md +2 -2
- package/docs/PRD.md +2 -2
- package/docs/TROUBLESHOOTING.ko.md +366 -0
- package/docs/YOLO_SYSTEM_GUIDE.ko.md +542 -0
- package/docs/YOLO_SYSTEM_GUIDE.md +542 -0
- package/package.json +50 -2
- package/src/DEPENDENCY_MAP.md +90 -0
- package/src/lib/installer.js +1 -0
- package/src/lib/resources/templates/api-server/template/src/controllers/aiwfController.ts +0 -14
- package/src/lib/resources/templates/api-server/template/src/routes/aiwf.ts +0 -11
- package/src/lib/resources/templates/web-app/template/src/pages/AiwfDashboard.tsx +2 -5
- package/src/lib/resources/utils/token-reporter.js +2 -3
- package/src/utils/checkpoint-manager.js +11 -1
- package/src/utils/engineering-guard.js +11 -1
- package/templates/api-server/template/src/controllers/aiwfController.ts +0 -14
- package/templates/api-server/template/src/routes/aiwf.ts +0 -11
- package/templates/web-app/template/src/pages/AiwfDashboard.tsx +2 -5
- package/docs/guides/feature-git-integration-guide-ko.md +0 -481
- package/docs/guides/feature-git-integration-guide.md +0 -481
- package/src/commands/cache-templates.js +0 -209
- package/src/commands/create-offline.js +0 -86
- package/src/commands/state-refactored.js +0 -419
- package/src/lib/resources/commands/feature-ledger.js +0 -565
- package/src/lib/resources/commands/feature_commit_report.js +0 -370
- package/src/lib/resources/commands/scan_git_history.js +0 -234
- package/src/lib/resources/commands/sync_feature_commits.js +0 -154
- package/src/lib/resources/templates/web-app/template/src/components/aiwf/FeatureLedger.tsx +0 -93
- package/src/lib/resources/utils/feature-updater.js +0 -271
- package/src/utils/git-integration.js +0 -173
- package/templates/web-app/template/src/components/aiwf/FeatureLedger.tsx +0 -93
|
@@ -0,0 +1,695 @@
|
|
|
1
|
+
# AIWF 실제 사용 예제 및 활용 사례
|
|
2
|
+
|
|
3
|
+
이 문서는 다양한 개발 시나리오에서 AIWF 프레임워크를 활용하는 방법을 보여주는 실용적인 예제와 활용 사례를 제공합니다.
|
|
4
|
+
|
|
5
|
+
[한국어](EXAMPLES.ko.md) | [English](EXAMPLES.md)
|
|
6
|
+
|
|
7
|
+
## 목차
|
|
8
|
+
|
|
9
|
+
1. [새 프로젝트 시작하기](#새-프로젝트-시작하기)
|
|
10
|
+
2. [기능 개발 워크플로](#기능-개발-워크플로)
|
|
11
|
+
3. [팀 협업 시나리오](#팀-협업-시나리오)
|
|
12
|
+
4. [성능 최적화](#성능-최적화)
|
|
13
|
+
5. [대규모 코드베이스 관리](#대규모-코드베이스-관리)
|
|
14
|
+
6. [CI/CD 통합](#cicd-통합)
|
|
15
|
+
7. [다국어 프로젝트](#다국어-프로젝트)
|
|
16
|
+
8. [긴급 디버깅](#긴급-디버깅)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 새 프로젝트 시작하기
|
|
21
|
+
|
|
22
|
+
### 시나리오: 이커머스 플랫폼 개발
|
|
23
|
+
|
|
24
|
+
Claude Code로 새로운 이커머스 플랫폼 프로젝트를 시작합니다.
|
|
25
|
+
|
|
26
|
+
#### 1단계: 프로젝트 초기화
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 프로젝트 디렉토리 생성
|
|
30
|
+
mkdir my-ecommerce
|
|
31
|
+
cd my-ecommerce
|
|
32
|
+
|
|
33
|
+
# AIWF 설치
|
|
34
|
+
aiwf install
|
|
35
|
+
|
|
36
|
+
# AIWF로 프로젝트 초기화
|
|
37
|
+
/project:aiwf:initialize
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
#### 2단계: 프로젝트 비전 정의
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
/project:aiwf:aiwf_create_prd "이커머스 플랫폼" "AI 기반 추천 시스템을 갖춘 현대적인 이커머스 솔루션"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
#### 3단계: 첫 마일스톤 계획
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
/project:aiwf:aiwf_create_milestone_plan "MVP 핵심 기능"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Claude Code가 다음을 정의해줍니다:**
|
|
53
|
+
- 사용자 인증 시스템
|
|
54
|
+
- 상품 카탈로그
|
|
55
|
+
- 장바구니
|
|
56
|
+
- 주문 관리
|
|
57
|
+
- 결제 통합
|
|
58
|
+
|
|
59
|
+
#### 4단계: 스프린트 생성
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
/project:aiwf:create_sprints_from_milestone M01
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**결과:** 3개의 스프린트 생성
|
|
66
|
+
- S01: 인증 및 사용자 관리
|
|
67
|
+
- S02: 상품 카탈로그 및 검색
|
|
68
|
+
- S03: 장바구니 및 결제
|
|
69
|
+
|
|
70
|
+
#### 5단계: 개발 시작
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# 시스템 설계를 위해 아키텍트 페르소나로 전환
|
|
74
|
+
/project:aiwf:ai_persona:architect
|
|
75
|
+
|
|
76
|
+
# 전체 아키텍처 설계
|
|
77
|
+
"이커머스 플랫폼의 전체 아키텍처를 설계해주세요"
|
|
78
|
+
|
|
79
|
+
# 인증을 위한 기능 생성
|
|
80
|
+
/project:aiwf:aiwf_create_general_task "사용자 인증 시스템"
|
|
81
|
+
# 반환: FL001
|
|
82
|
+
|
|
83
|
+
# Git 브랜치 생성
|
|
84
|
+
git checkout -b feature/FL001-user-authentication
|
|
85
|
+
|
|
86
|
+
# 적절한 페르소나로 코딩 시작
|
|
87
|
+
/project:aiwf:ai_persona:developer
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 기능 개발 워크플로
|
|
93
|
+
|
|
94
|
+
### 시나리오: 실시간 알림 구현
|
|
95
|
+
|
|
96
|
+
#### 1단계: 기능 항목 생성
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
/project:aiwf:aiwf_create_general_task "실시간 알림 시스템"
|
|
100
|
+
# 반환: FL002
|
|
101
|
+
|
|
102
|
+
# 상세한 기능 명세 생성
|
|
103
|
+
/project:aiwf:feature_spec FL002
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### 2단계: 설계 단계
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# 아키텍트 페르소나 사용
|
|
110
|
+
/project:aiwf:ai_persona:architect
|
|
111
|
+
|
|
112
|
+
"WebSocket을 사용한 확장 가능한 실시간 알림 시스템을 설계해주세요"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### 3단계: 구현
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# 기능 브랜치 생성
|
|
119
|
+
git checkout -b feature/FL002-realtime-notifications
|
|
120
|
+
|
|
121
|
+
# 균형 잡힌 컨텍스트 압축으로 구현
|
|
122
|
+
/project:aiwf:compress_context:balanced
|
|
123
|
+
|
|
124
|
+
# 구현 시작
|
|
125
|
+
"알림을 위한 WebSocket 서버를 구현해주세요"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### 4단계: 테스트 및 디버깅
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# 디버거 페르소나로 전환
|
|
132
|
+
/project:aiwf:ai_persona:debugger
|
|
133
|
+
|
|
134
|
+
"WebSocket 구현에서 연결이 끊어지는 문제를 디버깅해주세요"
|
|
135
|
+
|
|
136
|
+
# 테스트 실행
|
|
137
|
+
npm test
|
|
138
|
+
|
|
139
|
+
# 테스트 태스크 생성
|
|
140
|
+
/project:aiwf:create_task "알림 시스템을 위한 통합 테스트 작성"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### 5단계: 코드 리뷰
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# 리뷰어 페르소나로 전환
|
|
147
|
+
/project:aiwf:ai_persona:reviewer
|
|
148
|
+
|
|
149
|
+
"알림 시스템 구현의 보안성과 성능을 검토해주세요"
|
|
150
|
+
|
|
151
|
+
# 리뷰 피드백 반영
|
|
152
|
+
/project:aiwf:do_task T15_S02
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
#### 6단계: 문서화
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# 문서 작성자 페르소나로 전환
|
|
159
|
+
/project:aiwf:ai_persona:documenter
|
|
160
|
+
|
|
161
|
+
"알림 엔드포인트를 위한 API 문서를 작성해주세요"
|
|
162
|
+
|
|
163
|
+
# 기능 변경 로그 생성
|
|
164
|
+
# Feature changelog 명령어가 제거됨 - 대신 aiwf_project_review 사용
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### 7단계: 기능 완료
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# 기능 참조와 함께 커밋
|
|
171
|
+
git add .
|
|
172
|
+
git commit -m "feat(FL002): 실시간 알림 시스템 구현"
|
|
173
|
+
|
|
174
|
+
# Pull Request 생성
|
|
175
|
+
gh pr create --title "[FL002] 실시간 알림 시스템" \
|
|
176
|
+
--body "WebSocket 기반 실시간 알림 구현"
|
|
177
|
+
|
|
178
|
+
# 기능 상태 업데이트
|
|
179
|
+
# Feature status 명령어가 제거됨 - 대신 aiwf_smart_complete 사용
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 팀 협업 시나리오
|
|
185
|
+
|
|
186
|
+
### 시나리오: 마이크로서비스를 작업하는 분산 팀
|
|
187
|
+
|
|
188
|
+
#### 팀 워크플로 설정
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# 팀 리더가 프로젝트 구조 생성
|
|
192
|
+
/project:aiwf:initialize
|
|
193
|
+
|
|
194
|
+
# CLAUDE.md에 팀 규칙 정의
|
|
195
|
+
cat > CLAUDE.md << 'EOF'
|
|
196
|
+
# 팀 규칙
|
|
197
|
+
|
|
198
|
+
## 커밋 메시지 형식
|
|
199
|
+
- feat(FLXXX): 새로운 기능
|
|
200
|
+
- fix(FLXXX): 버그 수정
|
|
201
|
+
- docs(FLXXX): 문서
|
|
202
|
+
- test(FLXXX): 테스트
|
|
203
|
+
- refactor(FLXXX): 코드 리팩토링
|
|
204
|
+
|
|
205
|
+
## 코드 리뷰 프로세스
|
|
206
|
+
1. 모든 PR은 2명의 승인 필요
|
|
207
|
+
2. CI/CD 파이프라인 통과 필수
|
|
208
|
+
3. 테스트 포함 필수
|
|
209
|
+
4. 문서 업데이트 필수
|
|
210
|
+
|
|
211
|
+
## 페르소나 사용법
|
|
212
|
+
- 아키텍트: 시스템 설계 결정
|
|
213
|
+
- 개발자: 구현
|
|
214
|
+
- 리뷰어: PR 검토
|
|
215
|
+
- 문서 작성자: API 문서
|
|
216
|
+
EOF
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
#### 병렬 개발
|
|
220
|
+
|
|
221
|
+
**개발자 A: 인증 서비스**
|
|
222
|
+
```bash
|
|
223
|
+
# 기능 생성
|
|
224
|
+
/project:aiwf:aiwf_create_general_task "인증 마이크로서비스"
|
|
225
|
+
# FL003
|
|
226
|
+
|
|
227
|
+
# 인증 서비스 작업
|
|
228
|
+
cd services/auth
|
|
229
|
+
/project:aiwf:ai_persona:developer
|
|
230
|
+
git checkout -b feature/FL003-auth-service
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**개발자 B: 상품 서비스**
|
|
234
|
+
```bash
|
|
235
|
+
# 기능 생성
|
|
236
|
+
/project:aiwf:aiwf_create_general_task "상품 카탈로그 마이크로서비스"
|
|
237
|
+
# FL004
|
|
238
|
+
|
|
239
|
+
# 상품 서비스 작업
|
|
240
|
+
cd services/products
|
|
241
|
+
/project:aiwf:ai_persona:developer
|
|
242
|
+
git checkout -b feature/FL004-product-service
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
#### 일일 동기화
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# 팀 상태 리포트 생성
|
|
249
|
+
/project:aiwf:team_status_report
|
|
250
|
+
|
|
251
|
+
# 모든 활성 기능 확인
|
|
252
|
+
/project:aiwf:list_features --status=in_progress
|
|
253
|
+
|
|
254
|
+
# 스프린트 진행 상황 검토
|
|
255
|
+
/project:aiwf:sprint_status S02
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
#### 코드 리뷰 프로세스
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
# 리뷰어가 페르소나 전환
|
|
262
|
+
/project:aiwf:ai_persona:reviewer
|
|
263
|
+
|
|
264
|
+
# 특정 PR 검토
|
|
265
|
+
gh pr checkout 42
|
|
266
|
+
/project:aiwf:code_review --pr=42
|
|
267
|
+
|
|
268
|
+
# 리뷰 댓글 추가
|
|
269
|
+
gh pr review 42 --comment -b "인증 실패에 대한 오류 처리를 추가해주세요"
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 성능 최적화
|
|
275
|
+
|
|
276
|
+
### 시나리오: 느린 API 엔드포인트 최적화
|
|
277
|
+
|
|
278
|
+
#### 1단계: 성능 프로파일링
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# 최적화 페르소나로 전환
|
|
282
|
+
/project:aiwf:ai_persona:optimizer
|
|
283
|
+
|
|
284
|
+
# 성능 태스크 생성
|
|
285
|
+
/project:aiwf:create_task "/api/search 엔드포인트 성능 최적화"
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
#### 2단계: 현재 성능 벤치마크
|
|
289
|
+
|
|
290
|
+
```javascript
|
|
291
|
+
// benchmark-search.js
|
|
292
|
+
import { PerformanceBenchmark } from '@aiwf/performance';
|
|
293
|
+
|
|
294
|
+
const benchmark = new PerformanceBenchmark({
|
|
295
|
+
iterations: 100,
|
|
296
|
+
memoryProfiling: true
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
const searchBenchmark = {
|
|
300
|
+
name: '검색 API 벤치마크',
|
|
301
|
+
tests: [{
|
|
302
|
+
name: '복합 검색 쿼리',
|
|
303
|
+
fn: async () => {
|
|
304
|
+
await fetch('/api/search?q=laptop&filters=price:100-1000');
|
|
305
|
+
}
|
|
306
|
+
}]
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
const baseline = await benchmark.run(searchBenchmark);
|
|
310
|
+
await benchmark.saveReport('./baseline-performance.json');
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
#### 3단계: 메모리 프로파일러로 분석
|
|
314
|
+
|
|
315
|
+
```javascript
|
|
316
|
+
// memory-analysis.js
|
|
317
|
+
import { MemoryProfiler } from '@aiwf/memory';
|
|
318
|
+
|
|
319
|
+
const profiler = new MemoryProfiler({
|
|
320
|
+
heapThreshold: 100 * 1024 * 1024 // 100MB
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
profiler.startProfiling();
|
|
324
|
+
|
|
325
|
+
// 검색 작업 실행
|
|
326
|
+
for (let i = 0; i < 1000; i++) {
|
|
327
|
+
await performSearch('테스트 쿼리');
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
const report = profiler.generateReport();
|
|
331
|
+
const suggestions = profiler.getOptimizationSuggestions();
|
|
332
|
+
|
|
333
|
+
console.log('메모리 최적화 제안:', suggestions);
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
#### 4단계: 최적화 구현
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# 최적화 페르소나로 제안 받기
|
|
340
|
+
"이 검색 구현을 분석하고 최적화 방안을 제안해주세요"
|
|
341
|
+
|
|
342
|
+
# 캐싱 구현
|
|
343
|
+
/project:aiwf:implement_caching search-results
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
#### 5단계: 개선 사항 검증
|
|
347
|
+
|
|
348
|
+
```javascript
|
|
349
|
+
// 성능 비교
|
|
350
|
+
const optimized = await benchmark.run(searchBenchmark);
|
|
351
|
+
const regression = benchmark.detectPerformanceRegression(optimized, baseline);
|
|
352
|
+
|
|
353
|
+
if (regression.hasRegression) {
|
|
354
|
+
console.error('성능 저하 감지!');
|
|
355
|
+
} else {
|
|
356
|
+
console.log(`성능이 ${regression.improvement}% 향상되었습니다`);
|
|
357
|
+
}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## 대규모 코드베이스 관리
|
|
363
|
+
|
|
364
|
+
### 시나리오: 10만 라인 이상의 레거시 시스템 작업
|
|
365
|
+
|
|
366
|
+
#### 1단계: 초기 분석
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
# 개요를 위한 적극적 압축 사용
|
|
370
|
+
/project:aiwf:compress_context:aggressive
|
|
371
|
+
|
|
372
|
+
# 프로젝트 구조 파악
|
|
373
|
+
"이 코드베이스의 전체 아키텍처를 분석해주세요"
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
#### 2단계: 현대화 계획 수립
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# 현대화를 위한 마일스톤 생성
|
|
380
|
+
/project:aiwf:aiwf_create_milestone_plan "레거시 시스템 현대화"
|
|
381
|
+
|
|
382
|
+
# 기능별로 세분화
|
|
383
|
+
/project:aiwf:aiwf_create_general_task "데이터베이스 마이그레이션" # T001
|
|
384
|
+
/project:aiwf:aiwf_create_general_task "API 현대화" # T002
|
|
385
|
+
/project:aiwf:aiwf_create_general_task "프론트엔드 리팩토링" # T003
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
#### 3단계: 점진적 리팩토링
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
# 특정 모듈에 균형 잡힌 압축 사용
|
|
392
|
+
/project:aiwf:compress_context:balanced
|
|
393
|
+
|
|
394
|
+
# 한 번에 하나의 모듈에 집중
|
|
395
|
+
"사용자 관리 모듈을 현대적인 패턴으로 리팩토링해주세요"
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
#### 4단계: 진행 상황 추적
|
|
399
|
+
|
|
400
|
+
```javascript
|
|
401
|
+
// progress-tracker.js
|
|
402
|
+
import { FeatureLedger } from '@aiwf/features';
|
|
403
|
+
|
|
404
|
+
const ledger = new FeatureLedger();
|
|
405
|
+
await ledger.init();
|
|
406
|
+
|
|
407
|
+
// 현대화 리포트 생성
|
|
408
|
+
const features = await ledger.searchFeatures({
|
|
409
|
+
tags: ['modernization'],
|
|
410
|
+
dateRange: {
|
|
411
|
+
start: '2024-01-01',
|
|
412
|
+
end: '2024-12-31'
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
|
|
416
|
+
features.forEach(feature => {
|
|
417
|
+
console.log(`${feature.id}: ${feature.name} - ${feature.progress}%`);
|
|
418
|
+
});
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## CI/CD 통합
|
|
424
|
+
|
|
425
|
+
### 시나리오: 자동화된 품질 게이트
|
|
426
|
+
|
|
427
|
+
#### 1단계: GitHub Actions 설정
|
|
428
|
+
|
|
429
|
+
```yaml
|
|
430
|
+
# .github/workflows/aiwf-quality.yml
|
|
431
|
+
name: AIWF 품질 검사
|
|
432
|
+
|
|
433
|
+
on:
|
|
434
|
+
pull_request:
|
|
435
|
+
branches: [ main ]
|
|
436
|
+
|
|
437
|
+
jobs:
|
|
438
|
+
quality-check:
|
|
439
|
+
runs-on: ubuntu-latest
|
|
440
|
+
|
|
441
|
+
steps:
|
|
442
|
+
- uses: actions/checkout@v3
|
|
443
|
+
|
|
444
|
+
- name: Node.js 설정
|
|
445
|
+
uses: actions/setup-node@v3
|
|
446
|
+
with:
|
|
447
|
+
node-version: '18'
|
|
448
|
+
|
|
449
|
+
- name: AIWF 설치
|
|
450
|
+
run: |
|
|
451
|
+
npm install -g aiwf
|
|
452
|
+
aiwf install --ci
|
|
453
|
+
|
|
454
|
+
- name: 성능 벤치마크 실행
|
|
455
|
+
run: |
|
|
456
|
+
node scripts/run-benchmarks.js
|
|
457
|
+
|
|
458
|
+
- name: 기능 완료 상태 확인
|
|
459
|
+
run: |
|
|
460
|
+
aiwf check-feature-status ${{ github.event.pull_request.title }}
|
|
461
|
+
|
|
462
|
+
- name: 리포트 생성
|
|
463
|
+
run: |
|
|
464
|
+
aiwf generate-ci-report
|
|
465
|
+
|
|
466
|
+
- name: PR에 댓글 달기
|
|
467
|
+
uses: actions/github-script@v6
|
|
468
|
+
with:
|
|
469
|
+
script: |
|
|
470
|
+
const report = require('./aiwf-ci-report.json');
|
|
471
|
+
github.rest.issues.createComment({
|
|
472
|
+
issue_number: context.issue.number,
|
|
473
|
+
owner: context.repo.owner,
|
|
474
|
+
repo: context.repo.repo,
|
|
475
|
+
body: `## AIWF 품질 리포트\n\n${report.summary}`
|
|
476
|
+
});
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
#### 2단계: Pre-commit 훅
|
|
480
|
+
|
|
481
|
+
```bash
|
|
482
|
+
# 훅 설치
|
|
483
|
+
/project:aiwf:install_git_hooks
|
|
484
|
+
|
|
485
|
+
# 커스텀 pre-commit 훅
|
|
486
|
+
cat > .git/hooks/pre-commit << 'EOF'
|
|
487
|
+
#!/bin/bash
|
|
488
|
+
|
|
489
|
+
# 기능 참조 확인
|
|
490
|
+
feature_id=$(git diff --cached --name-only | xargs grep -l "FL[0-9]\{3\}" | head -1)
|
|
491
|
+
|
|
492
|
+
if [ -z "$feature_id" ]; then
|
|
493
|
+
echo "경고: 변경사항에서 기능 참조를 찾을 수 없습니다"
|
|
494
|
+
echo "코드나 커밋 메시지에 기능 ID (FLXXX)를 추가하세요"
|
|
495
|
+
fi
|
|
496
|
+
|
|
497
|
+
# 빠른 테스트 실행
|
|
498
|
+
npm run test:quick
|
|
499
|
+
|
|
500
|
+
# 코드 품질 검사
|
|
501
|
+
aiwf code-quality-check
|
|
502
|
+
EOF
|
|
503
|
+
|
|
504
|
+
chmod +x .git/hooks/pre-commit
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
## 다국어 프로젝트
|
|
510
|
+
|
|
511
|
+
### 시나리오: 국제 고객을 둔 한국 팀
|
|
512
|
+
|
|
513
|
+
#### 1단계: 이중 언어 환경 설정
|
|
514
|
+
|
|
515
|
+
```bash
|
|
516
|
+
# 한국어를 주 언어로 AIWF 설치
|
|
517
|
+
aiwf-lang set ko
|
|
518
|
+
|
|
519
|
+
# 이중 언어 문서 구조 생성
|
|
520
|
+
mkdir -p docs/{ko,en}
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
#### 2단계: 한국어로 팀 커뮤니케이션
|
|
524
|
+
|
|
525
|
+
```bash
|
|
526
|
+
# 한국어 명령어 사용
|
|
527
|
+
/프로젝트:aiwf:초기화
|
|
528
|
+
|
|
529
|
+
# 한국어 태스크 생성
|
|
530
|
+
/프로젝트:aiwf:태스크_생성 "사용자 인증 시스템 구현"
|
|
531
|
+
|
|
532
|
+
# 한국어 커밋 메시지
|
|
533
|
+
git commit -m "기능(FL001): JWT 토큰 생성 구현"
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
#### 3단계: 영어로 고객 문서
|
|
537
|
+
|
|
538
|
+
```bash
|
|
539
|
+
# 문서 작성자 페르소나로 전환
|
|
540
|
+
/project:aiwf:ai_persona:documenter
|
|
541
|
+
|
|
542
|
+
# 한국어 코드베이스에서 영어 API 문서 생성
|
|
543
|
+
"한국어 코드베이스에서 영어 API 문서를 생성해주세요"
|
|
544
|
+
|
|
545
|
+
# 이중 언어 기능 요약 생성
|
|
546
|
+
/project:aiwf:feature_summary FL001 --lang=en,ko
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
#### 4단계: 자동화된 번역 워크플로
|
|
550
|
+
|
|
551
|
+
```javascript
|
|
552
|
+
// bilingual-docs.js
|
|
553
|
+
import { DocumentProcessor } from '@aiwf/utils';
|
|
554
|
+
|
|
555
|
+
async function generateBilingualDocs() {
|
|
556
|
+
const processor = new DocumentProcessor();
|
|
557
|
+
|
|
558
|
+
// 한국어 문서 처리
|
|
559
|
+
const koreanDocs = await processor.loadDirectory('./docs/ko');
|
|
560
|
+
|
|
561
|
+
// 영어 버전 생성
|
|
562
|
+
for (const doc of koreanDocs) {
|
|
563
|
+
const englishVersion = await processor.translate(doc, 'ko', 'en');
|
|
564
|
+
await processor.save(`./docs/en/${doc.name}`, englishVersion);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
---
|
|
570
|
+
|
|
571
|
+
## 긴급 디버깅
|
|
572
|
+
|
|
573
|
+
### 시나리오: 새벽 3시 프로덕션 이슈
|
|
574
|
+
|
|
575
|
+
#### 1단계: 빠른 컨텍스트 로딩
|
|
576
|
+
|
|
577
|
+
```bash
|
|
578
|
+
# 속도를 위한 적극적 압축 사용
|
|
579
|
+
/project:aiwf:compress_context:aggressive
|
|
580
|
+
|
|
581
|
+
# 중요한 파일만 로드
|
|
582
|
+
"결제 처리 모듈과 최근 오류 로그만 로드해주세요"
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
#### 2단계: 신속한 진단
|
|
586
|
+
|
|
587
|
+
```bash
|
|
588
|
+
# 디버거 페르소나로 전환
|
|
589
|
+
/project:aiwf:ai_persona:debugger
|
|
590
|
+
|
|
591
|
+
# 오류 분석
|
|
592
|
+
"이 스택 트레이스를 분석하고 근본 원인을 찾아주세요"
|
|
593
|
+
|
|
594
|
+
# 최근 변경사항 확인
|
|
595
|
+
git log --oneline -10 -- src/payments/
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
#### 3단계: 응급 수정
|
|
599
|
+
|
|
600
|
+
```bash
|
|
601
|
+
# 핫픽스 브랜치 생성
|
|
602
|
+
git checkout -b hotfix/payment-processing-error
|
|
603
|
+
|
|
604
|
+
# 검증과 함께 빠른 수정
|
|
605
|
+
"결제 프로세서의 null 포인터 예외를 적절한 검증으로 수정해주세요"
|
|
606
|
+
|
|
607
|
+
# 수정 테스트
|
|
608
|
+
npm run test:payments
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
#### 4단계: 배포 및 문서화
|
|
612
|
+
|
|
613
|
+
```bash
|
|
614
|
+
# 명확한 메시지로 커밋
|
|
615
|
+
git commit -m "hotfix: 결제 프로세서의 null 포인터 수정
|
|
616
|
+
|
|
617
|
+
- 결제 방법에 대한 null 검사 추가
|
|
618
|
+
- 방어적 프로그래밍 추가
|
|
619
|
+
- 엣지 케이스에 대한 단위 테스트 추가
|
|
620
|
+
|
|
621
|
+
Fixes #456"
|
|
622
|
+
|
|
623
|
+
# 긴급 PR 생성
|
|
624
|
+
gh pr create --title "HOTFIX: 결제 처리 오류" \
|
|
625
|
+
--body "프로덕션 이슈에 대한 긴급 수정" \
|
|
626
|
+
--label "hotfix,urgent"
|
|
627
|
+
|
|
628
|
+
# 사고 문서화
|
|
629
|
+
/project:aiwf:create_incident_report "결제 처리 실패"
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
#### 5단계: 사후 분석
|
|
633
|
+
|
|
634
|
+
```bash
|
|
635
|
+
# 분석을 위해 아키텍트 페르소나로 전환
|
|
636
|
+
/project:aiwf:ai_persona:architect
|
|
637
|
+
|
|
638
|
+
"이 사고를 분석하고 유사한 문제를 방지하기 위한 아키텍처 개선사항을 제안해주세요"
|
|
639
|
+
|
|
640
|
+
# 개선 태스크 생성
|
|
641
|
+
/project:aiwf:create_task "결제 처리 안전장치 구현"
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
---
|
|
645
|
+
|
|
646
|
+
## 모범 사례 요약
|
|
647
|
+
|
|
648
|
+
### 1. 페르소나 사용 패턴
|
|
649
|
+
```bash
|
|
650
|
+
설계 → Architect (아키텍트)
|
|
651
|
+
코딩 → Developer (개발자)
|
|
652
|
+
디버깅 → Debugger (디버거)
|
|
653
|
+
리뷰 → Reviewer (리뷰어)
|
|
654
|
+
문서화 → Documenter (문서 작성자)
|
|
655
|
+
최적화 → Optimizer (최적화)
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
### 2. 압축 모드 선택
|
|
659
|
+
```bash
|
|
660
|
+
개요/탐색 → Aggressive (적극적)
|
|
661
|
+
일반 개발 → Balanced (균형)
|
|
662
|
+
중요/디버깅 → Conservative (보수적)
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
### 3. 기능-Git 워크플로
|
|
666
|
+
```bash
|
|
667
|
+
기능 → 브랜치 → 커밋 → PR → 병합 → 완료
|
|
668
|
+
FL001 → feature/FL001-desc → feat(FL001): msg → PR#42 → main → ✓
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
### 4. 토큰 관리
|
|
672
|
+
- 정기적으로 사용량 모니터링
|
|
673
|
+
- 사전에 압축 사용
|
|
674
|
+
- 불필요한 파일 제외
|
|
675
|
+
- 주요 태스크 간 컨텍스트 정리
|
|
676
|
+
|
|
677
|
+
### 5. 팀 협업
|
|
678
|
+
- 일관된 커밋 형식
|
|
679
|
+
- 정기적인 상태 업데이트
|
|
680
|
+
- 명확한 기능 소유권
|
|
681
|
+
- 문서화된 규칙
|
|
682
|
+
|
|
683
|
+
---
|
|
684
|
+
|
|
685
|
+
## 결론
|
|
686
|
+
|
|
687
|
+
이러한 예제들은 실제 시나리오에서 AIWF의 유연성과 강력함을 보여줍니다. 성공의 핵심은:
|
|
688
|
+
|
|
689
|
+
1. **상황에 맞는 도구**: 적절한 페르소나와 압축 모드 사용
|
|
690
|
+
2. **일관된 워크플로**: 확립된 패턴 따르기
|
|
691
|
+
3. **명확한 소통**: 기능 참조와 구조화된 커밋 사용
|
|
692
|
+
4. **사전 관리**: 토큰, 성능, 진행 상황 모니터링
|
|
693
|
+
5. **팀 정렬**: 규칙 문서화 및 공유
|
|
694
|
+
|
|
695
|
+
더 많은 예제와 커뮤니티 기여를 보려면 [GitHub 저장소](https://github.com/moonklabs/aiwf/tree/main/examples)를 방문하세요.
|