aiwf 0.1.0 → 0.3.1
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/CHANGELOG.md +46 -0
- package/CLAUDE.md +19 -0
- package/LICENSE +1 -1
- package/README.ko.md +90 -62
- package/README.md +109 -62
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/01_PROJECT_DOCS/ARCHITECTURE.md +1 -1
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/02_REQUIREMENTS/M01_Backend_Setup/M01_milestone_meta.md +5 -1
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/02_REQUIREMENTS/M01_Backend_Setup/PRD_AMEND_01_Auth_Flow_Update.md +5 -1
- package/claude-code/{simone/.simone/03_SPRINTS/CLAUDE.MD → aiwf/en/.aiwf/03_SPRINTS/CLAUDE.md} +28 -7
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/03_SPRINTS/S01_M01_Initial_API/S01_sprint_meta.md +8 -1
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/03_SPRINTS/S01_M01_Initial_API/T01_S01_Setup_Project_Structure.md +5 -1
- package/claude-code/aiwf/en/.aiwf/04_GENERAL_TASKS/CLAUDE.md +96 -0
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/04_GENERAL_TASKS/T002_API_Rate_Limiting.md +7 -2
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/04_GENERAL_TASKS/TX001_Refactor_Logging_Module.md +7 -2
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/05_ARCHITECTURAL_DECISIONS/ADR001_Chosen_Database_System.md +7 -1
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/05_ARCHITECTURAL_DECISIONS/ADR002_API_Authentication_Method.md +7 -1
- package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-needs-focus.md +139 -0
- package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-test-alignment.md +155 -0
- package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-13-00-50-solid-progress.md +122 -0
- package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-14-08-30-infrastructure-challenges.md +141 -0
- package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-16-21-48-critical-foundation-issues.md +177 -0
- package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-17-15-08-solid-progress.md +149 -0
- package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/index.json +5 -0
- package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/sync-index.js +78 -0
- package/claude-code/aiwf/en/.aiwf/98_PROMPTS/github_integration.md +130 -0
- package/claude-code/aiwf/en/.aiwf/98_PROMPTS/useful-prompts.md +31 -0
- package/claude-code/aiwf/en/.aiwf/98_PROMPTS/vibe-front-prompts.md +89 -0
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/99_TEMPLATES/task_template.md +1 -0
- package/claude-code/{simone/.simone/CLAUDE.MD → aiwf/en/.aiwf/CLAUDE.md} +13 -4
- package/claude-code/{simone/.simone → aiwf/en/.aiwf}/README.md +6 -6
- package/claude-code/aiwf/en/.claude/CLAUDE_BE.md +276 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_changelog.md +82 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_code_review.md +88 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_commit.md +160 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_general_task.md +147 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_milestone_plan.md +194 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_prd.md +272 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +189 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +121 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_discuss_review.md +29 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_do_task.md +109 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_docs.md +225 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_infinite.md +202 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_initialize.md +134 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_issue_create.md +65 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_language_manager.md +287 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_language_status.md +246 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_mermaid.md +272 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_pr_create.md +76 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_prime.md +9 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_project_review.md +261 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_switch_language.md +160 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_test.md +125 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_testing_review.md +198 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +206 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +460 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +165 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_general.md +362 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_yolo.md +300 -0
- package/claude-code/aiwf/en/.claude/mcp.json +31 -0
- package/claude-code/aiwf/en/.claude/settings.json +102 -0
- package/claude-code/aiwf/ko/.aiwf/00_PROJECT_MANIFEST.md +49 -0
- package/claude-code/aiwf/ko/.aiwf/01_PROJECT_DOCS/ARCHITECTURE.md +55 -0
- package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/CLAUDE.md +78 -0
- package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/M01_milestone_meta.md +42 -0
- package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_AMEND_01_Auth_Flow_Update.md +73 -0
- package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_Backend_Setup.md +98 -0
- package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/SPECS_API_V1.md +232 -0
- package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/CLAUDE.md +83 -0
- package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/S01_M01_Initial_API/S01_sprint_meta.md +49 -0
- package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/S01_M01_Initial_API/T01_S01_Setup_Project_Structure.md +60 -0
- package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/CLAUDE.md +96 -0
- package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/T002_API_Rate_Limiting.md +54 -0
- package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/TX001_Refactor_Logging_Module.md +58 -0
- package/claude-code/aiwf/ko/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR001_Chosen_Database_System.md +119 -0
- package/claude-code/aiwf/ko/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR002_API_Authentication_Method.md +124 -0
- package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-needs-focus.md +139 -0
- package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-test-alignment.md +155 -0
- package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-13-00-50-solid-progress.md +122 -0
- package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-14-08-30-infrastructure-challenges.md +141 -0
- package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-16-21-48-critical-foundation-issues.md +177 -0
- package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-17-15-08-solid-progress.md +149 -0
- package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/index.json +5 -0
- package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/sync-index.js +78 -0
- package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/github_integration.md +130 -0
- package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/useful-prompts.md +31 -0
- package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/vibe-front-prompts.md +89 -0
- package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/adr_template.md +49 -0
- package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/milestone_meta_template.md +25 -0
- package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/project_manifest_template.md +39 -0
- package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/sprint_meta_template.md +23 -0
- package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/task_template.md +36 -0
- package/claude-code/aiwf/ko/.aiwf/CLAUDE.md +76 -0
- package/claude-code/aiwf/ko/.aiwf/README.md +97 -0
- package/claude-code/aiwf/ko/.claude/CLAUDE_BE.md +276 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_changelog.md +82 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_code_review.md +88 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_commit.md +160 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_general_task.md +147 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_milestone_plan.md +194 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_prd.md +280 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +189 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +121 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_discuss_review.md +29 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_do_task.md +109 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_docs.md +225 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_infinite.md +202 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_initialize.md +134 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_issue_create.md +65 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_language_manager.md +287 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_language_status.md +246 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_mermaid.md +272 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_pr_create.md +76 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_prime.md +9 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_project_review.md +261 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_switch_language.md +160 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_test.md +124 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_testing_review.md +198 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +210 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +460 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +165 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_general.md +305 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_yolo.md +300 -0
- package/claude-code/aiwf/ko/.claude/mcp.json +31 -0
- package/claude-code/aiwf/ko/.claude/settings.json +102 -0
- package/{AI-WORKFLOW.md → docs/AI-WORKFLOW.ko.md} +38 -24
- package/docs/AI-WORKFLOW.md +299 -0
- package/docs/COMMANDS_GUIDE.ko.md +727 -0
- package/docs/COMMANDS_GUIDE.md +726 -0
- package/docs/CONTRIBUTING.md +406 -0
- package/docs/DEVELOPMENT_GUIDE.md +727 -0
- package/docs/Enhanced_Installation_Flow_Design.md +498 -0
- package/docs/PRD.ko.md +148 -0
- package/docs/PRD.md +150 -0
- package/docs/moonklabs-metadata-system-prd.md +127 -0
- package/index.js +1493 -122
- package/jest.config.js +4 -0
- package/language-cli.js +279 -0
- package/language-utils.js +330 -0
- package/package.json +23 -10
- package/scripts/validate-commands.cjs +338 -0
- package/scripts/validate-commands.js +254 -0
- package/tests/basic.test.js +62 -0
- package/tests/commands.test.js +127 -0
- package/tests/installer.test.js +129 -0
- package/tests/language-utils.test.js +271 -0
- package/COMMANDS_GUIDE.md +0 -462
- package/PRD.ko.md +0 -96
- package/PRD.md +0 -98
- package/claude-code/simone/.simone/04_GENERAL_TASKS/CLAUDE.MD +0 -51
- package/claude-code/simone/CHANGELOG.md +0 -71
- package/claude-code/simone/LICENSE +0 -21
- package/claude-code/simone/README.md +0 -219
- package/claude-code/simone/SYNC_GUIDE.md +0 -172
- package/claude-code/simone/sync-simone.sh +0 -138
- /package/claude-code/{simone/.simone → aiwf/en/.aiwf}/00_PROJECT_MANIFEST.md +0 -0
- /package/claude-code/{simone/.simone → aiwf/en/.aiwf}/02_REQUIREMENTS/CLAUDE.md +0 -0
- /package/claude-code/{simone/.simone → aiwf/en/.aiwf}/02_REQUIREMENTS/M01_Backend_Setup/PRD_Backend_Setup.md +0 -0
- /package/claude-code/{simone/.simone → aiwf/en/.aiwf}/02_REQUIREMENTS/M01_Backend_Setup/SPECS_API_V1.md +0 -0
- /package/claude-code/{simone/.simone → aiwf/en/.aiwf}/99_TEMPLATES/adr_template.md +0 -0
- /package/claude-code/{simone/.simone → aiwf/en/.aiwf}/99_TEMPLATES/milestone_meta_template.md +0 -0
- /package/claude-code/{simone/.simone → aiwf/en/.aiwf}/99_TEMPLATES/project_manifest_template.md +0 -0
- /package/claude-code/{simone/.simone → aiwf/en/.aiwf}/99_TEMPLATES/sprint_meta_template.md +0 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# AIWF 언어 상태 확인
|
|
2
|
+
|
|
3
|
+
AIWF 프레임워크의 현재 언어 설정 상태를 자세히 확인하는 명령어입니다.
|
|
4
|
+
|
|
5
|
+
## 사용법
|
|
6
|
+
|
|
7
|
+
이 명령어는 다음과 같은 정보를 제공합니다:
|
|
8
|
+
- 현재 감지된 시스템 언어
|
|
9
|
+
- 사용자가 설정한 언어 (있는 경우)
|
|
10
|
+
- 실제로 사용되는 언어
|
|
11
|
+
- 언어 설정 파일 상태
|
|
12
|
+
- 명령어 경로 해결 상태
|
|
13
|
+
|
|
14
|
+
## 실행 과정
|
|
15
|
+
|
|
16
|
+
### 1. 언어 상태 종합 분석
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
node -e "
|
|
20
|
+
import('./language-utils.js').then(async (utils) => {
|
|
21
|
+
const { getLanguageStatus, resolveCommandPath, getLocalizedMessage } = utils;
|
|
22
|
+
|
|
23
|
+
console.log('=== AIWF 언어 시스템 상태 분석 ===\n');
|
|
24
|
+
|
|
25
|
+
// 기본 상태 정보
|
|
26
|
+
const status = await getLanguageStatus();
|
|
27
|
+
|
|
28
|
+
console.log('📍 기본 정보:');
|
|
29
|
+
console.log(' 감지된 언어:', status.detectedLanguage);
|
|
30
|
+
console.log(' 설정된 언어:', status.configuredLanguage || '없음');
|
|
31
|
+
console.log(' 현재 사용 언어:', status.effectiveLanguage);
|
|
32
|
+
console.log(' 자동 감지:', status.autoDetect ? '활성화' : '비활성화');
|
|
33
|
+
console.log(' 폴백 언어:', status.fallbackLanguage);
|
|
34
|
+
console.log(' 지원 언어:', status.supportedLanguages.join(', '));
|
|
35
|
+
console.log(' 설정 파일:', status.configPath);
|
|
36
|
+
|
|
37
|
+
if (status.error) {
|
|
38
|
+
console.log(' ⚠️ 오류:', status.error);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
console.log('\n📂 설정 파일 상태:');
|
|
42
|
+
try {
|
|
43
|
+
const fs = await import('fs/promises');
|
|
44
|
+
const configExists = await fs.access(status.configPath).then(() => true).catch(() => false);
|
|
45
|
+
|
|
46
|
+
if (configExists) {
|
|
47
|
+
const configContent = await fs.readFile(status.configPath, 'utf8');
|
|
48
|
+
const config = JSON.parse(configContent);
|
|
49
|
+
console.log(' ✅ 설정 파일 존재');
|
|
50
|
+
console.log(' 📄 내용:', JSON.stringify(config, null, 4));
|
|
51
|
+
} else {
|
|
52
|
+
console.log(' ❌ 설정 파일 없음');
|
|
53
|
+
}
|
|
54
|
+
} catch (error) {
|
|
55
|
+
console.log(' ⚠️ 설정 파일 읽기 오류:', error.message);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. 환경 변수 분석
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
node -e "
|
|
65
|
+
console.log('\n🌍 시스템 환경 변수:');
|
|
66
|
+
console.log(' LANG:', process.env.LANG || '설정되지 않음');
|
|
67
|
+
console.log(' LC_ALL:', process.env.LC_ALL || '설정되지 않음');
|
|
68
|
+
console.log(' LANGUAGE:', process.env.LANGUAGE || '설정되지 않음');
|
|
69
|
+
console.log(' NODE_ENV:', process.env.NODE_ENV || '설정되지 않음');
|
|
70
|
+
"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 3. 명령어 경로 테스트
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
node -e "
|
|
77
|
+
import('./language-utils.js').then(async ({ resolveCommandPath, detectLanguage }) => {
|
|
78
|
+
console.log('\n🔍 명령어 경로 해결 테스트:');
|
|
79
|
+
|
|
80
|
+
const currentLang = await detectLanguage();
|
|
81
|
+
console.log(' 현재 언어:', currentLang);
|
|
82
|
+
|
|
83
|
+
const testCommands = [
|
|
84
|
+
'aiwf_do_task',
|
|
85
|
+
'aiwf_commit',
|
|
86
|
+
'aiwf_initialize',
|
|
87
|
+
'aiwf_switch_language',
|
|
88
|
+
'aiwf_test',
|
|
89
|
+
'aiwf_code_review',
|
|
90
|
+
'aiwf_project_review'
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
for (const cmd of testCommands) {
|
|
94
|
+
const result = await resolveCommandPath(cmd);
|
|
95
|
+
if (result.path) {
|
|
96
|
+
const status = result.fallback ? '🔄 폴백' : '✅ 직접';
|
|
97
|
+
console.log(' ' + status, cmd + ':', result.language);
|
|
98
|
+
} else {
|
|
99
|
+
console.log(' ❌ 없음', cmd + ':', result.error);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 4. 메시지 시스템 테스트
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
node -e "
|
|
110
|
+
import('./language-utils.js').then(async ({ getLocalizedMessage, detectLanguage }) => {
|
|
111
|
+
console.log('\n💬 다국어 메시지 시스템 테스트:');
|
|
112
|
+
|
|
113
|
+
const currentLang = await detectLanguage();
|
|
114
|
+
console.log(' 현재 언어:', currentLang);
|
|
115
|
+
|
|
116
|
+
const testMessages = [
|
|
117
|
+
'LANGUAGE_NOT_SUPPORTED',
|
|
118
|
+
'CONFIG_LOAD_FAILED',
|
|
119
|
+
'CONFIG_SAVE_FAILED',
|
|
120
|
+
'COMMAND_NOT_FOUND',
|
|
121
|
+
'LANGUAGE_SWITCH_SUCCESS'
|
|
122
|
+
];
|
|
123
|
+
|
|
124
|
+
for (const msgKey of testMessages) {
|
|
125
|
+
const koMsg = getLocalizedMessage(msgKey, 'ko');
|
|
126
|
+
const enMsg = getLocalizedMessage(msgKey, 'en');
|
|
127
|
+
console.log(' ' + msgKey + ':');
|
|
128
|
+
console.log(' 한국어: ' + koMsg);
|
|
129
|
+
console.log(' English: ' + enMsg);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 5. 디렉토리 구조 확인
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
node -e "
|
|
139
|
+
const fs = await import('fs/promises');
|
|
140
|
+
const path = await import('path');
|
|
141
|
+
|
|
142
|
+
console.log('\n📁 AIWF 디렉토리 구조:');
|
|
143
|
+
|
|
144
|
+
const checkDirs = [
|
|
145
|
+
'.aiwf',
|
|
146
|
+
'.aiwf/config',
|
|
147
|
+
'.claude',
|
|
148
|
+
'.claude/commands',
|
|
149
|
+
'.claude/commands/aiwf',
|
|
150
|
+
'claude-code/aiwf/ko/.claude/commands/aiwf',
|
|
151
|
+
'claude-code/aiwf/en/.claude/commands/aiwf'
|
|
152
|
+
];
|
|
153
|
+
|
|
154
|
+
for (const dir of checkDirs) {
|
|
155
|
+
try {
|
|
156
|
+
const exists = await fs.access(dir).then(() => true).catch(() => false);
|
|
157
|
+
if (exists) {
|
|
158
|
+
const files = await fs.readdir(dir);
|
|
159
|
+
console.log(' ✅', dir + ':', files.length + '개 파일');
|
|
160
|
+
} else {
|
|
161
|
+
console.log(' ❌', dir + ':', '디렉토리 없음');
|
|
162
|
+
}
|
|
163
|
+
} catch (error) {
|
|
164
|
+
console.log(' ⚠️', dir + ':', '접근 오류');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## 진단 및 권장사항
|
|
171
|
+
|
|
172
|
+
### 언어 감지 문제 해결
|
|
173
|
+
|
|
174
|
+
명령어가 다음과 같은 권장사항을 제공합니다:
|
|
175
|
+
|
|
176
|
+
1. **설정 파일이 없는 경우**:
|
|
177
|
+
```
|
|
178
|
+
💡 권장사항: 언어를 명시적으로 설정하세요
|
|
179
|
+
/project:aiwf:switch_language ko
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
2. **환경 변수 문제**:
|
|
183
|
+
```
|
|
184
|
+
💡 권장사항: 환경 변수를 확인하세요
|
|
185
|
+
export LANG=ko_KR.UTF-8
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
3. **명령어 파일 누락**:
|
|
189
|
+
```
|
|
190
|
+
💡 권장사항: AIWF를 다시 설치하세요
|
|
191
|
+
npx aiwf --force
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## 출력 예시
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
=== AIWF 언어 시스템 상태 분석 ===
|
|
198
|
+
|
|
199
|
+
📍 기본 정보:
|
|
200
|
+
감지된 언어: ko
|
|
201
|
+
설정된 언어: ko
|
|
202
|
+
현재 사용 언어: ko
|
|
203
|
+
자동 감지: 활성화
|
|
204
|
+
폴백 언어: en
|
|
205
|
+
지원 언어: ko, en
|
|
206
|
+
설정 파일: .aiwf/config/language.json
|
|
207
|
+
|
|
208
|
+
📂 설정 파일 상태:
|
|
209
|
+
✅ 설정 파일 존재
|
|
210
|
+
📄 내용: {
|
|
211
|
+
"language": "ko",
|
|
212
|
+
"auto_detect": true,
|
|
213
|
+
"last_updated": "2025-07-03T06:25:00.000Z",
|
|
214
|
+
"fallback": "en"
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
🌍 시스템 환경 변수:
|
|
218
|
+
LANG: ko_KR.UTF-8
|
|
219
|
+
LC_ALL: 설정되지 않음
|
|
220
|
+
LANGUAGE: 설정되지 않음
|
|
221
|
+
NODE_ENV: 설정되지 않음
|
|
222
|
+
|
|
223
|
+
🔍 명령어 경로 해결 테스트:
|
|
224
|
+
현재 언어: ko
|
|
225
|
+
✅ 직접 aiwf_do_task: ko
|
|
226
|
+
✅ 직접 aiwf_commit: ko
|
|
227
|
+
✅ 직접 aiwf_initialize: ko
|
|
228
|
+
✅ 직접 aiwf_switch_language: ko
|
|
229
|
+
🔄 폴백 aiwf_test: en
|
|
230
|
+
❌ 없음 aiwf_unknown: 명령어 파일을 찾을 수 없습니다
|
|
231
|
+
|
|
232
|
+
💬 다국어 메시지 시스템 테스트:
|
|
233
|
+
현재 언어: ko
|
|
234
|
+
LANGUAGE_NOT_SUPPORTED:
|
|
235
|
+
한국어: 지원되지 않는 언어입니다
|
|
236
|
+
English: Language not supported
|
|
237
|
+
|
|
238
|
+
📁 AIWF 디렉토리 구조:
|
|
239
|
+
✅ .aiwf: 8개 파일
|
|
240
|
+
✅ .aiwf/config: 1개 파일
|
|
241
|
+
✅ .claude: 2개 파일
|
|
242
|
+
✅ .claude/commands: 1개 파일
|
|
243
|
+
❌ .claude/commands/aiwf: 디렉토리 없음
|
|
244
|
+
✅ claude-code/aiwf/ko/.claude/commands/aiwf: 15개 파일
|
|
245
|
+
✅ claude-code/aiwf/en/.claude/commands/aiwf: 14개 파일
|
|
246
|
+
```
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Mermaid 다이어그램 유지 관리
|
|
2
|
+
|
|
3
|
+
Instructions for generating, maintaining and updating the mermaid diagrams in the current project's architecture documentation.
|
|
4
|
+
|
|
5
|
+
## 📋 Overview
|
|
6
|
+
|
|
7
|
+
The architecture documentation should include comprehensive mermaid diagrams that illustrate:
|
|
8
|
+
|
|
9
|
+
- System context and component relationships
|
|
10
|
+
- Module dependencies and data flows (150+ modules)
|
|
11
|
+
- Class hierarchies and interactions
|
|
12
|
+
- Service layer patterns and UI architecture
|
|
13
|
+
|
|
14
|
+
## 📂 Diagram Locations
|
|
15
|
+
|
|
16
|
+
All architecture diagrams are to be stored in `/docs/architecture/`:
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
docs/architecture/
|
|
20
|
+
├── README.md # Main architecture overview
|
|
21
|
+
├── context_diagram.md # System context & data flow
|
|
22
|
+
├── module_overview.md # Module relationships (150+ modules)
|
|
23
|
+
└── class_diagrams/
|
|
24
|
+
├── core_classes.md # Database, DAOs, data processing
|
|
25
|
+
├── data_models.md # Domain models & database schema
|
|
26
|
+
└── service_layer.md # UI architecture & service coordination
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 🛠️ Update Process
|
|
30
|
+
|
|
31
|
+
### Step 1: Identify Affected Diagrams
|
|
32
|
+
|
|
33
|
+
Determine which diagrams need updates based on your changes:
|
|
34
|
+
|
|
35
|
+
| Change Type | Primary Diagram | Secondary Diagrams |
|
|
36
|
+
| ---------------------- | ------------------ | ------------------ |
|
|
37
|
+
| New analytics module | module_overview.md | context_diagram.md |
|
|
38
|
+
| Database schema change | data_models.md | core_classes.md |
|
|
39
|
+
| New UI component | service_layer.md | module_overview.md |
|
|
40
|
+
| New service/manager | service_layer.md | module_overview.md |
|
|
41
|
+
| Architecture refactor | context_diagram.md | All others |
|
|
42
|
+
|
|
43
|
+
### Step 2: Update Mermaid Code
|
|
44
|
+
|
|
45
|
+
Edit the relevant `.md` files to update mermaid diagram code:
|
|
46
|
+
|
|
47
|
+
```mermaid
|
|
48
|
+
# Example: Adding a new class to core_classes.md
|
|
49
|
+
class NewAnalyticsService {
|
|
50
|
+
-CacheManager cache_manager
|
|
51
|
+
-Logger logger
|
|
52
|
+
+calculate_advanced_metrics() Dict
|
|
53
|
+
+generate_insights() List[str]
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# Add relationships
|
|
57
|
+
NewAnalyticsService --> CacheManager : uses
|
|
58
|
+
NewAnalyticsService --> DatabaseManager : queries
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Step 3: Validate Diagrams
|
|
62
|
+
|
|
63
|
+
Test diagram syntax and rendering:
|
|
64
|
+
|
|
65
|
+
1. **Online validation**: Copy mermaid code to [Mermaid Live Editor](https://mermaid.live/)
|
|
66
|
+
2. **Local preview**: Use VS Code Mermaid extensions
|
|
67
|
+
3. **Check syntax**: Ensure proper mermaid formatting
|
|
68
|
+
|
|
69
|
+
### Step 4: Update Cross-References
|
|
70
|
+
|
|
71
|
+
Update any cross-references in documentation:
|
|
72
|
+
|
|
73
|
+
- Update `docs/architecture/README.md` if adding new diagrams
|
|
74
|
+
- Update navigation links between diagram files
|
|
75
|
+
- Update main project README if architecture changes significantly
|
|
76
|
+
|
|
77
|
+
## 📝 Mermaid Syntax Guidelines
|
|
78
|
+
|
|
79
|
+
### Class Diagrams
|
|
80
|
+
|
|
81
|
+
```mermaid
|
|
82
|
+
classDiagram
|
|
83
|
+
class ClassName {
|
|
84
|
+
-private_field: Type
|
|
85
|
+
+public_method() ReturnType
|
|
86
|
+
#protected_method(param: Type) void
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
%% Relationships
|
|
90
|
+
ClassA <|-- ClassB : inherits
|
|
91
|
+
ClassA *-- ClassC : composition
|
|
92
|
+
ClassA --> ClassD : uses
|
|
93
|
+
ClassA ..> ClassE : depends on
|
|
94
|
+
|
|
95
|
+
%% Notes
|
|
96
|
+
note for ClassName "Important implementation details"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Flowcharts
|
|
100
|
+
|
|
101
|
+
```mermaid
|
|
102
|
+
flowchart TD
|
|
103
|
+
A[Start] --> B{Decision}
|
|
104
|
+
B -->|Yes| C[Action 1]
|
|
105
|
+
B -->|No| D[Action 2]
|
|
106
|
+
C --> E[End]
|
|
107
|
+
D --> E
|
|
108
|
+
|
|
109
|
+
%% Styling
|
|
110
|
+
style A fill:#e1f5fe
|
|
111
|
+
style E fill:#e8f5e8
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Sequence Diagrams
|
|
115
|
+
|
|
116
|
+
```mermaid
|
|
117
|
+
sequenceDiagram
|
|
118
|
+
participant A as Actor
|
|
119
|
+
participant B as System
|
|
120
|
+
|
|
121
|
+
A->>B: Request
|
|
122
|
+
B->>B: Process
|
|
123
|
+
B-->>A: Response
|
|
124
|
+
|
|
125
|
+
Note over A,B: Important interaction
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## 🎨 Styling Guidelines
|
|
129
|
+
|
|
130
|
+
### Color Scheme
|
|
131
|
+
|
|
132
|
+
Use consistent colors across all diagrams:
|
|
133
|
+
|
|
134
|
+
```mermaid
|
|
135
|
+
%% Standard color palette
|
|
136
|
+
style MainComponents fill:#4ecdc4,color:#fff
|
|
137
|
+
style DataLayer fill:#f3e5f5
|
|
138
|
+
style CacheLayer fill:#fff8e1
|
|
139
|
+
style UILayer fill:#e8f5e8
|
|
140
|
+
style ExternalSystems fill:#e1f5fe
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Component Categories
|
|
144
|
+
|
|
145
|
+
- **🏗️ Core Infrastructure**: `#4ecdc4` (teal)
|
|
146
|
+
- **📊 Analytics/Data**: `#f3e5f5` (light purple)
|
|
147
|
+
- **⚡ Caching/Performance**: `#fff8e1` (light yellow)
|
|
148
|
+
- **🎨 UI Components**: `#e8f5e8` (light green)
|
|
149
|
+
- **🔗 External Systems**: `#e1f5fe` (light blue)
|
|
150
|
+
|
|
151
|
+
## 📋 Common Update Scenarios
|
|
152
|
+
|
|
153
|
+
### Adding a New Analytics Module
|
|
154
|
+
|
|
155
|
+
1. **Update module_overview.md**: Add to Analytics Engine section
|
|
156
|
+
2. **Update class diagrams**: Add detailed class structure if significant
|
|
157
|
+
3. **Update context_diagram.md**: Add if it's a major new capability
|
|
158
|
+
|
|
159
|
+
```mermaid
|
|
160
|
+
# Example: New trend analysis module
|
|
161
|
+
TREND_ANALYZER[trend_analyzer.py<br/>📈 Advanced Trends]
|
|
162
|
+
TREND_ANALYZER --> DAILY_CALC
|
|
163
|
+
TREND_ANALYZER --> CACHE
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### New UI Component or Widget
|
|
167
|
+
|
|
168
|
+
1. **Update service_layer.md**: Add class definition and relationships
|
|
169
|
+
2. **Update module_overview.md**: Add to UI Layer section
|
|
170
|
+
3. **Consider component factory updates**
|
|
171
|
+
|
|
172
|
+
```mermaid
|
|
173
|
+
# Example: New dashboard widget
|
|
174
|
+
class NewDashboardWidget {
|
|
175
|
+
-MetricsCalculator calculator
|
|
176
|
+
-ComponentFactory factory
|
|
177
|
+
+setup_ui() void
|
|
178
|
+
+refresh_data() void
|
|
179
|
+
}
|
|
180
|
+
QWidget <|-- NewDashboardWidget : inherits
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Database Schema Changes
|
|
184
|
+
|
|
185
|
+
1. **Update data_models.md**: Modify ER diagram and class definitions
|
|
186
|
+
2. **Update core_classes.md**: Update DAO methods if needed
|
|
187
|
+
3. **Document migration requirements**
|
|
188
|
+
|
|
189
|
+
### New Service or Manager Class
|
|
190
|
+
|
|
191
|
+
1. **Update service_layer.md**: Add to appropriate service category
|
|
192
|
+
2. **Update relationships**: Show dependencies and usage patterns
|
|
193
|
+
3. **Update module_overview.md**: Add service layer connections
|
|
194
|
+
|
|
195
|
+
## 🔍 Validation Checklist
|
|
196
|
+
|
|
197
|
+
Before committing diagram updates:
|
|
198
|
+
|
|
199
|
+
- [ ] **Syntax Valid**: Diagram renders without errors
|
|
200
|
+
- [ ] **Consistent Styling**: Uses standard color scheme
|
|
201
|
+
- [ ] **Accurate Relationships**: Reflects actual code relationships
|
|
202
|
+
- [ ] **Clear Labels**: All components clearly labeled
|
|
203
|
+
- [ ] **Cross-References Updated**: Navigation links work
|
|
204
|
+
- [ ] **README Updated**: Main architecture README reflects changes
|
|
205
|
+
|
|
206
|
+
## 🤖 Automation & Maintenance Scripts
|
|
207
|
+
|
|
208
|
+
### Useful Commands for Analysis
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Find all Python classes in the codebase
|
|
212
|
+
find src/ -name "*.py" -exec grep -l "^class " {} \; | sort
|
|
213
|
+
|
|
214
|
+
# Check module imports to understand dependencies
|
|
215
|
+
grep -r "^from src\." src/ | cut -d: -f2 | sort | uniq
|
|
216
|
+
|
|
217
|
+
# Find new files since last commit
|
|
218
|
+
git diff --name-only HEAD~1 | grep "\.py$"
|
|
219
|
+
|
|
220
|
+
# Count modules by package
|
|
221
|
+
find src/ -name "*.py" | cut -d/ -f2 | sort | uniq -c
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Maintenance Tasks
|
|
225
|
+
|
|
226
|
+
1. **Quarterly Review**: Compare diagrams against actual codebase structure
|
|
227
|
+
2. **Release Preparation**: Ensure all diagrams reflect release state
|
|
228
|
+
3. **Refactoring Support**: Update diagrams during major refactors
|
|
229
|
+
4. **New Developer Onboarding**: Keep diagrams current for documentation
|
|
230
|
+
|
|
231
|
+
## 🚨 Best Practices
|
|
232
|
+
|
|
233
|
+
### Do's
|
|
234
|
+
|
|
235
|
+
- ✅ **Keep diagrams focused**: One primary concept per diagram
|
|
236
|
+
- ✅ **Use consistent naming**: Match actual class/module names
|
|
237
|
+
- ✅ **Add explanatory notes**: Include important design decisions
|
|
238
|
+
- ✅ **Regular updates**: Keep diagrams current with code changes
|
|
239
|
+
- ✅ **Validate syntax**: Always test before committing
|
|
240
|
+
|
|
241
|
+
### Don'ts
|
|
242
|
+
|
|
243
|
+
- ❌ **Avoid over-complexity**: Don't include every minor detail
|
|
244
|
+
- ❌ **Don't duplicate**: Each relationship should appear in most appropriate diagram
|
|
245
|
+
- ❌ **Avoid generic names**: Use specific, meaningful component names
|
|
246
|
+
- ❌ **Don't ignore styling**: Consistent colors improve readability
|
|
247
|
+
- ❌ **Don't skip validation**: Always check diagram rendering
|
|
248
|
+
|
|
249
|
+
## 📞 Support & Resources
|
|
250
|
+
|
|
251
|
+
### Documentation Resources
|
|
252
|
+
|
|
253
|
+
- [Mermaid Documentation](https://mermaid-js.github.io/mermaid/)
|
|
254
|
+
- [Mermaid Live Editor](https://mermaid.live/) - For testing diagrams
|
|
255
|
+
- [VS Code Mermaid Extension](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid)
|
|
256
|
+
|
|
257
|
+
### Quick Reference
|
|
258
|
+
|
|
259
|
+
- **Architecture overview**: `/docs/architecture/README.md`
|
|
260
|
+
- **System context**: `/docs/architecture/context_diagram.md`
|
|
261
|
+
- **Module relationships**: `/docs/architecture/module_overview.md`
|
|
262
|
+
- **Class details**: `/docs/architecture/class_diagrams/`
|
|
263
|
+
|
|
264
|
+
### Getting Help
|
|
265
|
+
|
|
266
|
+
1. **Reference existing patterns**: Look at similar components in current diagrams
|
|
267
|
+
2. **Check diagram history**: Use git to see how similar changes were handled
|
|
268
|
+
3. **Ask in code review**: Get feedback on architectural accuracy
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
_Keep architecture diagrams accurate, useful, and maintainable as the project evolves. Focus on clarity and consistency to support both current development and future maintenance._
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# 태스크 완료 후 풀 리퀘스트 생성
|
|
2
|
+
|
|
3
|
+
태스크 완료 후 GitHub 풀 리퀘스트를 생성하고 관련 이슈와 연결합니다.
|
|
4
|
+
|
|
5
|
+
## 정확히 다음 6개 항목으로 TODO 생성
|
|
6
|
+
|
|
7
|
+
1. 현재 브랜치 및 변경사항 확인
|
|
8
|
+
2. PR 본문 템플릿 생성
|
|
9
|
+
3. GitHub PR 생성
|
|
10
|
+
4. 이슈와 PR 연결
|
|
11
|
+
5. 리뷰어 배정
|
|
12
|
+
6. 결과 보고
|
|
13
|
+
|
|
14
|
+
## 1 · 브랜치 및 변경사항 확인
|
|
15
|
+
|
|
16
|
+
병렬로 실행:
|
|
17
|
+
- `git branch --show-current`: 현재 브랜치 확인
|
|
18
|
+
- `git log main..HEAD --oneline`: 커밋 히스토리
|
|
19
|
+
- `git diff main...HEAD --stat`: 변경된 파일 통계
|
|
20
|
+
|
|
21
|
+
Extract GitHub issue number from task file
|
|
22
|
+
|
|
23
|
+
## 2 · Generate PR Body Template
|
|
24
|
+
|
|
25
|
+
```markdown
|
|
26
|
+
## 🎯 Overview
|
|
27
|
+
Completed implementation of {task_title}.
|
|
28
|
+
|
|
29
|
+
## 📝 Changes
|
|
30
|
+
{commit_list}
|
|
31
|
+
|
|
32
|
+
## 📊 Changed Files
|
|
33
|
+
{file_statistics}
|
|
34
|
+
|
|
35
|
+
## ✅ Checklist
|
|
36
|
+
- [ ] Tests pass
|
|
37
|
+
- [ ] Code review completed
|
|
38
|
+
- [ ] Documentation updated
|
|
39
|
+
|
|
40
|
+
## 🔗 Related Information
|
|
41
|
+
- Closes #{issue_number}
|
|
42
|
+
- Task: {task_id}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 3 · Create GitHub PR
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
gh pr create \
|
|
49
|
+
--title "{task_id}: {task_title}" \
|
|
50
|
+
--body "$(cat <<'EOF'
|
|
51
|
+
{pr_body}
|
|
52
|
+
EOF
|
|
53
|
+
)" \
|
|
54
|
+
--base main \
|
|
55
|
+
--head {branch_name}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 4 · Link Issue with PR
|
|
59
|
+
|
|
60
|
+
Automatically included in PR body:
|
|
61
|
+
- `Closes #{issue_number}`: Auto-close issue
|
|
62
|
+
- `Relates to #{issue_number}`: Show relationship
|
|
63
|
+
|
|
64
|
+
## 5 · Assign Reviewers
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
gh pr edit {pr_number} \
|
|
68
|
+
--add-reviewer {reviewer_username}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 6 · Report Results
|
|
72
|
+
|
|
73
|
+
✅ **PR Created**: #{pr_number}
|
|
74
|
+
🔗 **Link**: {pr_url}
|
|
75
|
+
🎯 **Linked Issue**: #{issue_number}
|
|
76
|
+
👥 **Reviewers**: {reviewers}
|