cc-devflow 1.0.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/.claude/CLAUDE.md +83 -0
- package/.claude/agents/architecture-designer.md +443 -0
- package/.claude/agents/bug-analyzer.md +382 -0
- package/.claude/agents/checklist-agent.md +175 -0
- package/.claude/agents/clarify-analyst.md +50 -0
- package/.claude/agents/code-reviewer.md +71 -0
- package/.claude/agents/codex-analyzer.md +39 -0
- package/.claude/agents/compatibility-checker.md +580 -0
- package/.claude/agents/consistency-checker.md +532 -0
- package/.claude/agents/impact-analyzer.md +441 -0
- package/.claude/agents/planner.md +230 -0
- package/.claude/agents/prd-writer.md +320 -0
- package/.claude/agents/project-guidelines-generator.md +1329 -0
- package/.claude/agents/qa-tester.md +313 -0
- package/.claude/agents/release-manager.md +295 -0
- package/.claude/agents/security-reviewer.md +314 -0
- package/.claude/agents/style-guide-generator.md +458 -0
- package/.claude/agents/tech-architect.md +516 -0
- package/.claude/agents/ui-designer.md +485 -0
- package/.claude/commands/code-review-high.md +58 -0
- package/.claude/commands/core-architecture.md +429 -0
- package/.claude/commands/core-guidelines.md +486 -0
- package/.claude/commands/core-roadmap.md +439 -0
- package/.claude/commands/core-style.md +293 -0
- package/.claude/commands/flow-archive.md +245 -0
- package/.claude/commands/flow-checklist.md +260 -0
- package/.claude/commands/flow-clarify.md +136 -0
- package/.claude/commands/flow-constitution.md +82 -0
- package/.claude/commands/flow-dev.md +134 -0
- package/.claude/commands/flow-epic.md +150 -0
- package/.claude/commands/flow-fix.md +104 -0
- package/.claude/commands/flow-ideate.md +214 -0
- package/.claude/commands/flow-init.md +313 -0
- package/.claude/commands/flow-new.md +394 -0
- package/.claude/commands/flow-prd.md +131 -0
- package/.claude/commands/flow-qa.md +93 -0
- package/.claude/commands/flow-release.md +92 -0
- package/.claude/commands/flow-restart.md +98 -0
- package/.claude/commands/flow-status.md +64 -0
- package/.claude/commands/flow-tech.md +142 -0
- package/.claude/commands/flow-ui.md +189 -0
- package/.claude/commands/flow-update.md +111 -0
- package/.claude/commands/flow-upgrade.md +115 -0
- package/.claude/commands/flow-verify.md +96 -0
- package/.claude/commands/problem-analyzer.md +60 -0
- package/.claude/config/quality-rules.yml +161 -0
- package/.claude/docs/SPEC_KIT_CONSTITUTION_ANALYSIS.md +426 -0
- package/.claude/docs/design/consistency-conflict-detection-algorithms.md +658 -0
- package/.claude/docs/design/intent-driven-input-design.md +380 -0
- package/.claude/docs/design/prd-version-management-design.md +437 -0
- package/.claude/docs/guides/INIT_TROUBLESHOOTING.md +117 -0
- package/.claude/docs/guides/NEW_TROUBLESHOOTING.md +151 -0
- package/.claude/docs/guides/ROADMAP_TROUBLESHOOTING.md +188 -0
- package/.claude/docs/guides/TASK_COMPLETION_MARKING.md +338 -0
- package/.claude/docs/templates/ARCHITECTURE_TEMPLATE.md +633 -0
- package/.claude/docs/templates/BACKLOG_TEMPLATE.md +261 -0
- package/.claude/docs/templates/CHECKLIST_TEMPLATE.md +52 -0
- package/.claude/docs/templates/CLARIFICATION_REPORT_TEMPLATE.md +206 -0
- package/.claude/docs/templates/CODE_REVIEW_TEMPLATE.md +71 -0
- package/.claude/docs/templates/EPIC_TEMPLATE.md +805 -0
- package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +213 -0
- package/.claude/docs/templates/INTENT_CLARIFICATION_TEMPLATE.md +57 -0
- package/.claude/docs/templates/NEW_ORCHESTRATION_TEMPLATE.md +148 -0
- package/.claude/docs/templates/PRD_TEMPLATE.md +562 -0
- package/.claude/docs/templates/RESEARCH_TEMPLATE.md +276 -0
- package/.claude/docs/templates/REVIEW-HIGH.md +57 -0
- package/.claude/docs/templates/ROADMAP_DIALOGUE_TEMPLATE.md +198 -0
- package/.claude/docs/templates/ROADMAP_TEMPLATE.md +310 -0
- package/.claude/docs/templates/STYLE_TEMPLATE.md +1266 -0
- package/.claude/docs/templates/TASKS_TEMPLATE.md +523 -0
- package/.claude/docs/templates/TECH_DESIGN_TEMPLATE.md +1019 -0
- package/.claude/docs/templates/UI_PROTOTYPE_TEMPLATE.md +1436 -0
- package/.claude/guides/agent-guides/agent-coordination-guide.md +459 -0
- package/.claude/guides/project-guidelines-system.md +463 -0
- package/.claude/guides/technical-guides/datetime-handling-guide.md +563 -0
- package/.claude/guides/technical-guides/git-github-guide.md +642 -0
- package/.claude/guides/technical-guides/test-execution-guide.md +618 -0
- package/.claude/guides/workflow-guides/bug-fix-orchestrator.md +217 -0
- package/.claude/guides/workflow-guides/flow-orchestrator.md +282 -0
- package/.claude/hooks/checklist-gate.js +397 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +459 -0
- package/.claude/hooks/post-tool-use-tracker.sh +280 -0
- package/.claude/hooks/pre-tool-use-guardrail.sh +36 -0
- package/.claude/hooks/pre-tool-use-guardrail.ts +342 -0
- package/.claude/hooks/skill-activation-prompt.sh +36 -0
- package/.claude/hooks/skill-activation-prompt.ts +214 -0
- package/.claude/hooks/state/skills-used-test-guard.json +3 -0
- package/.claude/rules/devflow-conventions.md +305 -0
- package/.claude/rules/project-constitution.md +748 -0
- package/.claude/schemas/constitution.schema.json +43 -0
- package/.claude/scripts/analyze-upgrade-impact.sh +200 -0
- package/.claude/scripts/archive-requirement.sh +351 -0
- package/.claude/scripts/calculate-checklist-completion.sh +243 -0
- package/.claude/scripts/calculate-quarter.sh +206 -0
- package/.claude/scripts/check-dependencies.sh +409 -0
- package/.claude/scripts/check-prerequisites.sh +232 -0
- package/.claude/scripts/check-task-status.sh +264 -0
- package/.claude/scripts/checklist-errors.sh +131 -0
- package/.claude/scripts/common.sh +570 -0
- package/.claude/scripts/consolidate-research.sh +182 -0
- package/.claude/scripts/create-requirement.sh +426 -0
- package/.claude/scripts/export-contracts.sh +117 -0
- package/.claude/scripts/extract-data-model.sh +78 -0
- package/.claude/scripts/generate-clarification-questions.sh +377 -0
- package/.claude/scripts/generate-clarification-report.sh +463 -0
- package/.claude/scripts/generate-quickstart.sh +146 -0
- package/.claude/scripts/generate-research-tasks.sh +157 -0
- package/.claude/scripts/generate-status-report.sh +523 -0
- package/.claude/scripts/generate-tech-analysis.sh +46 -0
- package/.claude/scripts/locate-requirement-in-roadmap.sh +233 -0
- package/.claude/scripts/manage-constitution.sh +602 -0
- package/.claude/scripts/mark-task-complete.sh +198 -0
- package/.claude/scripts/populate-research-tasks.sh +259 -0
- package/.claude/scripts/recover-workflow.sh +460 -0
- package/.claude/scripts/run-clarify-scan.sh +601 -0
- package/.claude/scripts/run-high-review.sh +62 -0
- package/.claude/scripts/run-problem-analysis.sh +68 -0
- package/.claude/scripts/setup-epic.sh +173 -0
- package/.claude/scripts/sync-roadmap-progress.sh +300 -0
- package/.claude/scripts/sync-task-marks.sh +199 -0
- package/.claude/scripts/test-clarify-scan.sh +515 -0
- package/.claude/scripts/update-agent-context.sh +806 -0
- package/.claude/scripts/validate-constitution.sh +567 -0
- package/.claude/scripts/validate-hooks.sh +487 -0
- package/.claude/scripts/validate-research.sh +332 -0
- package/.claude/scripts/validate-scope-boundary.sh +493 -0
- package/.claude/scripts/verify-setup.sh +37 -0
- package/.claude/settings.json +76 -0
- package/.claude/skills/_reference-implementations/README.md +96 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/SKILL.md +302 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/architecture-overview.md +451 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/async-and-errors.md +307 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/complete-examples.md +638 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/configuration.md +275 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/database-patterns.md +224 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/middleware-guide.md +213 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/services-and-repositories.md +789 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/testing-guide.md +235 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/validation-patterns.md +754 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/SKILL.md +399 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/common-patterns.md +331 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/complete-examples.md +872 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/component-patterns.md +502 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/data-fetching.md +767 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/file-organization.md +502 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/performance.md +406 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/routing-guide.md +364 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/styling-guide.md +428 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/typescript-standards.md +418 -0
- package/.claude/skills/cc-devflow-orchestrator/SKILL.md +229 -0
- package/.claude/skills/constitution-guardian/SKILL.md +306 -0
- package/.claude/skills/devflow-constitution-quick-ref/SKILL.md +374 -0
- package/.claude/skills/devflow-file-standards/SKILL.md +353 -0
- package/.claude/skills/devflow-tdd-enforcer/SKILL.md +192 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +426 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +213 -0
- package/.claude/tests/README.md +300 -0
- package/.claude/tests/TODO.md +69 -0
- package/.claude/tests/__pycache__/test_analyze_upgrade_impact.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_consolidate_research.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_export_contracts.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_extract_data_model.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_generate_quickstart.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_generate_research_tasks.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/constitution/run_all_constitution_tests.sh +111 -0
- package/.claude/tests/constitution/test_agent_assignment.sh +207 -0
- package/.claude/tests/constitution/test_article_coverage.sh +201 -0
- package/.claude/tests/constitution/test_template_completeness.sh +150 -0
- package/.claude/tests/constitution/test_version_consistency.sh +120 -0
- package/.claude/tests/fixtures/spec_delta_full.md +16 -0
- package/.claude/tests/fixtures/tasks_progress_sample.md +5 -0
- package/.claude/tests/run-all-tests.sh +229 -0
- package/.claude/tests/scripts/run.sh +30 -0
- package/.claude/tests/scripts/test-framework.sh +128 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh +511 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak +504 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak2 +505 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak3 +506 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak4 +507 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak5 +508 -0
- package/.claude/tests/scripts/test_check_task_status.sh +499 -0
- package/.claude/tests/scripts/test_common.sh +244 -0
- package/.claude/tests/scripts/test_generate_status_report.sh +71 -0
- package/.claude/tests/scripts/test_mark_task_complete.sh +441 -0
- package/.claude/tests/scripts/test_mark_task_complete.sh.backup +410 -0
- package/.claude/tests/scripts/test_recover_workflow.sh +304 -0
- package/.claude/tests/scripts/test_setup_epic.sh +437 -0
- package/.claude/tests/scripts/test_sync_task_marks.sh +196 -0
- package/.claude/tests/scripts/test_validate_constitution.sh +74 -0
- package/.claude/tests/scripts/test_validate_research.sh +462 -0
- package/.claude/tests/slugify.bats +82 -0
- package/.claude/tests/test-framework.sh +732 -0
- package/.claude/tests/test_analyze_upgrade_impact.py +34 -0
- package/.claude/tests/test_consolidate_research.py +48 -0
- package/.claude/tests/test_export_contracts.py +43 -0
- package/.claude/tests/test_extract_data_model.py +33 -0
- package/.claude/tests/test_generate_quickstart.py +50 -0
- package/.claude/tests/test_generate_research_tasks.py +52 -0
- package/.claude/tsc-cache/6e64f818-6398-49ca-8623-581a9af85c44/edited-files.log +1 -0
- package/.claude/tsc-cache/795ba6e3-b98a-423b-bab2-51aa62812569/affected-repos.txt +1 -0
- package/.claude/tsc-cache/795ba6e3-b98a-423b-bab2-51aa62812569/edited-files.log +1 -0
- package/.claude/tsc-cache/ae335694-be5a-4ba4-a1a0-b676c09a7906/affected-repos.txt +1 -0
- package/.claude/tsc-cache/ae335694-be5a-4ba4-a1a0-b676c09a7906/edited-files.log +1 -0
- package/CHANGELOG.md +507 -0
- package/LICENSE +21 -0
- package/README.md +534 -0
- package/README.zh-CN.md +530 -0
- package/bin/adapt.js +240 -0
- package/bin/cc-devflow-cli.js +185 -0
- package/bin/cc-devflow.js +78 -0
- package/config/adapters.yml +5 -0
- package/config/schema/adapters.schema.json +44 -0
- package/docs/CLAUDE.md +26 -0
- package/docs/commands/README.md +61 -0
- package/docs/commands/README.zh-CN.md +55 -0
- package/docs/commands/core-roadmap.md +106 -0
- package/docs/commands/core-roadmap.zh-CN.md +102 -0
- package/docs/commands/core-style.md +405 -0
- package/docs/commands/core-style.zh-CN.md +405 -0
- package/docs/commands/flow-init.md +134 -0
- package/docs/commands/flow-init.zh-CN.md +163 -0
- package/docs/commands/flow-new.md +274 -0
- package/docs/commands/flow-new.zh-CN.md +270 -0
- package/docs/guides/getting-started.md +204 -0
- package/docs/guides/getting-started.zh-CN.md +152 -0
- package/lib/adapters/adapter-interface.js +57 -0
- package/lib/adapters/claude-adapter.js +74 -0
- package/lib/adapters/codex-adapter.js +40 -0
- package/lib/adapters/config-validator.js +68 -0
- package/lib/adapters/logger.js +42 -0
- package/lib/adapters/registry.js +153 -0
- package/lib/compiler/CLAUDE.md +92 -0
- package/lib/compiler/__tests__/drift.test.js +215 -0
- package/lib/compiler/__tests__/errors.test.js +184 -0
- package/lib/compiler/__tests__/incremental.test.js +174 -0
- package/lib/compiler/__tests__/integration.test.js +174 -0
- package/lib/compiler/__tests__/manifest.test.js +233 -0
- package/lib/compiler/__tests__/parser.test.js +456 -0
- package/lib/compiler/__tests__/schemas.test.js +301 -0
- package/lib/compiler/__tests__/skills-registry.test.js +125 -0
- package/lib/compiler/__tests__/transformer.test.js +286 -0
- package/lib/compiler/emitters/antigravity-emitter.js +171 -0
- package/lib/compiler/emitters/base-emitter.js +73 -0
- package/lib/compiler/emitters/codex-emitter.js +52 -0
- package/lib/compiler/emitters/cursor-emitter.js +31 -0
- package/lib/compiler/emitters/index.js +50 -0
- package/lib/compiler/emitters/qwen-emitter.js +39 -0
- package/lib/compiler/errors.js +119 -0
- package/lib/compiler/index.js +256 -0
- package/lib/compiler/manifest.js +242 -0
- package/lib/compiler/parser.js +258 -0
- package/lib/compiler/platforms.js +113 -0
- package/lib/compiler/resource-copier.js +320 -0
- package/lib/compiler/rules-emitters/__tests__/antigravity-rules-emitter.test.js +191 -0
- package/lib/compiler/rules-emitters/__tests__/codex-rules-emitter.test.js +109 -0
- package/lib/compiler/rules-emitters/__tests__/cursor-rules-emitter.test.js +123 -0
- package/lib/compiler/rules-emitters/__tests__/qwen-rules-emitter.test.js +123 -0
- package/lib/compiler/rules-emitters/antigravity-rules-emitter.js +253 -0
- package/lib/compiler/rules-emitters/base-rules-emitter.js +83 -0
- package/lib/compiler/rules-emitters/codex-rules-emitter.js +116 -0
- package/lib/compiler/rules-emitters/cursor-rules-emitter.js +98 -0
- package/lib/compiler/rules-emitters/index.js +71 -0
- package/lib/compiler/rules-emitters/qwen-rules-emitter.js +70 -0
- package/lib/compiler/schemas.js +144 -0
- package/lib/compiler/skills-registry.js +225 -0
- package/lib/compiler/transformer.js +236 -0
- package/package.json +50 -0
|
@@ -0,0 +1,805 @@
|
|
|
1
|
+
# Epic: {{REQ_ID}} - {{TITLE}}
|
|
2
|
+
|
|
3
|
+
**Status**: Planned
|
|
4
|
+
**Created**: {{DATE}}
|
|
5
|
+
**Owner**: {{OWNER}}
|
|
6
|
+
**Type**: Epic
|
|
7
|
+
|
|
8
|
+
**Input**: PRD.md from `devflow/requirements/{{REQ_ID}}/PRD.md`
|
|
9
|
+
**Prerequisites**: PRD.md 已完成并通过 Constitution Check
|
|
10
|
+
|
|
11
|
+
## Execution Flow (Epic 生成流程)
|
|
12
|
+
```
|
|
13
|
+
1. Load and analyze PRD
|
|
14
|
+
→ Read PRD.md completely
|
|
15
|
+
→ Extract user stories and acceptance criteria
|
|
16
|
+
→ Understand functional and non-functional requirements
|
|
17
|
+
→ Identify technical constraints
|
|
18
|
+
→ If PRD incomplete: ERROR "Complete PRD first"
|
|
19
|
+
|
|
20
|
+
1.5 Check for UI prototype (条件检查)
|
|
21
|
+
→ Check if UI_PROTOTYPE.html exists
|
|
22
|
+
→ If UI_PROTOTYPE.html exists:
|
|
23
|
+
• Read UI_PROTOTYPE.html HTML comments section
|
|
24
|
+
• Extract page structure (pages列表)
|
|
25
|
+
• Extract component inventory (组件清单)
|
|
26
|
+
• Extract design system (CSS变量: 色彩/字体/间距)
|
|
27
|
+
• Extract responsive breakpoints (断点: 320px/768px/1024px)
|
|
28
|
+
• Store UI context for Phase 3 frontend tasks
|
|
29
|
+
→ If no UI_PROTOTYPE.html:
|
|
30
|
+
• Log: "No UI prototype found, assuming backend-only or manual UI design"
|
|
31
|
+
• Continue without UI context
|
|
32
|
+
|
|
33
|
+
2. Define Epic scope
|
|
34
|
+
→ Extract core objectives from PRD
|
|
35
|
+
→ Define clear boundaries (in-scope vs out-of-scope)
|
|
36
|
+
→ Identify success metrics with targets
|
|
37
|
+
→ Map user stories to Epic objectives
|
|
38
|
+
|
|
39
|
+
3. Design technical approach
|
|
40
|
+
→ Define high-level architecture
|
|
41
|
+
→ Identify key components and their responsibilities
|
|
42
|
+
→ Design data model (entities, relationships)
|
|
43
|
+
→ Design API contracts (endpoints, request/response)
|
|
44
|
+
→ Select technology stack based on constraints
|
|
45
|
+
|
|
46
|
+
4. Plan implementation phases
|
|
47
|
+
→ Phase 1: Setup and infrastructure
|
|
48
|
+
→ Phase 2: Core functionality (following TDD)
|
|
49
|
+
→ Phase 3: Integration
|
|
50
|
+
→ Phase 4: Polish and optimization
|
|
51
|
+
→ Estimate effort for each phase
|
|
52
|
+
|
|
53
|
+
5. Identify dependencies
|
|
54
|
+
→ External dependencies (third-party, other teams)
|
|
55
|
+
→ Internal dependencies (existing systems, modules)
|
|
56
|
+
→ Blocking dependencies with mitigation plans
|
|
57
|
+
|
|
58
|
+
6. Define quality gates
|
|
59
|
+
→ Code review standards
|
|
60
|
+
→ Test coverage requirements (≥80%)
|
|
61
|
+
→ Security scan requirements
|
|
62
|
+
→ Performance benchmarks
|
|
63
|
+
→ Documentation requirements
|
|
64
|
+
|
|
65
|
+
7. Constitution Check (验证 Article I-V 核心原则)
|
|
66
|
+
→ Article I - Quality First: Scope complete? No partial implementation?
|
|
67
|
+
→ Article II - Architectural Consistency: Reusing existing components? No duplication?
|
|
68
|
+
→ Article II - Anti-Over-Engineering: Appropriately scaled solution?
|
|
69
|
+
→ Article III - Security First: Secret management planned? No hardcoded secrets?
|
|
70
|
+
→ Article IV - Performance: Resource management considered?
|
|
71
|
+
→ Article V - Maintainability: Clear separation of concerns?
|
|
72
|
+
→ Document violations with justification in Complexity Tracking table
|
|
73
|
+
|
|
74
|
+
8. Plan rollout strategy
|
|
75
|
+
→ Deployment approach (blue-green, canary, rolling)
|
|
76
|
+
→ Rollback procedures
|
|
77
|
+
→ Monitoring and alerting setup
|
|
78
|
+
→ Communication plan
|
|
79
|
+
|
|
80
|
+
9. Validate completeness
|
|
81
|
+
→ All user stories from PRD covered?
|
|
82
|
+
→ Technical approach feasible?
|
|
83
|
+
→ Dependencies identified and tracked?
|
|
84
|
+
→ Quality gates defined?
|
|
85
|
+
→ Risks assessed with mitigation?
|
|
86
|
+
→ If incomplete: ERROR "Complete missing sections"
|
|
87
|
+
|
|
88
|
+
10. Return: SUCCESS (Epic ready for task generation)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**重要**: 这是一个自执行模板。planner agent 应该按照 Execution Flow 生成完整的 EPIC.md 文件。
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 概述
|
|
96
|
+
|
|
97
|
+
### Epic 描述
|
|
98
|
+
{{EPIC_DESCRIPTION}}
|
|
99
|
+
|
|
100
|
+
### 业务价值
|
|
101
|
+
{{BUSINESS_VALUE}}
|
|
102
|
+
|
|
103
|
+
### 目标用户
|
|
104
|
+
{{TARGET_USERS}}
|
|
105
|
+
|
|
106
|
+
### 成功指标
|
|
107
|
+
| 指标 | 基线 | 目标 | 测量方法 | 时间线 |
|
|
108
|
+
|------|------|------|----------|--------|
|
|
109
|
+
| {{METRIC_1}} | {{BASELINE}} | {{TARGET}} | {{METHOD}} | {{TIMELINE}} |
|
|
110
|
+
| {{METRIC_2}} | {{BASELINE}} | {{TARGET}} | {{METHOD}} | {{TIMELINE}} |
|
|
111
|
+
| {{METRIC_3}} | {{BASELINE}} | {{TARGET}} | {{METHOD}} | {{TIMELINE}} |
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 范围定义
|
|
116
|
+
|
|
117
|
+
### 包含范围
|
|
118
|
+
*从 PRD 用户故事中提取*
|
|
119
|
+
- {{IN_SCOPE_1}}
|
|
120
|
+
- {{IN_SCOPE_2}}
|
|
121
|
+
- {{IN_SCOPE_3}}
|
|
122
|
+
|
|
123
|
+
### 不包含范围
|
|
124
|
+
*明确排除的内容*
|
|
125
|
+
- {{OUT_OF_SCOPE_1}}
|
|
126
|
+
- {{OUT_OF_SCOPE_2}}
|
|
127
|
+
- {{OUT_OF_SCOPE_3}}
|
|
128
|
+
|
|
129
|
+
### 用户故事映射
|
|
130
|
+
*从 PRD 映射到 Epic*
|
|
131
|
+
|
|
132
|
+
#### Story 1: {{STORY_TITLE_1}}
|
|
133
|
+
- **Epic 目标**: {{EPIC_OBJECTIVE_1}}
|
|
134
|
+
- **实现阶段**: Phase {{PHASE_NUMBER}}
|
|
135
|
+
- **优先级**: {{HIGH|MEDIUM|LOW}}
|
|
136
|
+
|
|
137
|
+
#### Story 2: {{STORY_TITLE_2}}
|
|
138
|
+
- **Epic 目标**: {{EPIC_OBJECTIVE_2}}
|
|
139
|
+
- **实现阶段**: Phase {{PHASE_NUMBER}}
|
|
140
|
+
- **优先级**: {{HIGH|MEDIUM|LOW}}
|
|
141
|
+
|
|
142
|
+
#### Story 3: {{STORY_TITLE_3}}
|
|
143
|
+
- **Epic 目标**: {{EPIC_OBJECTIVE_3}}
|
|
144
|
+
- **实现阶段**: Phase {{PHASE_NUMBER}}
|
|
145
|
+
- **优先级**: {{HIGH|MEDIUM|LOW}}
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Phase -1: 宪法闸门检查 (Pre-Implementation Gates) ⚠️
|
|
150
|
+
|
|
151
|
+
<!--
|
|
152
|
+
======================================================================
|
|
153
|
+
CRITICAL: 这些闸门必须在技术方案设计前通过
|
|
154
|
+
任何违规都必须在 Complexity Tracking 表中证明和记录
|
|
155
|
+
======================================================================
|
|
156
|
+
-->
|
|
157
|
+
|
|
158
|
+
### Simplicity Gate (简单性闸门) - Constitution Article VII
|
|
159
|
+
|
|
160
|
+
- [ ] **项目数量**: 使用 ≤3 个项目/模块?
|
|
161
|
+
- 如果 >3: 必须在 Complexity Tracking 中证明必要性
|
|
162
|
+
|
|
163
|
+
- [ ] **NO FUTURE-PROOFING**: 没有为"未来可能需要"的功能做准备?
|
|
164
|
+
- ❌ 禁止: "预留接口"、"扩展点"、"通用框架"
|
|
165
|
+
- ✅ 允许: 只实现当前需求的最简单方案
|
|
166
|
+
|
|
167
|
+
- [ ] **Minimal Dependencies**: 只使用必需的依赖库?
|
|
168
|
+
- 检查每个依赖: 是当前需求必需还是"可能有用"
|
|
169
|
+
|
|
170
|
+
### Anti-Abstraction Gate (反抽象闸门) - Constitution Article VIII
|
|
171
|
+
|
|
172
|
+
- [ ] **Framework Trust**: 直接使用框架功能,没有封装?
|
|
173
|
+
- ❌ 禁止: BaseController, ServiceLayer, Repository Pattern
|
|
174
|
+
- ✅ 允许: 直接使用 FastAPI, Express, Flask 等
|
|
175
|
+
|
|
176
|
+
- [ ] **Single Model Representation**: 实体只有一种数据表示?
|
|
177
|
+
- ❌ 禁止: DTO ↔ Entity ↔ ViewModel 多层转换
|
|
178
|
+
- ✅ 允许: 单一数据模型贯穿各层
|
|
179
|
+
|
|
180
|
+
- [ ] **No Unnecessary Interfaces**: 没有单一实现的接口?
|
|
181
|
+
- ❌ 禁止: 只有一个实现类的 IUserService 接口
|
|
182
|
+
- ✅ 允许: 有多个实现时才抽象接口
|
|
183
|
+
|
|
184
|
+
### Integration-First Gate (集成优先闸门) - Constitution Article IX
|
|
185
|
+
|
|
186
|
+
- [ ] **Contracts Defined First**: API contracts 在实现前定义?
|
|
187
|
+
- 必须: 定义 OpenAPI/Swagger 规范或类似契约
|
|
188
|
+
|
|
189
|
+
- [ ] **Contract Tests Planned**: Contract tests 在 Phase 2 计划?
|
|
190
|
+
- 必须: 每个 endpoint 都有对应的 contract test
|
|
191
|
+
|
|
192
|
+
- [ ] **Real Environment**: 使用真实数据库而非 mocks?
|
|
193
|
+
- ✅ 优先: PostgreSQL testcontainer, SQLite in-memory
|
|
194
|
+
- ⚠️ 谨慎: Mocks 仅用于外部服务
|
|
195
|
+
|
|
196
|
+
### Complexity Tracking (复杂度追踪表)
|
|
197
|
+
|
|
198
|
+
*仅在违反上述闸门时填写*
|
|
199
|
+
|
|
200
|
+
| 违规项 | 为何需要 | 更简单方案为何不够 | 缓解措施 |
|
|
201
|
+
|--------|---------|-------------------|----------|
|
|
202
|
+
| {{VIOLATION}} | {{JUSTIFICATION}} | {{WHY_SIMPLE_NOT_ENOUGH}} | {{MITIGATION}} |
|
|
203
|
+
|
|
204
|
+
**示例**:
|
|
205
|
+
| 违规项 | 为何需要 | 更简单方案为何不够 | 缓解措施 |
|
|
206
|
+
|--------|---------|-------------------|----------|
|
|
207
|
+
| 4个项目 | 前端、后端、移动端、管理后台 | 3个项目无法满足多端需求 | 管理后台复用前端组件库 |
|
|
208
|
+
| Repository Pattern | 需要支持 PostgreSQL 和 MongoDB | 直接使用 ORM 会导致业务逻辑耦合数据库 | 只抽象数据访问层,不做过度封装 |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## UI 原型集成 (如有) ⚡️
|
|
213
|
+
|
|
214
|
+
**Note**: 本章节仅在存在 UI_PROTOTYPE.html 时填写
|
|
215
|
+
|
|
216
|
+
### UI 原型概览
|
|
217
|
+
- **文件位置**: `devflow/requirements/{{REQ_ID}}/UI_PROTOTYPE.html`
|
|
218
|
+
- **原型类型**: {{单页面|多页面SPA|静态原型}}
|
|
219
|
+
- **设计风格**: {{从 ui_design_strategy.md 提取}}
|
|
220
|
+
|
|
221
|
+
### 页面清单
|
|
222
|
+
*从 UI_PROTOTYPE.html 提取*
|
|
223
|
+
|
|
224
|
+
| 页面 | 路由 | 描述 | 关联用户故事 | 实现阶段 |
|
|
225
|
+
|------|------|------|-------------|---------|
|
|
226
|
+
| {{PAGE_1}} | {{ROUTE}} | {{DESCRIPTION}} | Story {{NUM}} | Phase {{NUM}} |
|
|
227
|
+
| {{PAGE_2}} | {{ROUTE}} | {{DESCRIPTION}} | Story {{NUM}} | Phase {{NUM}} |
|
|
228
|
+
|
|
229
|
+
**示例**:
|
|
230
|
+
| 页面 | 路由 | 描述 | 关联用户故事 | 实现阶段 |
|
|
231
|
+
|------|------|------|-------------|---------|
|
|
232
|
+
| 订单列表 | /orders | 显示用户所有订单 | Story 1 | Phase 3 |
|
|
233
|
+
| 订单详情 | /orders/:id | 显示订单详细信息 | Story 2 | Phase 3 |
|
|
234
|
+
|
|
235
|
+
### 组件清单
|
|
236
|
+
*从 UI_PROTOTYPE.html 提取*
|
|
237
|
+
|
|
238
|
+
| 组件 | 类型 | 描述 | 复用性 | 优先级 |
|
|
239
|
+
|------|------|------|--------|--------|
|
|
240
|
+
| {{COMPONENT_1}} | {{TYPE}} | {{DESCRIPTION}} | {{HIGH|MEDIUM|LOW}} | {{P1|P2|P3}} |
|
|
241
|
+
| {{COMPONENT_2}} | {{TYPE}} | {{DESCRIPTION}} | {{HIGH|MEDIUM|LOW}} | {{P1|P2|P3}} |
|
|
242
|
+
|
|
243
|
+
**示例**:
|
|
244
|
+
| 组件 | 类型 | 描述 | 复用性 | 优先级 |
|
|
245
|
+
|------|------|------|--------|--------|
|
|
246
|
+
| OrderCard | 展示组件 | 订单卡片 | HIGH (订单列表/详情共用) | P1 |
|
|
247
|
+
| StatusBadge | UI组件 | 状态徽章 | HIGH (多处使用) | P1 |
|
|
248
|
+
|
|
249
|
+
### 设计系统
|
|
250
|
+
*从 UI_PROTOTYPE.html CSS Variables 提取*
|
|
251
|
+
|
|
252
|
+
#### 色彩系统
|
|
253
|
+
```css
|
|
254
|
+
--primary-color: {{VALUE}};
|
|
255
|
+
--secondary-color: {{VALUE}};
|
|
256
|
+
--text-color: {{VALUE}};
|
|
257
|
+
--bg-color: {{VALUE}};
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
#### 字体系统
|
|
261
|
+
```css
|
|
262
|
+
--font-primary: {{VALUE}};
|
|
263
|
+
--font-secondary: {{VALUE}};
|
|
264
|
+
--font-size-base: {{VALUE}};
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
#### 间距系统
|
|
268
|
+
```css
|
|
269
|
+
--spacing-xs: {{VALUE}};
|
|
270
|
+
--spacing-sm: {{VALUE}};
|
|
271
|
+
--spacing-md: {{VALUE}};
|
|
272
|
+
--spacing-lg: {{VALUE}};
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 响应式断点
|
|
276
|
+
*从 UI_PROTOTYPE.html 提取*
|
|
277
|
+
- **Mobile**: 320px - 767px
|
|
278
|
+
- **Tablet**: 768px - 1023px
|
|
279
|
+
- **Desktop**: 1024px+
|
|
280
|
+
|
|
281
|
+
### 前端技术约束
|
|
282
|
+
**基于UI原型的技术要求**:
|
|
283
|
+
- 框架: {{React|Vue|Angular|Vanilla JS}}
|
|
284
|
+
- CSS方案: {{CSS Modules|Styled Components|Tailwind}}
|
|
285
|
+
- 状态管理: {{Redux|Zustand|Context API}}
|
|
286
|
+
- 路由: {{React Router|Vue Router|自定义}}
|
|
287
|
+
|
|
288
|
+
**Note**: 这些约束将在 Phase 3 (前端实现) 任务中使用
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## 技术方案
|
|
293
|
+
|
|
294
|
+
### 系统架构
|
|
295
|
+
|
|
296
|
+
#### 高层架构
|
|
297
|
+
```text
|
|
298
|
+
{{HIGH_LEVEL_ARCHITECTURE}}
|
|
299
|
+
|
|
300
|
+
示例:
|
|
301
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
302
|
+
│ Frontend │─────▶│ API │─────▶│ Database │
|
|
303
|
+
│ (React) │◀─────│ (Node.js) │◀─────│ (Postgres) │
|
|
304
|
+
└─────────────┘ └─────────────┘ └─────────────┘
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
#### 核心组件
|
|
308
|
+
| 组件 | 职责 | 技术栈 | 依赖 |
|
|
309
|
+
|------|------|--------|------|
|
|
310
|
+
| {{COMPONENT_1}} | {{RESPONSIBILITY}} | {{TECH}} | {{DEPENDENCIES}} |
|
|
311
|
+
| {{COMPONENT_2}} | {{RESPONSIBILITY}} | {{TECH}} | {{DEPENDENCIES}} |
|
|
312
|
+
| {{COMPONENT_3}} | {{RESPONSIBILITY}} | {{TECH}} | {{DEPENDENCIES}} |
|
|
313
|
+
|
|
314
|
+
### 数据模型
|
|
315
|
+
|
|
316
|
+
#### 实体定义
|
|
317
|
+
*从 PRD 提取并细化*
|
|
318
|
+
|
|
319
|
+
**Entity 1: {{ENTITY_NAME_1}}**
|
|
320
|
+
```typescript
|
|
321
|
+
interface {{ENTITY_NAME_1}} {
|
|
322
|
+
id: string;
|
|
323
|
+
{{FIELD_1}}: {{TYPE}};
|
|
324
|
+
{{FIELD_2}}: {{TYPE}};
|
|
325
|
+
{{FIELD_3}}: {{TYPE}};
|
|
326
|
+
createdAt: Date;
|
|
327
|
+
updatedAt: Date;
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**Entity 2: {{ENTITY_NAME_2}}**
|
|
332
|
+
```typescript
|
|
333
|
+
interface {{ENTITY_NAME_2}} {
|
|
334
|
+
id: string;
|
|
335
|
+
{{FIELD_1}}: {{TYPE}};
|
|
336
|
+
{{FIELD_2}}: {{TYPE}};
|
|
337
|
+
createdAt: Date;
|
|
338
|
+
updatedAt: Date;
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
#### 关系图
|
|
343
|
+
```text
|
|
344
|
+
{{ENTITY_RELATIONSHIPS}}
|
|
345
|
+
|
|
346
|
+
示例:
|
|
347
|
+
User ─(1:N)─ Post ─(1:N)─ Comment
|
|
348
|
+
│
|
|
349
|
+
└─(M:N)─ Role
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### API 设计
|
|
353
|
+
|
|
354
|
+
#### 端点列表
|
|
355
|
+
*这些端点将在 Phase 2 (Tests First) 中先写测试*
|
|
356
|
+
|
|
357
|
+
| 方法 | 路径 | 描述 | 请求体 | 响应 | Phase |
|
|
358
|
+
|------|------|------|--------|------|-------|
|
|
359
|
+
| POST | /api/{{RESOURCE}} | {{DESCRIPTION}} | {{REQUEST_SCHEMA}} | {{RESPONSE_SCHEMA}} | 2,3 |
|
|
360
|
+
| GET | /api/{{RESOURCE}}/:id | {{DESCRIPTION}} | - | {{RESPONSE_SCHEMA}} | 2,3 |
|
|
361
|
+
| PUT | /api/{{RESOURCE}}/:id | {{DESCRIPTION}} | {{REQUEST_SCHEMA}} | {{RESPONSE_SCHEMA}} | 2,3 |
|
|
362
|
+
| DELETE | /api/{{RESOURCE}}/:id | {{DESCRIPTION}} | - | {{RESPONSE_SCHEMA}} | 2,3 |
|
|
363
|
+
|
|
364
|
+
**说明**: Phase 2 写测试,Phase 3 写实现
|
|
365
|
+
|
|
366
|
+
#### 示例契约: POST /api/users
|
|
367
|
+
```typescript
|
|
368
|
+
// Request
|
|
369
|
+
{
|
|
370
|
+
"name": "string",
|
|
371
|
+
"email": "string",
|
|
372
|
+
"password": "string"
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// Response (201 Created)
|
|
376
|
+
{
|
|
377
|
+
"id": "string",
|
|
378
|
+
"name": "string",
|
|
379
|
+
"email": "string",
|
|
380
|
+
"createdAt": "string"
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// Error (400 Bad Request)
|
|
384
|
+
{
|
|
385
|
+
"error": "string",
|
|
386
|
+
"details": ["string"]
|
|
387
|
+
}
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### 技术栈选型
|
|
391
|
+
|
|
392
|
+
#### 必须使用
|
|
393
|
+
*从 PRD 技术约束中提取*
|
|
394
|
+
- **语言/框架**: {{LANGUAGE_FRAMEWORK}} - {{REASON}}
|
|
395
|
+
- **数据库**: {{DATABASE}} - {{REASON}}
|
|
396
|
+
- **基础设施**: {{INFRASTRUCTURE}} - {{REASON}}
|
|
397
|
+
|
|
398
|
+
#### 建议使用
|
|
399
|
+
- **测试框架**: {{TEST_FRAMEWORK}} - {{REASON}}
|
|
400
|
+
- **CI/CD**: {{CICD}} - {{REASON}}
|
|
401
|
+
- **监控**: {{MONITORING}} - {{REASON}}
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## 实施阶段
|
|
406
|
+
|
|
407
|
+
### Phase 1: Setup (环境准备)
|
|
408
|
+
**预计时间**: {{ESTIMATE}}
|
|
409
|
+
|
|
410
|
+
**任务**:
|
|
411
|
+
- 项目结构初始化
|
|
412
|
+
- 依赖安装和配置
|
|
413
|
+
- CI/CD 管道设置
|
|
414
|
+
- 开发环境配置
|
|
415
|
+
|
|
416
|
+
**交付物**:
|
|
417
|
+
- 可运行的项目框架
|
|
418
|
+
- CI/CD 自动化
|
|
419
|
+
- 开发者文档
|
|
420
|
+
|
|
421
|
+
### Phase 2: Tests First (TDD 测试优先) ⚠️
|
|
422
|
+
**预计时间**: {{ESTIMATE}}
|
|
423
|
+
|
|
424
|
+
**关键原则**: 所有测试必须在 Phase 3 之前完成并失败
|
|
425
|
+
|
|
426
|
+
**任务**:
|
|
427
|
+
- 编写所有 API 端点的 contract tests
|
|
428
|
+
- 编写所有用户故事的 integration tests
|
|
429
|
+
- 编写数据模型的 schema tests
|
|
430
|
+
- **TEST VERIFICATION CHECKPOINT**: 验证所有测试失败
|
|
431
|
+
|
|
432
|
+
**交付物**:
|
|
433
|
+
- 完整的测试套件(全部失败)
|
|
434
|
+
- 测试覆盖报告(0% - 预期)
|
|
435
|
+
- 测试文档
|
|
436
|
+
|
|
437
|
+
### Phase 3: Core Implementation (核心实现)
|
|
438
|
+
**预计时间**: {{ESTIMATE}}
|
|
439
|
+
|
|
440
|
+
**前提**: Phase 2 的所有测试已失败
|
|
441
|
+
|
|
442
|
+
**任务**:
|
|
443
|
+
- 实现数据模型
|
|
444
|
+
- 实现业务逻辑
|
|
445
|
+
- 实现 API 端点
|
|
446
|
+
- **让测试通过**
|
|
447
|
+
|
|
448
|
+
**交付物**:
|
|
449
|
+
- 功能代码
|
|
450
|
+
- 测试覆盖率 ≥80%
|
|
451
|
+
- API 文档
|
|
452
|
+
|
|
453
|
+
### Phase 4: Integration (集成)
|
|
454
|
+
**预计时间**: {{ESTIMATE}}
|
|
455
|
+
|
|
456
|
+
**任务**:
|
|
457
|
+
- 数据库集成
|
|
458
|
+
- 认证/授权集成
|
|
459
|
+
- 第三方服务集成
|
|
460
|
+
- 中间件配置
|
|
461
|
+
|
|
462
|
+
**交付物**:
|
|
463
|
+
- 完全集成的系统
|
|
464
|
+
- 集成测试通过
|
|
465
|
+
- 部署脚本
|
|
466
|
+
|
|
467
|
+
### Phase 5: Polish (完善)
|
|
468
|
+
**预计时间**: {{ESTIMATE}}
|
|
469
|
+
|
|
470
|
+
**任务**:
|
|
471
|
+
- 性能优化
|
|
472
|
+
- 安全加固
|
|
473
|
+
- 文档完善
|
|
474
|
+
- 用户体验优化
|
|
475
|
+
|
|
476
|
+
**交付物**:
|
|
477
|
+
- 生产就绪的系统
|
|
478
|
+
- 完整文档
|
|
479
|
+
- 运维手册
|
|
480
|
+
|
|
481
|
+
---
|
|
482
|
+
|
|
483
|
+
## 依赖关系
|
|
484
|
+
|
|
485
|
+
### 外部依赖
|
|
486
|
+
| 依赖 | 类型 | 负责方 | 状态 | 预计完成 | 风险 |
|
|
487
|
+
|------|------|--------|------|----------|------|
|
|
488
|
+
| {{DEP_1}} | {{TYPE}} | {{OWNER}} | {{STATUS}} | {{DATE}} | {{RISK}} |
|
|
489
|
+
| {{DEP_2}} | {{TYPE}} | {{OWNER}} | {{STATUS}} | {{DATE}} | {{RISK}} |
|
|
490
|
+
|
|
491
|
+
### 内部依赖
|
|
492
|
+
| 依赖 | 描述 | 影响 | 缓解措施 |
|
|
493
|
+
|------|------|------|----------|
|
|
494
|
+
| {{DEP_1}} | {{DESCRIPTION}} | {{IMPACT}} | {{MITIGATION}} |
|
|
495
|
+
| {{DEP_2}} | {{DESCRIPTION}} | {{IMPACT}} | {{MITIGATION}} |
|
|
496
|
+
|
|
497
|
+
---
|
|
498
|
+
|
|
499
|
+
## 质量标准
|
|
500
|
+
|
|
501
|
+
### Definition of Done (DoD)
|
|
502
|
+
|
|
503
|
+
#### 代码质量
|
|
504
|
+
- [ ] 代码审查通过
|
|
505
|
+
- [ ] 符合团队编码规范
|
|
506
|
+
- [ ] 无 linter 错误
|
|
507
|
+
- [ ] NO CODE DUPLICATION 验证
|
|
508
|
+
- [ ] NO DEAD CODE 验证
|
|
509
|
+
|
|
510
|
+
#### 测试质量
|
|
511
|
+
- [ ] 单元测试覆盖率 ≥80%
|
|
512
|
+
- [ ] 所有集成测试通过
|
|
513
|
+
- [ ] 所有 contract tests 通过
|
|
514
|
+
- [ ] 性能测试达标
|
|
515
|
+
- [ ] TDD 流程遵循(测试先行)
|
|
516
|
+
|
|
517
|
+
#### 安全质量
|
|
518
|
+
- [ ] 安全扫描无高危漏洞
|
|
519
|
+
- [ ] NO HARDCODED SECRETS 验证
|
|
520
|
+
- [ ] 所有输入已验证
|
|
521
|
+
- [ ] 认证/授权正确实现
|
|
522
|
+
|
|
523
|
+
#### 文档质量
|
|
524
|
+
- [ ] API 文档更新
|
|
525
|
+
- [ ] README 更新
|
|
526
|
+
- [ ] CHANGELOG 更新
|
|
527
|
+
- [ ] 运维文档完整
|
|
528
|
+
|
|
529
|
+
#### 部署就绪
|
|
530
|
+
- [ ] 部署脚本测试通过
|
|
531
|
+
- [ ] 回滚程序验证
|
|
532
|
+
- [ ] 监控和告警配置
|
|
533
|
+
- [ ] 日志记录完整
|
|
534
|
+
|
|
535
|
+
### 验收标准
|
|
536
|
+
*从 PRD 映射*
|
|
537
|
+
- {{ACCEPTANCE_CRITERION_1}}
|
|
538
|
+
- {{ACCEPTANCE_CRITERION_2}}
|
|
539
|
+
- {{ACCEPTANCE_CRITERION_3}}
|
|
540
|
+
|
|
541
|
+
---
|
|
542
|
+
|
|
543
|
+
## Phase -1 Constitutional Gates (宪法前置闸)
|
|
544
|
+
|
|
545
|
+
**Critical**: 这些闸门必须在架构设计之前通过,防止过度设计和复杂性蔓延
|
|
546
|
+
|
|
547
|
+
**Reference**: `.claude/constitution/project-constitution.md` (v2.0.0)
|
|
548
|
+
|
|
549
|
+
### Gate 1: Simplicity Gate (Article VII)
|
|
550
|
+
**原则**: ≤3 Projects/Modules, No Future-Proofing
|
|
551
|
+
|
|
552
|
+
**检查项**:
|
|
553
|
+
- [ ] **项目数量限制**: 本Epic产生的独立项目/模块 ≤3 个?
|
|
554
|
+
- [ ] **无未来预留**: 无"未来可能需要"的抽象层或接口?
|
|
555
|
+
- [ ] **最小可行方案**: 选择最简单的可工作方案(不是最灵活)?
|
|
556
|
+
- [ ] **直接实现**: 优先直接实现而非通用框架?
|
|
557
|
+
|
|
558
|
+
**违规示例**:
|
|
559
|
+
- ❌ "设计一个插件系统,未来可以..."
|
|
560
|
+
- ❌ "创建一个通用的数据访问层支持多种数据库"
|
|
561
|
+
- ✅ "直接使用 PostgreSQL 实现用户存储"
|
|
562
|
+
|
|
563
|
+
### Gate 2: Anti-Abstraction Gate (Article VIII)
|
|
564
|
+
**原则**: Direct Framework Usage, No Extra Wrappers
|
|
565
|
+
|
|
566
|
+
**检查项**:
|
|
567
|
+
- [ ] **直接使用框架**: 直接使用 Express/Next.js/Django 等,无自定义封装?
|
|
568
|
+
- [ ] **避免工厂模式**: 无不必要的 Factory/Builder/Abstract Factory?
|
|
569
|
+
- [ ] **避免中间件层**: 无自定义中间件层(除非有明确性能需求)?
|
|
570
|
+
- [ ] **拒绝过度抽象**: 具体实现优先于抽象接口?
|
|
571
|
+
|
|
572
|
+
**违规示例**:
|
|
573
|
+
- ❌ "创建 DatabaseFactory 支持切换 MySQL/PostgreSQL/MongoDB"
|
|
574
|
+
- ❌ "封装 Express 为 CustomHttpServer 类"
|
|
575
|
+
- ✅ "使用 express.Router() 直接定义路由"
|
|
576
|
+
|
|
577
|
+
### Gate 3: Integration-First Gate (Article IX)
|
|
578
|
+
**原则**: Contracts First, Test in Real Environment
|
|
579
|
+
|
|
580
|
+
**检查项**:
|
|
581
|
+
- [ ] **Contract 优先**: API Contract/Schema 在实现前定义?
|
|
582
|
+
- [ ] **真实环境测试**: 集成测试使用真实数据库/服务(Docker)?
|
|
583
|
+
- [ ] **端到端优先**: E2E 测试优先于单元测试(先验证整体流程)?
|
|
584
|
+
- [ ] **避免 Mock**: 最小化 Mock 使用,优先真实依赖?
|
|
585
|
+
|
|
586
|
+
**违规示例**:
|
|
587
|
+
- ❌ "先实现功能,后面再定义 API"
|
|
588
|
+
- ❌ "集成测试全部 Mock 外部依赖"
|
|
589
|
+
- ✅ "先定义 OpenAPI Schema,再实现 handlers"
|
|
590
|
+
|
|
591
|
+
### Phase -1 Gate 决策记录
|
|
592
|
+
*必填*: 记录 Phase -1 Gates 的通过情况和任何例外
|
|
593
|
+
|
|
594
|
+
| Gate | Status | 决策 | 理由(如有例外) |
|
|
595
|
+
|------|--------|------|------------------|
|
|
596
|
+
| Simplicity Gate (VII) | ✅/❌ | {{DECISION}} | {{JUSTIFICATION}} |
|
|
597
|
+
| Anti-Abstraction Gate (VIII) | ✅/❌ | {{DECISION}} | {{JUSTIFICATION}} |
|
|
598
|
+
| Integration-First Gate (IX) | ✅/❌ | {{DECISION}} | {{JUSTIFICATION}} |
|
|
599
|
+
|
|
600
|
+
---
|
|
601
|
+
|
|
602
|
+
## Constitution Check (宪法符合性检查)
|
|
603
|
+
|
|
604
|
+
*GATE: 必须在任务生成前通过*
|
|
605
|
+
|
|
606
|
+
**Reference**: `.claude/constitution/project-constitution.md` (v2.0.0)
|
|
607
|
+
|
|
608
|
+
### Article I: Quality First (质量至上)
|
|
609
|
+
- [ ] **I.1 - NO PARTIAL IMPLEMENTATION**: Epic 范围完整且明确?无占位符?
|
|
610
|
+
- [ ] **I.2 - Testing Mandate**: TDD 流程明确定义?测试覆盖率 ≥80%?
|
|
611
|
+
- [ ] **I.3 - No Simplification**: 避免"暂时简化"的做法?
|
|
612
|
+
- [ ] **I.4 - Quality Gates**: 所有验收标准可测试且明确?
|
|
613
|
+
|
|
614
|
+
### Article II: Architectural Consistency (架构一致性)
|
|
615
|
+
- [ ] **II.1 - NO CODE DUPLICATION**: 识别并计划复用现有组件?
|
|
616
|
+
- [ ] **II.2 - Consistent Naming**: 命名约定遵循现有代码库模式?
|
|
617
|
+
- [ ] **II.3 - Anti-Over-Engineering**: 架构适合问题规模?无过度设计?
|
|
618
|
+
- [ ] **II.4 - Single Responsibility**: 关注点正确分离?模块边界清晰?
|
|
619
|
+
|
|
620
|
+
### Article III: Security First (安全优先)
|
|
621
|
+
- [ ] **III.1 - NO HARDCODED SECRETS**: 密钥管理方案明确(环境变量/密钥服务)?
|
|
622
|
+
- [ ] **III.2 - Input Validation**: 输入验证策略定义?
|
|
623
|
+
- [ ] **III.3 - Least Privilege**: 认证/授权机制设计完整?
|
|
624
|
+
- [ ] **III.4 - Secure by Default**: 数据加密方案明确?审计日志设计?
|
|
625
|
+
|
|
626
|
+
### Article IV: Performance Accountability (性能责任)
|
|
627
|
+
- [ ] **IV.1 - NO RESOURCE LEAKS**: 资源管理考虑(连接池、文件句柄等)?
|
|
628
|
+
- [ ] **IV.2 - Algorithm Efficiency**: 性能基准明确?算法复杂度合理?
|
|
629
|
+
- [ ] **IV.3 - Lazy Loading**: 按需加载策略规划?
|
|
630
|
+
- [ ] **IV.4 - Caching Strategy**: 监控指标和缓存策略定义?
|
|
631
|
+
|
|
632
|
+
### Article V: Maintainability (可维护性)
|
|
633
|
+
- [ ] **V.1 - NO DEAD CODE**: 避免不必要功能?无冗余代码?
|
|
634
|
+
- [ ] **V.2 - Separation of Concerns**: 代码组织清晰?层次分离明确?
|
|
635
|
+
- [ ] **V.3 - Documentation**: 文档完整(架构、API、配置)?
|
|
636
|
+
- [ ] **V.4 - File Size Limits**: 单文件 ≤500行?单函数 ≤50行?
|
|
637
|
+
|
|
638
|
+
### Article VI: Test-First Development (测试优先开发)
|
|
639
|
+
- [ ] **VI.1 - TDD Mandate**: Phase 2 测试优先顺序强制执行?
|
|
640
|
+
- [ ] **VI.2 - Test Independence**: 测试隔离策略定义?
|
|
641
|
+
- [ ] **VI.3 - Meaningful Tests**: 测试质量标准明确(真实场景、错误处理)?
|
|
642
|
+
|
|
643
|
+
### Article VII-IX: Phase -1 Gates (已在上方检查)
|
|
644
|
+
- [ ] **Article VII - Simplicity Gate**: ≤3 个项目/模块?无未来预留?
|
|
645
|
+
- [ ] **Article VIII - Anti-Abstraction Gate**: 直接使用框架?无过度封装?
|
|
646
|
+
- [ ] **Article IX - Integration-First Gate**: Contracts 优先?真实环境测试?
|
|
647
|
+
|
|
648
|
+
### Article X: Requirement Boundary (需求边界)
|
|
649
|
+
- [ ] **X.1 - Forced Clarification**: 所有不明确之处已标记 [NEEDS CLARIFICATION]?
|
|
650
|
+
- [ ] **X.2 - No Speculative Features**: 无推测性功能?仅实现明确需求?
|
|
651
|
+
- [ ] **X.3 - User Story Independence**: 每个故事独立可测试?优先级明确?
|
|
652
|
+
|
|
653
|
+
### Constitutional Violations (宪法违规记录)
|
|
654
|
+
*仅在有需要说明的宪法违规时填写*
|
|
655
|
+
|
|
656
|
+
**重要**: 任何违规都必须有充分理由和缓解措施,否则 EPIC 不通过
|
|
657
|
+
|
|
658
|
+
| 违规的 Article | 具体违规内容 | 为何必须违规 | 缓解措施 | 责任人 |
|
|
659
|
+
|----------------|-------------|-------------|----------|--------|
|
|
660
|
+
| {{ARTICLE_NUM}} | {{VIOLATION_DETAIL}} | {{JUSTIFICATION}} | {{MITIGATION}} | {{OWNER}} |
|
|
661
|
+
|
|
662
|
+
**示例**:
|
|
663
|
+
| 违规的 Article | 具体违规内容 | 为何必须违规 | 缓解措施 | 责任人 |
|
|
664
|
+
|----------------|-------------|-------------|----------|--------|
|
|
665
|
+
| Article VII.1 | 使用4个项目(超过3个限制) | 需要支持Web、iOS、Android、Admin四端 | Admin复用Web组件库,减少重复代码 | Tech Lead |
|
|
666
|
+
| Article VIII.1 | 引入 Repository Pattern | 需要同时支持 PostgreSQL 和 MongoDB | 仅抽象数据访问层,不做过度封装 | Backend Lead |
|
|
667
|
+
|
|
668
|
+
---
|
|
669
|
+
|
|
670
|
+
## 风险管理
|
|
671
|
+
|
|
672
|
+
### 技术风险
|
|
673
|
+
| 风险 | 可能性 | 影响 | 缓解措施 | 负责人 |
|
|
674
|
+
|------|--------|------|----------|--------|
|
|
675
|
+
| {{TECH_RISK_1}} | {{L/M/H}} | {{L/M/H}} | {{MITIGATION}} | {{OWNER}} |
|
|
676
|
+
| {{TECH_RISK_2}} | {{L/M/H}} | {{L/M/H}} | {{MITIGATION}} | {{OWNER}} |
|
|
677
|
+
|
|
678
|
+
### 进度风险
|
|
679
|
+
| 风险 | 可能性 | 影响 | 缓解措施 | 负责人 |
|
|
680
|
+
|------|--------|------|----------|--------|
|
|
681
|
+
| {{SCHEDULE_RISK_1}} | {{L/M/H}} | {{L/M/H}} | {{MITIGATION}} | {{OWNER}} |
|
|
682
|
+
|
|
683
|
+
### 资源风险
|
|
684
|
+
| 风险 | 可能性 | 影响 | 缓解措施 | 负责人 |
|
|
685
|
+
|------|--------|------|----------|--------|
|
|
686
|
+
| {{RESOURCE_RISK_1}} | {{L/M/H}} | {{L/M/H}} | {{MITIGATION}} | {{OWNER}} |
|
|
687
|
+
|
|
688
|
+
---
|
|
689
|
+
|
|
690
|
+
## 发布计划
|
|
691
|
+
|
|
692
|
+
### 发布策略
|
|
693
|
+
- **部署方式**: {{DEPLOYMENT_STRATEGY}}
|
|
694
|
+
- **环境流程**: Dev → Test → Staging → Production
|
|
695
|
+
- **回滚策略**: {{ROLLBACK_STRATEGY}}
|
|
696
|
+
|
|
697
|
+
### 里程碑
|
|
698
|
+
| 里程碑 | 目标 | 日期 | 状态 |
|
|
699
|
+
|--------|------|------|------|
|
|
700
|
+
| **Phase 1 Complete** | 环境就绪 | {{DATE}} | {{STATUS}} |
|
|
701
|
+
| **Phase 2 Complete** | 测试完成(失败) | {{DATE}} | {{STATUS}} |
|
|
702
|
+
| **TEST CHECKPOINT** | 验证测试失败 | {{DATE}} | {{STATUS}} |
|
|
703
|
+
| **Phase 3 Complete** | 核心实现(测试通过) | {{DATE}} | {{STATUS}} |
|
|
704
|
+
| **Phase 4 Complete** | 集成完成 | {{DATE}} | {{STATUS}} |
|
|
705
|
+
| **Phase 5 Complete** | 生产就绪 | {{DATE}} | {{STATUS}} |
|
|
706
|
+
|
|
707
|
+
### 部署检查清单
|
|
708
|
+
- [ ] 环境配置验证
|
|
709
|
+
- [ ] 数据库迁移测试
|
|
710
|
+
- [ ] 性能测试通过
|
|
711
|
+
- [ ] 安全扫描通过
|
|
712
|
+
- [ ] 监控和告警配置
|
|
713
|
+
- [ ] 回滚程序验证
|
|
714
|
+
- [ ] 文档更新完成
|
|
715
|
+
- [ ] 团队培训完成
|
|
716
|
+
|
|
717
|
+
---
|
|
718
|
+
|
|
719
|
+
## Progress Tracking (进度跟踪)
|
|
720
|
+
|
|
721
|
+
*在 Epic 创建过程中更新*
|
|
722
|
+
|
|
723
|
+
### 完成状态
|
|
724
|
+
- [ ] 概述定义清晰
|
|
725
|
+
- [ ] 范围界定明确
|
|
726
|
+
- [ ] 技术方案完整
|
|
727
|
+
- [ ] 数据模型设计
|
|
728
|
+
- [ ] API 契约定义
|
|
729
|
+
- [ ] 实施阶段规划
|
|
730
|
+
- [ ] 依赖关系识别
|
|
731
|
+
- [ ] 质量标准定义
|
|
732
|
+
- [ ] Constitution Check 通过
|
|
733
|
+
- [ ] 风险评估完成
|
|
734
|
+
- [ ] 发布计划制定
|
|
735
|
+
|
|
736
|
+
### 质量检查
|
|
737
|
+
- [ ] 所有 PRD 用户故事已映射
|
|
738
|
+
- [ ] 技术方案可行性验证
|
|
739
|
+
- [ ] TDD 流程明确定义
|
|
740
|
+
- [ ] API 契约完整
|
|
741
|
+
- [ ] 依赖全部识别
|
|
742
|
+
- [ ] 风险评估充分
|
|
743
|
+
|
|
744
|
+
### 闸门状态
|
|
745
|
+
- [ ] Constitution Check: {{PASS|FAIL}}
|
|
746
|
+
- [ ] 技术可行性: {{PASS|FAIL}}
|
|
747
|
+
- [ ] 依赖就绪: {{PASS|FAIL}}
|
|
748
|
+
|
|
749
|
+
**准备好进行任务生成**: {{YES|NO}}
|
|
750
|
+
|
|
751
|
+
---
|
|
752
|
+
|
|
753
|
+
## 相关文档
|
|
754
|
+
|
|
755
|
+
### 输入文档
|
|
756
|
+
- **PRD**: [PRD.md](PRD.md)
|
|
757
|
+
- **研究材料**: [research/](research/)
|
|
758
|
+
|
|
759
|
+
### 输出文档
|
|
760
|
+
- **Tasks**: 将由 planner agent 生成 TASKS.md(TDD 顺序)
|
|
761
|
+
- **测试计划**: 将由 qa-tester agent 生成
|
|
762
|
+
- **安全计划**: 将由 security-reviewer agent 生成
|
|
763
|
+
|
|
764
|
+
---
|
|
765
|
+
|
|
766
|
+
**Generated by**: planner agent
|
|
767
|
+
**Based on**: PRD.md, CC-DevFlow Constitution v2.0.0
|
|
768
|
+
**Template Version**: 2.0.0 (Self-Executable)
|
|
769
|
+
**Next Step**: Generate TASKS.md with TDD order (Phase 2 Tests → Phase 3 Implementation)
|
|
770
|
+
|
|
771
|
+
---
|
|
772
|
+
|
|
773
|
+
## Validation Checklist (验证清单)
|
|
774
|
+
|
|
775
|
+
*GATE: Epic 标记为完成前检查*
|
|
776
|
+
|
|
777
|
+
### PRD 对齐
|
|
778
|
+
- [ ] 所有用户故事已映射到 Epic
|
|
779
|
+
- [ ] 所有验收标准已包含
|
|
780
|
+
- [ ] 成功指标与 PRD 一致
|
|
781
|
+
- [ ] 技术约束已考虑
|
|
782
|
+
|
|
783
|
+
### 技术方案完整性
|
|
784
|
+
- [ ] 架构设计清晰
|
|
785
|
+
- [ ] 数据模型完整
|
|
786
|
+
- [ ] API 契约定义
|
|
787
|
+
- [ ] 技术栈选型合理
|
|
788
|
+
|
|
789
|
+
### TDD 准备
|
|
790
|
+
- [ ] Phase 2 明确定义为"Tests First"
|
|
791
|
+
- [ ] TEST VERIFICATION CHECKPOINT 已标记
|
|
792
|
+
- [ ] 测试策略明确
|
|
793
|
+
- [ ] Phase 3 依赖 Phase 2 完成
|
|
794
|
+
|
|
795
|
+
### 质量保证
|
|
796
|
+
- [ ] DoD 明确且可验证
|
|
797
|
+
- [ ] Constitution Check 通过
|
|
798
|
+
- [ ] 风险已识别和评估
|
|
799
|
+
- [ ] 回滚策略明确
|
|
800
|
+
|
|
801
|
+
### 可执行性
|
|
802
|
+
- [ ] 实施阶段清晰
|
|
803
|
+
- [ ] 依赖已识别
|
|
804
|
+
- [ ] 资源需求明确
|
|
805
|
+
- [ ] 时间估算合理
|