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
|
@@ -11,9 +11,11 @@ last_updated: 2023-07-15
|
|
|
11
11
|
# Sprint: Initial API Development (S01) (EXAMPLE)
|
|
12
12
|
|
|
13
13
|
## Sprint Goal
|
|
14
|
+
|
|
14
15
|
Implement the foundational API structure including user authentication, basic project endpoints, and the initial database models.
|
|
15
16
|
|
|
16
17
|
## Scope & Key Deliverables
|
|
18
|
+
|
|
17
19
|
1. Set up the project structure with Express.js and MongoDB
|
|
18
20
|
2. Implement user registration and authentication endpoints
|
|
19
21
|
3. Create basic project and task models
|
|
@@ -21,6 +23,7 @@ Implement the foundational API structure including user authentication, basic pr
|
|
|
21
23
|
5. Set up automated testing infrastructure
|
|
22
24
|
|
|
23
25
|
## Sprint Backlog
|
|
26
|
+
|
|
24
27
|
- [T01_S01_Setup_Project_Structure](./T01_S01_Setup_Project_Structure.md)
|
|
25
28
|
- [T02_S01_Define_User_Model](./T02_S01_Define_User_Model.md)
|
|
26
29
|
- [T03_S01_Implement_Auth_Endpoints](./T03_S01_Implement_Auth_Endpoints.md)
|
|
@@ -28,15 +31,19 @@ Implement the foundational API structure including user authentication, basic pr
|
|
|
28
31
|
- [T05_S01_Implement_Project_Endpoints](./T05_S01_Implement_Project_Endpoints.md)
|
|
29
32
|
|
|
30
33
|
## Definition of Done (for the Sprint)
|
|
34
|
+
|
|
31
35
|
The sprint will be considered complete when:
|
|
36
|
+
|
|
32
37
|
- All sprint tasks are completed and meet their acceptance criteria
|
|
33
38
|
- All implemented endpoints pass their test cases
|
|
34
39
|
- API documentation is updated to reflect implemented endpoints
|
|
35
40
|
- Code has been reviewed and merged to the development branch
|
|
36
41
|
|
|
37
42
|
## Notes / Context
|
|
38
|
-
|
|
43
|
+
|
|
44
|
+
This is an example sprint document to demonstrate how sprints might be structured in a project using the AIWF framework. This simulates what a typical initial API development sprint might look like.
|
|
39
45
|
|
|
40
46
|
## Related Documents
|
|
47
|
+
|
|
41
48
|
- [Milestone M01: Backend Setup](../../02_REQUIREMENTS/M01_Backend_Setup/M01_milestone_meta.md)
|
|
42
49
|
- [API Specifications V1](../../02_REQUIREMENTS/M01_Backend_Setup/SPECS_API_V1.md)
|
|
@@ -9,11 +9,13 @@ last_updated: 2023-07-15
|
|
|
9
9
|
# Task: Setup Project Structure (EXAMPLE)
|
|
10
10
|
|
|
11
11
|
## Description
|
|
12
|
+
|
|
12
13
|
Set up the initial project structure for the backend API service, including directory organization, dependency installation, and basic configuration.
|
|
13
14
|
|
|
14
|
-
**Note: This is an example task to demonstrate the structure of a task in the
|
|
15
|
+
**Note: This is an example task to demonstrate the structure of a task in the AIWF framework.**
|
|
15
16
|
|
|
16
17
|
## Goal / Objectives
|
|
18
|
+
|
|
17
19
|
- Create a well-organized, scalable project structure
|
|
18
20
|
- Set up the Express.js application with middleware
|
|
19
21
|
- Configure MongoDB connection
|
|
@@ -22,6 +24,7 @@ Set up the initial project structure for the backend API service, including dire
|
|
|
22
24
|
- Initialize logging system
|
|
23
25
|
|
|
24
26
|
## Acceptance Criteria
|
|
27
|
+
|
|
25
28
|
- [ ] Project structure follows MVC pattern with clear separation of concerns
|
|
26
29
|
- [ ] Express application is set up with necessary middleware (CORS, body-parser, etc.)
|
|
27
30
|
- [ ] MongoDB connection is configured with error handling
|
|
@@ -32,6 +35,7 @@ Set up the initial project structure for the backend API service, including dire
|
|
|
32
35
|
- [ ] Initial tests pass
|
|
33
36
|
|
|
34
37
|
## Subtasks
|
|
38
|
+
|
|
35
39
|
- [ ] Initialize Node.js project with package.json
|
|
36
40
|
- [ ] Install core dependencies (express, mongoose, dotenv, etc.)
|
|
37
41
|
- [ ] Create directory structure for routes, controllers, models, middleware
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# General Tasks Instructions
|
|
2
|
+
|
|
3
|
+
## General Task Structure
|
|
4
|
+
|
|
5
|
+
General tasks are standalone work items not tied to sprints:
|
|
6
|
+
|
|
7
|
+
- Files follow pattern: `T<NNN>_<Description>.md`
|
|
8
|
+
- Completed tasks: `TX<NNN>_<Description>.md`
|
|
9
|
+
|
|
10
|
+
Always use the template at `.AIWF/99_TEMPLATES/task_template.md` when creating new general tasks.
|
|
11
|
+
|
|
12
|
+
## Task Formatting
|
|
13
|
+
|
|
14
|
+
General tasks use standardized YAML frontmatter and sections:
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
---
|
|
18
|
+
task_id: T001
|
|
19
|
+
status: open # open | in_progress | pending_review | done | failed | blocked
|
|
20
|
+
complexity: Medium # Low | Medium | High
|
|
21
|
+
last_updated: YYYY-MM-DD HH:MM
|
|
22
|
+
github_issue: #123 # Optional: Link to GitHub issue
|
|
23
|
+
---
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The full task structure with all sections is defined in the task template. Always maintain this structure.
|
|
27
|
+
|
|
28
|
+
## Working with General Tasks
|
|
29
|
+
|
|
30
|
+
When handling general tasks:
|
|
31
|
+
|
|
32
|
+
1. Check if task has a linked GitHub issue (look for `github_issue` in frontmatter)
|
|
33
|
+
2. Update the status field as you progress
|
|
34
|
+
3. If GitHub issue is linked, update it when starting:
|
|
35
|
+
```bash
|
|
36
|
+
gh issue comment {issue_number} --body "🚀 Task work has started."
|
|
37
|
+
gh issue edit {issue_number} --add-label "in-progress"
|
|
38
|
+
```
|
|
39
|
+
4. Record timestamps in this format (YYYY-MM-DD HH:MM)
|
|
40
|
+
5. Log all significant actions in the Output Log section:
|
|
41
|
+
|
|
42
|
+
```plaintext
|
|
43
|
+
[YYYY-MM-DD HH:MM] Started task
|
|
44
|
+
[YYYY-MM-DD HH:MM] Modified files: file1.js, file2.js
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
6. Mark subtasks as they're completed: `- [x] Completed subtask`
|
|
48
|
+
7. Use the Acceptance Criteria as your primary completion checklist
|
|
49
|
+
8. Ensure all sections from the task template are preserved
|
|
50
|
+
|
|
51
|
+
## Task Completion Process
|
|
52
|
+
|
|
53
|
+
When a task is complete:
|
|
54
|
+
|
|
55
|
+
1. Update status to "done"
|
|
56
|
+
2. Update all Acceptance Criteria with [x]
|
|
57
|
+
3. Add final Output Log entry
|
|
58
|
+
4. If GitHub issue is linked, update it:
|
|
59
|
+
```bash
|
|
60
|
+
gh issue comment {issue_number} --body "✅ Task has been completed."
|
|
61
|
+
gh issue edit {issue_number} --remove-label "in-progress" --add-label "completed"
|
|
62
|
+
```
|
|
63
|
+
5. Rename file from T... to TX... (e.g., `TX001_Task_Name.md`)
|
|
64
|
+
|
|
65
|
+
## GitHub Integration
|
|
66
|
+
|
|
67
|
+
### Creating Issues from Tasks
|
|
68
|
+
|
|
69
|
+
To create a GitHub issue from a general task:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
/project:aiwf:issue_create {task_id}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Linking Existing Issues
|
|
76
|
+
|
|
77
|
+
Add to task frontmatter:
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
github_issue: #123
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Commit Integration
|
|
84
|
+
|
|
85
|
+
When committing changes for a task with a linked issue:
|
|
86
|
+
|
|
87
|
+
- Use `fixes #123` to auto-close the issue
|
|
88
|
+
- Use `relates to #123` to reference without closing
|
|
89
|
+
|
|
90
|
+
### Pull Request Creation
|
|
91
|
+
|
|
92
|
+
After task completion, create a PR:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
/project:aiwf:pr_create {task_id}
|
|
96
|
+
```
|
package/claude-code/{simone/.simone → aiwf/en/.aiwf}/04_GENERAL_TASKS/T002_API_Rate_Limiting.md
RENAMED
|
@@ -8,11 +8,13 @@ last_updated: 2023-07-25T09:15:00Z
|
|
|
8
8
|
# Task: API Rate Limiting (EXAMPLE)
|
|
9
9
|
|
|
10
10
|
## Description
|
|
11
|
+
|
|
11
12
|
Implement rate limiting for the API to prevent abuse and ensure fair usage across all clients. This task involves adding middleware to track and limit requests based on client IP or API key.
|
|
12
13
|
|
|
13
|
-
**Note: This is an example general task to demonstrate how non-sprint-specific tasks might be structured in the
|
|
14
|
+
**Note: This is an example general task to demonstrate how non-sprint-specific tasks might be structured in the AIWF framework.**
|
|
14
15
|
|
|
15
16
|
## Goal / Objectives
|
|
17
|
+
|
|
16
18
|
- Protect API endpoints from abuse and excessive requests
|
|
17
19
|
- Implement configurable rate limits based on client authentication
|
|
18
20
|
- Track usage statistics for billing and monitoring
|
|
@@ -20,6 +22,7 @@ Implement rate limiting for the API to prevent abuse and ensure fair usage acros
|
|
|
20
22
|
- Ensure minimal performance impact on normal API operation
|
|
21
23
|
|
|
22
24
|
## Acceptance Criteria
|
|
25
|
+
|
|
23
26
|
- [ ] Rate limiting is applied to all public API endpoints
|
|
24
27
|
- [ ] Different rate limits are configurable based on client tier/authentication
|
|
25
28
|
- [ ] Response headers include rate limit information (limit, remaining, reset)
|
|
@@ -29,6 +32,7 @@ Implement rate limiting for the API to prevent abuse and ensure fair usage acros
|
|
|
29
32
|
- [ ] Usage statistics are collected for monitoring and analysis
|
|
30
33
|
|
|
31
34
|
## Subtasks
|
|
35
|
+
|
|
32
36
|
- [x] Research rate limiting strategies and best practices
|
|
33
37
|
- [x] Evaluate libraries (express-rate-limit, rate-limiter-flexible, etc.)
|
|
34
38
|
- [x] Design rate limit tiers for different client types
|
|
@@ -40,7 +44,8 @@ Implement rate limiting for the API to prevent abuse and ensure fair usage acros
|
|
|
40
44
|
- [ ] Document rate limiting behavior for API consumers
|
|
41
45
|
|
|
42
46
|
## Output Log
|
|
43
|
-
|
|
47
|
+
|
|
48
|
+
_(This section is populated as work progresses on the task)_
|
|
44
49
|
|
|
45
50
|
[2023-07-23 10:30:00] Started task
|
|
46
51
|
[2023-07-23 13:45:22] Completed research on rate limiting strategies
|
|
@@ -8,11 +8,13 @@ last_updated: 2023-07-22T16:45:00Z
|
|
|
8
8
|
# Task: Refactor Logging Module (EXAMPLE)
|
|
9
9
|
|
|
10
10
|
## Description
|
|
11
|
+
|
|
11
12
|
The current logging implementation is basic and needs to be enhanced to provide better visibility and monitoring capabilities. This task involves refactoring the logging module to add structured logging, log rotation, and improved error tracking.
|
|
12
13
|
|
|
13
|
-
**Note: This is an example general task to demonstrate how non-sprint-specific tasks might be structured in the
|
|
14
|
+
**Note: This is an example general task to demonstrate how non-sprint-specific tasks might be structured in the AIWF framework.**
|
|
14
15
|
|
|
15
16
|
## Goal / Objectives
|
|
17
|
+
|
|
16
18
|
- Implement structured JSON logging for better parsing by log analysis tools
|
|
17
19
|
- Add log rotation to prevent log files from growing too large
|
|
18
20
|
- Enable different log levels based on environment
|
|
@@ -20,6 +22,7 @@ The current logging implementation is basic and needs to be enhanced to provide
|
|
|
20
22
|
- Improve error logging with stack traces and contextual information
|
|
21
23
|
|
|
22
24
|
## Acceptance Criteria
|
|
25
|
+
|
|
23
26
|
- [x] Logs are output in structured JSON format
|
|
24
27
|
- [x] Log files are rotated based on size and/or date
|
|
25
28
|
- [x] Different log levels are used appropriately (debug, info, warn, error)
|
|
@@ -29,6 +32,7 @@ The current logging implementation is basic and needs to be enhanced to provide
|
|
|
29
32
|
- [x] Documentation is updated to reflect new logging capabilities
|
|
30
33
|
|
|
31
34
|
## Subtasks
|
|
35
|
+
|
|
32
36
|
- [x] Evaluate and select appropriate logging libraries and tools
|
|
33
37
|
- [x] Design the structured log format with required fields
|
|
34
38
|
- [x] Implement log rotation configuration
|
|
@@ -39,7 +43,8 @@ The current logging implementation is basic and needs to be enhanced to provide
|
|
|
39
43
|
- [x] Document the new logging system
|
|
40
44
|
|
|
41
45
|
## Output Log
|
|
42
|
-
|
|
46
|
+
|
|
47
|
+
_(This section is populated as work progresses on the task)_
|
|
43
48
|
|
|
44
49
|
[2023-07-15 10:30:00] Started task
|
|
45
50
|
[2023-07-15 11:15:22] Researched logging libraries: winston, pino, bunyan
|
|
@@ -12,9 +12,10 @@ Accepted
|
|
|
12
12
|
|
|
13
13
|
The backend system needs a database to store user accounts, projects, tasks, and other application data. The choice of database system will impact performance, scalability, development speed, and maintenance requirements.
|
|
14
14
|
|
|
15
|
-
**Note: This is an example Architecture Decision Record to demonstrate how ADRs might be structured in the
|
|
15
|
+
**Note: This is an example Architecture Decision Record to demonstrate how ADRs might be structured in the AIWF framework.**
|
|
16
16
|
|
|
17
17
|
We evaluated several options including:
|
|
18
|
+
|
|
18
19
|
- Relational databases (PostgreSQL, MySQL)
|
|
19
20
|
- Document databases (MongoDB, CouchDB)
|
|
20
21
|
- Key-value stores (Redis, DynamoDB)
|
|
@@ -40,6 +41,7 @@ The decision was based on the following factors:
|
|
|
40
41
|
6. **Ecosystem**: The robust Node.js ecosystem around MongoDB with libraries like Mongoose provides tools for validation, middleware, and other features that align with our development approach.
|
|
41
42
|
|
|
42
43
|
Some concerns were raised about:
|
|
44
|
+
|
|
43
45
|
- Lack of ACID transactions across multiple documents (though MongoDB does support multi-document transactions now)
|
|
44
46
|
- Potential for data duplication in document model
|
|
45
47
|
|
|
@@ -50,11 +52,13 @@ We determined these concerns were manageable for our use case and outweighed by
|
|
|
50
52
|
### PostgreSQL
|
|
51
53
|
|
|
52
54
|
Pros:
|
|
55
|
+
|
|
53
56
|
- Mature, proven technology with strong ACID compliance
|
|
54
57
|
- Excellent for complex relational data and joins
|
|
55
58
|
- Support for JSON data types provides some schema flexibility
|
|
56
59
|
|
|
57
60
|
Cons:
|
|
61
|
+
|
|
58
62
|
- Schema migrations could slow development velocity
|
|
59
63
|
- Object-relational mapping adds complexity
|
|
60
64
|
- Less natural fit for our document-oriented data model
|
|
@@ -62,11 +66,13 @@ Cons:
|
|
|
62
66
|
### DynamoDB
|
|
63
67
|
|
|
64
68
|
Pros:
|
|
69
|
+
|
|
65
70
|
- Fully managed service with automatic scaling
|
|
66
71
|
- Predictable performance with guaranteed low-latency
|
|
67
72
|
- Strong consistency options
|
|
68
73
|
|
|
69
74
|
Cons:
|
|
75
|
+
|
|
70
76
|
- Less flexible query capabilities
|
|
71
77
|
- AWS lock-in
|
|
72
78
|
- Potentially higher cost for our access patterns
|
|
@@ -12,9 +12,10 @@ Accepted
|
|
|
12
12
|
|
|
13
13
|
Our API requires a secure authentication mechanism to identify users, protect resources, and control access to endpoints. We needed to select an approach that balances security, usability, and compatibility with our chosen tech stack.
|
|
14
14
|
|
|
15
|
-
**Note: This is an example Architecture Decision Record to demonstrate how ADRs might be structured in the
|
|
15
|
+
**Note: This is an example Architecture Decision Record to demonstrate how ADRs might be structured in the AIWF framework.**
|
|
16
16
|
|
|
17
17
|
Several authentication strategies were considered:
|
|
18
|
+
|
|
18
19
|
- Session-based authentication with cookies
|
|
19
20
|
- JWT (JSON Web Tokens)
|
|
20
21
|
- OAuth 2.0
|
|
@@ -44,6 +45,7 @@ Our decision was based on the following factors:
|
|
|
44
45
|
7. **Industry standard**: JWT is widely adopted, well-documented, and has strong library support in our tech stack.
|
|
45
46
|
|
|
46
47
|
We acknowledged some concerns with JWT:
|
|
48
|
+
|
|
47
49
|
- Token revocation requires additional mechanisms (blacklisting or short expiration with refresh tokens)
|
|
48
50
|
- Token size can be larger than simple session IDs
|
|
49
51
|
- Token payload is encoded, not encrypted (sensitive data shouldn't be included)
|
|
@@ -53,11 +55,13 @@ We acknowledged some concerns with JWT:
|
|
|
53
55
|
### Session-based Authentication
|
|
54
56
|
|
|
55
57
|
Pros:
|
|
58
|
+
|
|
56
59
|
- Well-established, traditional approach
|
|
57
60
|
- Easy to implement and understand
|
|
58
61
|
- Simple to revoke (delete the session)
|
|
59
62
|
|
|
60
63
|
Cons:
|
|
64
|
+
|
|
61
65
|
- Requires session storage on the server
|
|
62
66
|
- Can be problematic in distributed/scaled environments
|
|
63
67
|
- Typically relies on cookies which have cross-domain limitations
|
|
@@ -65,11 +69,13 @@ Cons:
|
|
|
65
69
|
### API Keys
|
|
66
70
|
|
|
67
71
|
Pros:
|
|
72
|
+
|
|
68
73
|
- Very simple to implement
|
|
69
74
|
- Good for service-to-service communication
|
|
70
75
|
- No expiration management needed
|
|
71
76
|
|
|
72
77
|
Cons:
|
|
78
|
+
|
|
73
79
|
- Not suitable for user authentication
|
|
74
80
|
- Limited granularity for permissions
|
|
75
81
|
- No built-in standard for claims or payload
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Project Review - 2025-06-12 12:00
|
|
2
|
+
|
|
3
|
+
## 🎭 Review Sentiment
|
|
4
|
+
|
|
5
|
+
🚨⚠️🔧
|
|
6
|
+
|
|
7
|
+
## Executive Summary
|
|
8
|
+
|
|
9
|
+
- **Result:** NEEDS_WORK
|
|
10
|
+
- **Scope:** Full project review including test infrastructure, documentation, architecture, and code quality
|
|
11
|
+
- **Overall Judgment:** needs-focus
|
|
12
|
+
|
|
13
|
+
## Test Infrastructure Assessment
|
|
14
|
+
|
|
15
|
+
- **Test Suite Status**: FAILING (Backend: 25/26 failed suites, Frontend: 6/28 failed tests)
|
|
16
|
+
- **Test Pass Rate**: Backend: 98.3% (400 passed, 7 failed), Frontend: 78.6% (22 passed, 6 failed)
|
|
17
|
+
- **Test Health Score**: 3/10
|
|
18
|
+
- **Infrastructure Health**: BROKEN
|
|
19
|
+
- Import errors: 3 (missing test config files, path resolution issues)
|
|
20
|
+
- Configuration errors: 2 (dependency injection failures)
|
|
21
|
+
- Fixture issues: 1 (floating-point precision)
|
|
22
|
+
- **Test Categories**:
|
|
23
|
+
- Unit Tests: 400/407 passing (mostly meaningless smoke tests)
|
|
24
|
+
- Integration Tests: 0/7 passing (external dependency failures)
|
|
25
|
+
- API Tests: 0 functional tests (only smoke tests)
|
|
26
|
+
- **Critical Issues**:
|
|
27
|
+
- Missing `test-connect-info.json` configuration file
|
|
28
|
+
- API signature changes not reflected in tests (`dashboardService.create()` parameter mismatch)
|
|
29
|
+
- External database dependencies causing unstable tests
|
|
30
|
+
- Repository mocking setup missing across all services
|
|
31
|
+
- **Sprint Coverage**: <5% of actual functionality has meaningful tests
|
|
32
|
+
- **Blocking Status**: BLOCKED - Critical test infrastructure failures prevent reliable development
|
|
33
|
+
- **Recommendations**:
|
|
34
|
+
- Immediate: Fix missing test configuration files and dependency injection
|
|
35
|
+
- Short-term: Replace smoke tests with behavior-focused unit tests
|
|
36
|
+
- Long-term: Establish comprehensive test strategy with coverage targets
|
|
37
|
+
|
|
38
|
+
## Development Context
|
|
39
|
+
|
|
40
|
+
- **Current Milestone:** MVP 안정화 및 핵심 기능 강화 (active)
|
|
41
|
+
- **Current Sprint:** No active sprint structure in place
|
|
42
|
+
- **Expected Completeness:** Milestone requirements document exists but lacks sprint planning
|
|
43
|
+
|
|
44
|
+
## Progress Assessment
|
|
45
|
+
|
|
46
|
+
- **Milestone Progress:** 40% (documentation and architecture in place, but stability/performance work needed)
|
|
47
|
+
- **Sprint Status:** No formal sprint structure implemented
|
|
48
|
+
- **Deliverable Tracking:** Milestone requirements defined but not broken into actionable sprints
|
|
49
|
+
|
|
50
|
+
## Architecture & Technical Assessment
|
|
51
|
+
|
|
52
|
+
- **Architecture Score:** 7/10 - Well-structured modular design with clear separation of concerns
|
|
53
|
+
- **Technical Debt Level:** MEDIUM - Several architectural decisions need refinement but foundation is solid
|
|
54
|
+
- **Code Quality:** Mixed - Good patterns in core modules, but inconsistencies in error handling and type safety
|
|
55
|
+
|
|
56
|
+
Specific examples:
|
|
57
|
+
- ✅ Excellent: Modular NestJS structure with proper dependency injection
|
|
58
|
+
- ✅ Good: Multi-database support with Knex abstraction layer
|
|
59
|
+
- ⚠️ Needs work: Connection Service handling too many responsibilities
|
|
60
|
+
- ❌ Poor: TypeScript type safety with excessive `any` usage in API services
|
|
61
|
+
|
|
62
|
+
## File Organization Audit
|
|
63
|
+
|
|
64
|
+
- **Workflow Compliance:** NEEDS_ATTENTION
|
|
65
|
+
- **File Organization Issues:**
|
|
66
|
+
- Root directory pollution: `identifier.sqlite`, `package-lock.json` should be removed
|
|
67
|
+
- Directory name typos: `entites/` should be `entities/`, `tabel-query/` should be `table-query/`
|
|
68
|
+
- IntelliJ project files (*.iml) committed to repository
|
|
69
|
+
- Experimental code in production paths: `testLineChart.ts`
|
|
70
|
+
- **Cleanup Tasks Needed:**
|
|
71
|
+
- Remove 6+ unnecessary files from root and subdirectories
|
|
72
|
+
- Fix directory naming inconsistencies
|
|
73
|
+
- Consolidate duplicate dummy data files between backend and frontend
|
|
74
|
+
|
|
75
|
+
## Critical Findings
|
|
76
|
+
|
|
77
|
+
### Critical Issues (Severity 8-10)
|
|
78
|
+
|
|
79
|
+
#### Test Infrastructure Collapse
|
|
80
|
+
- 96% of test suites failing due to infrastructure issues, not logic problems
|
|
81
|
+
- No meaningful test coverage for authentication, data processing, or UI components
|
|
82
|
+
- External database dependencies making tests unstable and environment-dependent
|
|
83
|
+
- Missing test configuration files blocking integration test execution
|
|
84
|
+
|
|
85
|
+
#### Type Safety Violations
|
|
86
|
+
- Frontend API services using `Promise<any>` extensively, eliminating TypeScript benefits
|
|
87
|
+
- Backend missing proper error type definitions
|
|
88
|
+
- Inconsistent parameter types causing test failures (dashboard service API changes)
|
|
89
|
+
|
|
90
|
+
#### File System Pollution
|
|
91
|
+
- Repository contains IDE-specific files and temporary artifacts
|
|
92
|
+
- Directory naming errors preventing proper module imports
|
|
93
|
+
- Root-level files that should be in subdirectories or gitignored
|
|
94
|
+
|
|
95
|
+
### Improvement Opportunities (Severity 4-7)
|
|
96
|
+
|
|
97
|
+
#### Architecture Refinements
|
|
98
|
+
- Connection Service mixing multiple database engine logic (violates SRP)
|
|
99
|
+
- Dashboard Module depending on too many entities (tight coupling)
|
|
100
|
+
- Missing Factory pattern for database engine selection
|
|
101
|
+
|
|
102
|
+
#### Performance Concerns
|
|
103
|
+
- No caching strategy for frequently accessed data
|
|
104
|
+
- Large bundle sizes in frontend without optimization
|
|
105
|
+
- Lambda cold start issues not addressed
|
|
106
|
+
|
|
107
|
+
#### Documentation Gaps
|
|
108
|
+
- No ADRs (Architecture Decision Records) documenting technical choices
|
|
109
|
+
- Missing API documentation despite Swagger setup
|
|
110
|
+
- Test strategy and coverage guidelines not defined
|
|
111
|
+
|
|
112
|
+
## John Carmack Critique 🔥
|
|
113
|
+
|
|
114
|
+
1. **Test Infrastructure is Fundamentally Broken**: You have a 98.3% pass rate but essentially 0% meaningful coverage. This is worse than having no tests - it gives false confidence. The authentication system processes JWT tokens and passwords with zero validation tests. In a production BI system handling enterprise data, this is unacceptable. Fix the test infrastructure immediately or accept that you're shipping blind.
|
|
115
|
+
|
|
116
|
+
2. **Type Safety Theater**: TypeScript with `Promise<any>` everywhere defeats the entire purpose. You're getting all the compilation overhead with none of the safety benefits. Either commit to proper typing or drop TypeScript - this middle ground helps nobody and slows down development while providing zero protection.
|
|
117
|
+
|
|
118
|
+
3. **Connection Service is a God Object**: One service handling 10+ database engines with massive switch-case logic. This violates every SOLID principle simultaneously. When MySQL behavior differs from BigQuery, you'll have cascade failures across unrelated database types. Factor this into per-engine strategies before it becomes unmaintainable.
|
|
119
|
+
|
|
120
|
+
## Recommendations
|
|
121
|
+
|
|
122
|
+
Based on the findings, here are prioritized action items:
|
|
123
|
+
|
|
124
|
+
- **Important fixes:**
|
|
125
|
+
- Fix test infrastructure immediately - add missing config files, proper mocking setup
|
|
126
|
+
- Remove file system pollution (*.iml files, root directory cleanup)
|
|
127
|
+
- Fix directory naming typos that break imports
|
|
128
|
+
- Establish proper TypeScript typing in API layer
|
|
129
|
+
|
|
130
|
+
- **Optional fixes/changes:**
|
|
131
|
+
- Refactor Connection Service using Strategy/Factory patterns
|
|
132
|
+
- Add comprehensive error handling patterns
|
|
133
|
+
- Implement caching layer for database metadata
|
|
134
|
+
- Create ADR documentation for major technical decisions
|
|
135
|
+
|
|
136
|
+
- **Next Sprint Focus:**
|
|
137
|
+
- Cannot proceed to next sprint until test infrastructure is stabilized
|
|
138
|
+
- Recommend creating "Test Infrastructure Recovery" sprint before continuing MVP stabilization
|
|
139
|
+
- Focus on establishing baseline test coverage for authentication and data processing modules
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Test-Strategy Alignment Review - 2025-06-12 12:00
|
|
2
|
+
|
|
3
|
+
## Alignment Summary
|
|
4
|
+
|
|
5
|
+
Overall alignment with testing strategy: **POOR**
|
|
6
|
+
|
|
7
|
+
Key findings:
|
|
8
|
+
- Test suite has extremely low practical coverage (<5%) despite 98.3% pass rate for basic smoke tests
|
|
9
|
+
- Critical functionality (authentication, data processing, UI components) has no meaningful test coverage
|
|
10
|
+
- Tests focus on implementation details rather than user behavior and business value
|
|
11
|
+
- Frontend has essentially zero test coverage for core BI functionality
|
|
12
|
+
|
|
13
|
+
## Tests Requiring Modification
|
|
14
|
+
|
|
15
|
+
### Remove (Over-engineered/Out of scope)
|
|
16
|
+
- `backend-api/test/QTT-*/` - Integration tests with hardcoded external database dependencies
|
|
17
|
+
- **Reason**: These tests depend on actual database connections and fail in isolation
|
|
18
|
+
- **Action**: Replace with mocked integration tests
|
|
19
|
+
|
|
20
|
+
### Simplify (Too complex for purpose)
|
|
21
|
+
- All `*.service.spec.ts` files currently only test `should be defined`
|
|
22
|
+
- **File**: `src/auth/auth.service.spec.ts`
|
|
23
|
+
- **Issue**: Pointless smoke test that provides no value
|
|
24
|
+
- **Action**: Replace with behavior-focused authentication flow tests
|
|
25
|
+
|
|
26
|
+
- All `*.controller.spec.ts` files with minimal coverage
|
|
27
|
+
- **File**: `src/dashboard/dashboard.controller.spec.ts`
|
|
28
|
+
- **Issue**: Missing dependency mocking, tests implementation details
|
|
29
|
+
- **Action**: Focus on HTTP contract testing and error handling
|
|
30
|
+
|
|
31
|
+
### Add (Critical gaps)
|
|
32
|
+
- **Authentication Security Tests**
|
|
33
|
+
- JWT token generation/validation
|
|
34
|
+
- Password validation and hashing
|
|
35
|
+
- Token refresh mechanism
|
|
36
|
+
- Session timeout handling
|
|
37
|
+
|
|
38
|
+
- **Database Connection Tests**
|
|
39
|
+
- Connection pool management
|
|
40
|
+
- SQL injection prevention
|
|
41
|
+
- Query timeout handling
|
|
42
|
+
- Multi-database engine support
|
|
43
|
+
|
|
44
|
+
- **Frontend User Journey Tests**
|
|
45
|
+
- Login/logout flow
|
|
46
|
+
- Widget creation 3-step process
|
|
47
|
+
- Dashboard layout drag-and-drop
|
|
48
|
+
- Data visualization rendering
|
|
49
|
+
|
|
50
|
+
- **API Integration Tests**
|
|
51
|
+
- Error response format consistency
|
|
52
|
+
- CORS handling
|
|
53
|
+
- Rate limiting behavior
|
|
54
|
+
- File upload security
|
|
55
|
+
|
|
56
|
+
## Recommended Actions
|
|
57
|
+
|
|
58
|
+
### Immediate (Blocking issues)
|
|
59
|
+
- [ ] Fix dependency injection in all service tests (`backend-api/src/**/*.service.spec.ts`)
|
|
60
|
+
- [ ] Remove hardcoded database connections from QTT tests
|
|
61
|
+
- [ ] Add basic authentication flow tests for security validation
|
|
62
|
+
- [ ] Fix floating-point precision issues in `frontend-web/src/widget/utils/chartUtil.test.ts`
|
|
63
|
+
|
|
64
|
+
### Short-term (Quality improvements)
|
|
65
|
+
- [ ] Implement test data factories for consistent mock objects
|
|
66
|
+
- [ ] Add comprehensive API contract tests for all controllers
|
|
67
|
+
- [ ] Create E2E test suite for critical user workflows
|
|
68
|
+
- [ ] Establish test coverage baseline and improvement targets
|
|
69
|
+
|
|
70
|
+
### Long-term (Technical debt)
|
|
71
|
+
- [ ] Implement visual regression testing for 50+ chart components
|
|
72
|
+
- [ ] Add performance testing for large dataset processing
|
|
73
|
+
- [ ] Create automated security testing pipeline
|
|
74
|
+
- [ ] Establish test strategy documentation with coverage guidelines
|
|
75
|
+
|
|
76
|
+
## Test Health Indicators
|
|
77
|
+
|
|
78
|
+
- Tests align with code purpose: **NO** - Most tests are meaningless smoke tests
|
|
79
|
+
- Critical paths covered: **NO** - Authentication, data processing, UI flows lack coverage
|
|
80
|
+
- Maintenance burden reasonable: **PARTIALLY** - Current tests are minimal but don't provide value
|
|
81
|
+
- Tests support development velocity: **NO** - Tests don't catch regressions or guide refactoring
|
|
82
|
+
|
|
83
|
+
## Implementation Examples
|
|
84
|
+
|
|
85
|
+
### Before (Current - Meaningless)
|
|
86
|
+
```typescript
|
|
87
|
+
// auth.service.spec.ts
|
|
88
|
+
describe('AuthService', () => {
|
|
89
|
+
it('should be defined', () => {
|
|
90
|
+
expect(service).toBeDefined();
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### After (Behavior-focused)
|
|
96
|
+
```typescript
|
|
97
|
+
// auth.service.spec.ts
|
|
98
|
+
describe('AuthService', () => {
|
|
99
|
+
describe('validateUser', () => {
|
|
100
|
+
it('should return user data for valid credentials', async () => {
|
|
101
|
+
const mockUser = { id: 1, email: 'test@test.com' };
|
|
102
|
+
mockUserRepository.findOne.mockResolvedValue(mockUser);
|
|
103
|
+
|
|
104
|
+
const result = await service.validateUser('test@test.com', 'validPassword');
|
|
105
|
+
|
|
106
|
+
expect(result).toEqual(mockUser);
|
|
107
|
+
expect(mockUserRepository.findOne).toHaveBeenCalledWith({
|
|
108
|
+
where: { email: 'test@test.com' }
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('should throw UnauthorizedException for invalid credentials', async () => {
|
|
113
|
+
mockUserRepository.findOne.mockResolvedValue(null);
|
|
114
|
+
|
|
115
|
+
await expect(service.validateUser('test@test.com', 'wrongPassword'))
|
|
116
|
+
.rejects.toThrow(UnauthorizedException);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Frontend Test Example
|
|
123
|
+
```typescript
|
|
124
|
+
// Widget creation flow test
|
|
125
|
+
describe('Widget Creation Flow', () => {
|
|
126
|
+
it('should complete 3-step widget creation successfully', async () => {
|
|
127
|
+
// Step 1: Dataset selection
|
|
128
|
+
fireEvent.click(screen.getByText('Sample Dataset'));
|
|
129
|
+
fireEvent.click(screen.getByText('다음'));
|
|
130
|
+
|
|
131
|
+
// Step 2: Chart type selection
|
|
132
|
+
fireEvent.click(screen.getByText('Line Chart'));
|
|
133
|
+
fireEvent.click(screen.getByText('다음'));
|
|
134
|
+
|
|
135
|
+
// Step 3: Configuration
|
|
136
|
+
fireEvent.change(screen.getByLabelText('위젯명'), {
|
|
137
|
+
target: { value: 'Test Widget' }
|
|
138
|
+
});
|
|
139
|
+
fireEvent.click(screen.getByText('저장'));
|
|
140
|
+
|
|
141
|
+
await waitFor(() => {
|
|
142
|
+
expect(screen.getByText('위젯이 생성되었습니다')).toBeInTheDocument();
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Next Review
|
|
149
|
+
|
|
150
|
+
Recommended review in: **2 weeks**
|
|
151
|
+
Focus areas for next review:
|
|
152
|
+
- Authentication test implementation progress
|
|
153
|
+
- Frontend test coverage establishment
|
|
154
|
+
- Integration test stability improvements
|
|
155
|
+
- Test infrastructure setup completion
|