soloforge 1.0.0
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/LICENSE +21 -0
- package/README.md +203 -0
- package/dist/adapters/claude_code/claude_md.d.ts +3 -0
- package/dist/adapters/claude_code/claude_md.d.ts.map +1 -0
- package/dist/adapters/claude_code/claude_md.js +79 -0
- package/dist/adapters/claude_code/claude_md.js.map +1 -0
- package/dist/adapters/claude_code/hooks.d.ts +3 -0
- package/dist/adapters/claude_code/hooks.d.ts.map +1 -0
- package/dist/adapters/claude_code/hooks.js +30 -0
- package/dist/adapters/claude_code/hooks.js.map +1 -0
- package/dist/adapters/claude_code/server.d.ts +10 -0
- package/dist/adapters/claude_code/server.d.ts.map +1 -0
- package/dist/adapters/claude_code/server.js +75 -0
- package/dist/adapters/claude_code/server.js.map +1 -0
- package/dist/adapters/claude_code/tools.d.ts +15 -0
- package/dist/adapters/claude_code/tools.d.ts.map +1 -0
- package/dist/adapters/claude_code/tools.js +758 -0
- package/dist/adapters/claude_code/tools.js.map +1 -0
- package/dist/adapters/trae/trae_config.d.ts +2 -0
- package/dist/adapters/trae/trae_config.d.ts.map +1 -0
- package/dist/adapters/trae/trae_config.js +22 -0
- package/dist/adapters/trae/trae_config.js.map +1 -0
- package/dist/adapters/trae/trae_rules.d.ts +3 -0
- package/dist/adapters/trae/trae_rules.d.ts.map +1 -0
- package/dist/adapters/trae/trae_rules.js +85 -0
- package/dist/adapters/trae/trae_rules.js.map +1 -0
- package/dist/bin/soloforge.d.ts +3 -0
- package/dist/bin/soloforge.d.ts.map +1 -0
- package/dist/bin/soloforge.js +353 -0
- package/dist/bin/soloforge.js.map +1 -0
- package/dist/engine/adr_recorder.d.ts +13 -0
- package/dist/engine/adr_recorder.d.ts.map +1 -0
- package/dist/engine/adr_recorder.js +132 -0
- package/dist/engine/adr_recorder.js.map +1 -0
- package/dist/engine/change_coordinator.d.ts +17 -0
- package/dist/engine/change_coordinator.d.ts.map +1 -0
- package/dist/engine/change_coordinator.js +138 -0
- package/dist/engine/change_coordinator.js.map +1 -0
- package/dist/engine/classifier.d.ts +7 -0
- package/dist/engine/classifier.d.ts.map +1 -0
- package/dist/engine/classifier.js +135 -0
- package/dist/engine/classifier.js.map +1 -0
- package/dist/engine/code_reviewer.d.ts +15 -0
- package/dist/engine/code_reviewer.d.ts.map +1 -0
- package/dist/engine/code_reviewer.js +371 -0
- package/dist/engine/code_reviewer.js.map +1 -0
- package/dist/engine/confidence_scorer.d.ts +11 -0
- package/dist/engine/confidence_scorer.d.ts.map +1 -0
- package/dist/engine/confidence_scorer.js +30 -0
- package/dist/engine/confidence_scorer.js.map +1 -0
- package/dist/engine/contract_guard.d.ts +10 -0
- package/dist/engine/contract_guard.d.ts.map +1 -0
- package/dist/engine/contract_guard.js +471 -0
- package/dist/engine/contract_guard.js.map +1 -0
- package/dist/engine/convention_detector.d.ts +7 -0
- package/dist/engine/convention_detector.d.ts.map +1 -0
- package/dist/engine/convention_detector.js +93 -0
- package/dist/engine/convention_detector.js.map +1 -0
- package/dist/engine/debt_reporter.d.ts +4 -0
- package/dist/engine/debt_reporter.d.ts.map +1 -0
- package/dist/engine/debt_reporter.js +67 -0
- package/dist/engine/debt_reporter.js.map +1 -0
- package/dist/engine/debt_tracker.d.ts +20 -0
- package/dist/engine/debt_tracker.d.ts.map +1 -0
- package/dist/engine/debt_tracker.js +152 -0
- package/dist/engine/debt_tracker.js.map +1 -0
- package/dist/engine/debugger.d.ts +3 -0
- package/dist/engine/debugger.d.ts.map +1 -0
- package/dist/engine/debugger.js +291 -0
- package/dist/engine/debugger.js.map +1 -0
- package/dist/engine/delivery.d.ts +15 -0
- package/dist/engine/delivery.d.ts.map +1 -0
- package/dist/engine/delivery.js +182 -0
- package/dist/engine/delivery.js.map +1 -0
- package/dist/engine/dependency_scanner.d.ts +13 -0
- package/dist/engine/dependency_scanner.d.ts.map +1 -0
- package/dist/engine/dependency_scanner.js +275 -0
- package/dist/engine/dependency_scanner.js.map +1 -0
- package/dist/engine/evolver.d.ts +15 -0
- package/dist/engine/evolver.d.ts.map +1 -0
- package/dist/engine/evolver.js +167 -0
- package/dist/engine/evolver.js.map +1 -0
- package/dist/engine/failure_classifier.d.ts +11 -0
- package/dist/engine/failure_classifier.d.ts.map +1 -0
- package/dist/engine/failure_classifier.js +120 -0
- package/dist/engine/failure_classifier.js.map +1 -0
- package/dist/engine/feasibility_checker.d.ts +6 -0
- package/dist/engine/feasibility_checker.d.ts.map +1 -0
- package/dist/engine/feasibility_checker.js +88 -0
- package/dist/engine/feasibility_checker.js.map +1 -0
- package/dist/engine/git_deps.d.ts +37 -0
- package/dist/engine/git_deps.d.ts.map +1 -0
- package/dist/engine/git_deps.js +3 -0
- package/dist/engine/git_deps.js.map +1 -0
- package/dist/engine/impact_analyzer.d.ts +10 -0
- package/dist/engine/impact_analyzer.d.ts.map +1 -0
- package/dist/engine/impact_analyzer.js +171 -0
- package/dist/engine/impact_analyzer.js.map +1 -0
- package/dist/engine/intent_expander.d.ts +17 -0
- package/dist/engine/intent_expander.d.ts.map +1 -0
- package/dist/engine/intent_expander.js +447 -0
- package/dist/engine/intent_expander.js.map +1 -0
- package/dist/engine/knowledge_manager.d.ts +76 -0
- package/dist/engine/knowledge_manager.d.ts.map +1 -0
- package/dist/engine/knowledge_manager.js +781 -0
- package/dist/engine/knowledge_manager.js.map +1 -0
- package/dist/engine/migration_guard.d.ts +3 -0
- package/dist/engine/migration_guard.d.ts.map +1 -0
- package/dist/engine/migration_guard.js +235 -0
- package/dist/engine/migration_guard.js.map +1 -0
- package/dist/engine/observability.d.ts +33 -0
- package/dist/engine/observability.d.ts.map +1 -0
- package/dist/engine/observability.js +312 -0
- package/dist/engine/observability.js.map +1 -0
- package/dist/engine/onboarding.d.ts +27 -0
- package/dist/engine/onboarding.d.ts.map +1 -0
- package/dist/engine/onboarding.js +362 -0
- package/dist/engine/onboarding.js.map +1 -0
- package/dist/engine/prompt_experiment.d.ts +18 -0
- package/dist/engine/prompt_experiment.d.ts.map +1 -0
- package/dist/engine/prompt_experiment.js +127 -0
- package/dist/engine/prompt_experiment.js.map +1 -0
- package/dist/engine/resilience.d.ts +20 -0
- package/dist/engine/resilience.d.ts.map +1 -0
- package/dist/engine/resilience.js +210 -0
- package/dist/engine/resilience.js.map +1 -0
- package/dist/engine/scaffolder.d.ts +9 -0
- package/dist/engine/scaffolder.d.ts.map +1 -0
- package/dist/engine/scaffolder.js +222 -0
- package/dist/engine/scaffolder.js.map +1 -0
- package/dist/engine/scope_controller.d.ts +3 -0
- package/dist/engine/scope_controller.d.ts.map +1 -0
- package/dist/engine/scope_controller.js +121 -0
- package/dist/engine/scope_controller.js.map +1 -0
- package/dist/engine/task_context.d.ts +34 -0
- package/dist/engine/task_context.d.ts.map +1 -0
- package/dist/engine/task_context.js +321 -0
- package/dist/engine/task_context.js.map +1 -0
- package/dist/engine/task_planner.d.ts +11 -0
- package/dist/engine/task_planner.d.ts.map +1 -0
- package/dist/engine/task_planner.js +267 -0
- package/dist/engine/task_planner.js.map +1 -0
- package/dist/engine/team_awareness.d.ts +12 -0
- package/dist/engine/team_awareness.d.ts.map +1 -0
- package/dist/engine/team_awareness.js +121 -0
- package/dist/engine/team_awareness.js.map +1 -0
- package/dist/engine/test_generator.d.ts +9 -0
- package/dist/engine/test_generator.d.ts.map +1 -0
- package/dist/engine/test_generator.js +241 -0
- package/dist/engine/test_generator.js.map +1 -0
- package/dist/engine/test_quality.d.ts +9 -0
- package/dist/engine/test_quality.d.ts.map +1 -0
- package/dist/engine/test_quality.js +256 -0
- package/dist/engine/test_quality.js.map +1 -0
- package/dist/engine/traceability.d.ts +3 -0
- package/dist/engine/traceability.d.ts.map +1 -0
- package/dist/engine/traceability.js +137 -0
- package/dist/engine/traceability.js.map +1 -0
- package/dist/engine/verifier.d.ts +3 -0
- package/dist/engine/verifier.d.ts.map +1 -0
- package/dist/engine/verifier.js +202 -0
- package/dist/engine/verifier.js.map +1 -0
- package/dist/engine/workspace_manager.d.ts +29 -0
- package/dist/engine/workspace_manager.d.ts.map +1 -0
- package/dist/engine/workspace_manager.js +77 -0
- package/dist/engine/workspace_manager.js.map +1 -0
- package/dist/git/operations.d.ts +57 -0
- package/dist/git/operations.d.ts.map +1 -0
- package/dist/git/operations.js +215 -0
- package/dist/git/operations.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/conflict_detector.d.ts +6 -0
- package/dist/knowledge/conflict_detector.d.ts.map +1 -0
- package/dist/knowledge/conflict_detector.js +19 -0
- package/dist/knowledge/conflict_detector.js.map +1 -0
- package/dist/knowledge/health_checker.d.ts +10 -0
- package/dist/knowledge/health_checker.d.ts.map +1 -0
- package/dist/knowledge/health_checker.js +61 -0
- package/dist/knowledge/health_checker.js.map +1 -0
- package/dist/knowledge/index_manager.d.ts +35 -0
- package/dist/knowledge/index_manager.d.ts.map +1 -0
- package/dist/knowledge/index_manager.js +209 -0
- package/dist/knowledge/index_manager.js.map +1 -0
- package/dist/knowledge/loader.d.ts +13 -0
- package/dist/knowledge/loader.d.ts.map +1 -0
- package/dist/knowledge/loader.js +161 -0
- package/dist/knowledge/loader.js.map +1 -0
- package/dist/knowledge/writer.d.ts +15 -0
- package/dist/knowledge/writer.d.ts.map +1 -0
- package/dist/knowledge/writer.js +98 -0
- package/dist/knowledge/writer.js.map +1 -0
- package/dist/types.d.ts +724 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
- package/templates/config.yaml +53 -0
- package/templates/knowledge/acceptance_templates/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +39 -0
- package/templates/knowledge/acceptance_templates//345/211/215/347/253/257/351/241/265/351/235/242/351/252/214/346/224/266/346/270/205/345/215/225.md +27 -0
- package/templates/knowledge/acceptance_templates//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +180 -0
- package/templates/knowledge/acceptance_templates//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md +26 -0
- package/templates/knowledge/acceptance_templates//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md +51 -0
- package/templates/knowledge/acceptance_templates//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/350/256/276/350/256/241/346/250/241/347/211/210.md +58 -0
- package/templates/knowledge/acceptance_templates//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md +53 -0
- package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/351/252/214/346/224/266/346/270/205/345/215/225.md +24 -0
- package/templates/knowledge/acceptance_templates//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +42 -0
- package/templates/knowledge/acceptance_templates//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md +39 -0
- package/templates/knowledge/acceptance_templates//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +40 -0
- package/templates/knowledge/acceptance_templates//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md +42 -0
- package/templates/knowledge/acceptance_templates//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +26 -0
- package/templates/knowledge/acceptance_templates//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +47 -0
- package/templates/knowledge/acceptance_templates//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md +44 -0
- package/templates/knowledge/domain//345/244/232/347/247/237/346/210/267.md +35 -0
- package/templates/knowledge/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +34 -0
- package/templates/knowledge/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +37 -0
- package/templates/knowledge/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +37 -0
- package/templates/knowledge/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +36 -0
- package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +38 -0
- package/templates/knowledge/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +34 -0
- package/templates/knowledge/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +24 -0
- package/templates/knowledge/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +36 -0
- package/templates/knowledge/procedures/Figma/344/272/244/344/273/230/346/265/201/347/250/213.md +35 -0
- package/templates/knowledge/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +28 -0
- package/templates/knowledge/procedures//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md +33 -0
- package/templates/knowledge/procedures//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md +31 -0
- package/templates/knowledge/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +37 -0
- package/templates/knowledge/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +43 -0
- package/templates/knowledge/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +46 -0
- package/templates/knowledge/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +38 -0
- package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/346/265/201/347/250/213.md +30 -0
- package/templates/knowledge/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +24 -0
- package/templates/knowledge/procedures//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +40 -0
- package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +45 -0
- package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/347/250/213.md +33 -0
- package/templates/knowledge/procedures//347/274/272/351/231/267/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +28 -0
- package/templates/knowledge/procedures//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md +29 -0
- package/templates/knowledge/procedures//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +43 -0
- package/templates/knowledge/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +45 -0
- package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md +36 -0
- package/templates/knowledge/procedures//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md +32 -0
- package/templates/knowledge/procedures//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +40 -0
- package/templates/knowledge/procedures//351/252/214/350/257/201/350/256/241/345/210/222/346/265/201/347/250/213.md +32 -0
- package/templates/knowledge/product_profiles/b2b-internal.yaml +35 -0
- package/templates/knowledge/product_profiles/b2c.yaml +37 -0
- package/templates/knowledge/product_profiles/saas.yaml +35 -0
- package/templates/knowledge/review_rules//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md +79 -0
- package/templates/knowledge/review_rules//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
- package/templates/knowledge/review_rules//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +61 -0
- package/templates/knowledge/review_rules//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
- package/templates/knowledge/review_rules//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +62 -0
- package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +80 -0
- package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +32 -0
- package/templates/patterns/React/345/210/227/350/241/250/350/241/250/346/240/274/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/React/346/216/245/345/217/243/351/233/206/346/210/220/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +28 -0
- package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +31 -0
- package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +27 -0
- package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -0
- package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +25 -0
- package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +39 -0
- package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +34 -0
- package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +27 -0
- package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +35 -0
- package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +30 -0
- package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +28 -0
- package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +24 -0
- package/templates/patterns//351/242/206/345/237/237/351/251/261/345/212/250/350/256/276/350/256/241/350/247/204/350/214/203.md +29 -0
- package/templates/scaffolds/react/Form.tsx.hbs +16 -0
- package/templates/scaffolds/react/List.tsx.hbs +28 -0
- package/templates/scaffolds/react/Page.test.tsx.hbs +10 -0
- package/templates/scaffolds/react/Page.tsx.hbs +14 -0
- package/templates/scaffolds/react/README.md.hbs +44 -0
- package/templates/scaffolds/react/service.ts.hbs +37 -0
- package/templates/scaffolds/react/types.ts.hbs +6 -0
- package/templates/scaffolds/react/use{{ModuleName}}.ts.hbs +88 -0
- package/templates/scaffolds/spring-boot/ApiContract.md.hbs +110 -0
- package/templates/scaffolds/spring-boot/Controller.java.hbs +43 -0
- package/templates/scaffolds/spring-boot/DTO.java.hbs +9 -0
- package/templates/scaffolds/spring-boot/Entity.java.hbs +12 -0
- package/templates/scaffolds/spring-boot/ErrorCode.java.hbs +28 -0
- package/templates/scaffolds/spring-boot/Mapper.java.hbs +9 -0
- package/templates/scaffolds/spring-boot/PageResponse.java.hbs +29 -0
- package/templates/scaffolds/spring-boot/Service.java.hbs +12 -0
- package/templates/scaffolds/spring-boot/ServiceImpl.java.hbs +48 -0
- package/templates/scaffolds/spring-boot/ServiceTest.java.hbs +22 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 接口设计模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 接口设计, API设计, 接口文档, 接口定义
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 接口设计文档
|
|
10
|
+
|
|
11
|
+
## 1. 接口总览
|
|
12
|
+
| 序号 | 路径 | 方法 | 认证 | 描述 |
|
|
13
|
+
|------|------|------|------|------|
|
|
14
|
+
| | | | | |
|
|
15
|
+
|
|
16
|
+
## 2. 接口详情
|
|
17
|
+
|
|
18
|
+
### 2.1 [接口名称]
|
|
19
|
+
- **路径**: `POST /api/v1/xxx`
|
|
20
|
+
- **认证**: Bearer Token / API Key
|
|
21
|
+
- **幂等性**: 是/否(幂等键:xxx)
|
|
22
|
+
|
|
23
|
+
**请求参数**:
|
|
24
|
+
| 字段 | 类型 | 必填 | 校验规则 | 说明 |
|
|
25
|
+
|------|------|------|---------|------|
|
|
26
|
+
| | | | | |
|
|
27
|
+
|
|
28
|
+
**响应结构**:
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"code": 0,
|
|
32
|
+
"message": "success",
|
|
33
|
+
"data": {}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**错误码**:
|
|
38
|
+
| 错误码 | HTTP 状态码 | 触发条件 | 用户提示 |
|
|
39
|
+
|--------|-----------|---------|---------|
|
|
40
|
+
| | | | |
|
|
41
|
+
|
|
42
|
+
## 3. 枚举值定义
|
|
43
|
+
| 枚举名 | 值 | 含义 |
|
|
44
|
+
|--------|------|------|
|
|
45
|
+
| | | |
|
|
46
|
+
|
|
47
|
+
## 4. 页面交互映射
|
|
48
|
+
| 页面操作 | 触发接口 | 加载状态 | 成功行为 | 失败行为 |
|
|
49
|
+
|---------|---------|---------|---------|---------|
|
|
50
|
+
| | | | | |
|
|
51
|
+
|
|
52
|
+
## 5. 接口规范检查
|
|
53
|
+
- [ ] 是否定义了接口版本号和演进策略(如 /api/v1/)
|
|
54
|
+
- [ ] 是否有幂等设计(写接口需标注幂等键或唯一约束)
|
|
55
|
+
- [ ] 错误码体系是否完整(业务码 + HTTP 状态码双映射)
|
|
56
|
+
- [ ] 是否有分页参数上限限制(防止恶意大翻页)
|
|
57
|
+
- [ ] 是否有接口限流策略(QPS/并发上限)
|
|
58
|
+
- [ ] 批量操作是否有数量上限(≤ 500 条)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 故障复盘模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 故障复盘, 事故复盘, postmortem, P0复盘, 线上事故复盘
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 故障复盘报告
|
|
10
|
+
|
|
11
|
+
## 1. 故障概要
|
|
12
|
+
- **发生时间**:
|
|
13
|
+
- **持续时间**:
|
|
14
|
+
- **影响范围**(用户数/业务量):
|
|
15
|
+
- **严重程度**:P0/P1
|
|
16
|
+
- **处理人**:
|
|
17
|
+
|
|
18
|
+
## 2. 时间线
|
|
19
|
+
| 时间 | 事件 | 操作人 |
|
|
20
|
+
|------|------|--------|
|
|
21
|
+
| | 发现问题 | |
|
|
22
|
+
| | 通知干系人 | |
|
|
23
|
+
| | 执行止血 | |
|
|
24
|
+
| | 定位根因 | |
|
|
25
|
+
| | 部署修复 | |
|
|
26
|
+
| | 确认恢复 | |
|
|
27
|
+
|
|
28
|
+
## 3. 根因分析
|
|
29
|
+
- **直接原因**:
|
|
30
|
+
- **深层原因**(5 Whys):
|
|
31
|
+
1. 为什么发生?
|
|
32
|
+
2. 为什么没被发现?
|
|
33
|
+
3. 为什么没被阻止?
|
|
34
|
+
4. 为什么监控没告警?
|
|
35
|
+
5. 系统性原因是什么?
|
|
36
|
+
|
|
37
|
+
## 4. 修复过程
|
|
38
|
+
- 止血方案:
|
|
39
|
+
- 最终修复:
|
|
40
|
+
- 修复验证结果:
|
|
41
|
+
|
|
42
|
+
## 5. 暴露的监控盲区
|
|
43
|
+
| 监控项 | 当前状态 | 改进方案 | 计划完成时间 |
|
|
44
|
+
|--------|---------|---------|------------|
|
|
45
|
+
| | | | |
|
|
46
|
+
|
|
47
|
+
## 6. 后续改进项
|
|
48
|
+
| 编号 | 改进项 | 类型 | 责任人 | 计划时间 |
|
|
49
|
+
|------|--------|------|--------|---------|
|
|
50
|
+
| | 补监控 | 防复发 | | |
|
|
51
|
+
| | 补测试 | 防复发 | | |
|
|
52
|
+
| | 更新知识条目 | 流程 | | |
|
|
53
|
+
| | 架构优化 | 根治 | | |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 数据库变更方案模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 数据库变更方案, DDL变更, 表结构变更方案, migration方案
|
|
5
|
+
scope: [backend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 数据库变更方案
|
|
10
|
+
|
|
11
|
+
## 1. 变更概述
|
|
12
|
+
- 变更类型:加列 / 改列 / 删列 / 加索引 / 新建表 / 数据迁移
|
|
13
|
+
- 涉及表:
|
|
14
|
+
- 变更原因:
|
|
15
|
+
|
|
16
|
+
## 2. 变更详情
|
|
17
|
+
### 正向 DDL
|
|
18
|
+
```sql
|
|
19
|
+
-- 正向 migration
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 回滚 DDL
|
|
23
|
+
```sql
|
|
24
|
+
-- 回滚 migration
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 3. 兼容性分析
|
|
28
|
+
| 层级 | 影响 | 兼容策略 |
|
|
29
|
+
|------|------|---------|
|
|
30
|
+
| 数据库 | | |
|
|
31
|
+
| 接口契约 | | |
|
|
32
|
+
| 前端展示 | | |
|
|
33
|
+
| 导出逻辑 | | |
|
|
34
|
+
|
|
35
|
+
## 4. 数据迁移方案(如需要)
|
|
36
|
+
- 数据量评估:
|
|
37
|
+
- 分批策略(每批条数/间隔):
|
|
38
|
+
- 预计耗时:
|
|
39
|
+
- 数据校验方式:
|
|
40
|
+
|
|
41
|
+
## 5. 执行计划
|
|
42
|
+
- 大表评估(>100万行):
|
|
43
|
+
- 执行时间窗口(低峰期):
|
|
44
|
+
- 备份方案:
|
|
45
|
+
- 监控告警:
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: database-change
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 数据库变更, 表结构修改, migration, DDL, 加字段, 建表, 索引, 数据迁移, 表结构变更
|
|
5
|
+
scope: [backend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 验收项
|
|
10
|
+
- [AC-01] migration 脚本有对应回滚脚本 (check: ls U{version}__*.sql {dir})
|
|
11
|
+
- [AC-02] migration 脚本幂等(可重复执行不出错) (check: grep -c 'IF NOT EXISTS\|IF EXISTS' {file})
|
|
12
|
+
- [AC-03] 新增列有默认值或允许 NULL(向前兼容) (check: grep 'ALTER TABLE.*ADD COLUMN' {file} | grep -c 'DEFAULT\|NULL')
|
|
13
|
+
- [AC-04] migration 脚本无业务逻辑(无 SELECT/INSERT/UPDATE 业务数据) (check: grep -ic 'INSERT INTO\|UPDATE.*SET' {file})
|
|
14
|
+
- [AC-05] 大数据量迁移使用分批策略(每批 1000 条) (check: grep -c 'LIMIT.*OFFSET\|BATCH\|分批\|batchSize' {file})
|
|
15
|
+
- [AC-06] 禁止 DROP COLUMN(应标记 deprecated 后续清理) (check: grep -ic 'DROP COLUMN\|DROP TABLE' {file})
|
|
16
|
+
- [AC-07] 新建索引评估对大表的影响(>100 万行使用 ONLINE DDL) (check: grep -c 'ONLINE\|ALGORITHM\|pt-online' {file})
|
|
17
|
+
- [AC-08] 字段命名遵循项目约定(snake_case,无缩写歧义) (check: grep -P '[A-Z]' {file} | grep -v '^\s*--' | head -5)
|
|
18
|
+
- [AC-09] 迁移脚本是否向前兼容(先加列后删列,先加索引后删除旧索引) (check: grep -c 'ADD.*COLUMN\|ADD.*INDEX' {file})
|
|
19
|
+
- [AC-10] 是否有回滚脚本并在测试环境验证通过 (check: ls {dir}/rollback_*.sql {dir}/down_*.sql 2>/dev/null | wc -l)
|
|
20
|
+
- [AC-11] 新增字段是否有默认值(非 NULL 列必须有 DEFAULT) (check: grep 'ADD COLUMN' {file} | grep -cv 'DEFAULT\|NULL')
|
|
21
|
+
- [AC-12] 新增索引是否评估对写入性能的影响(大表需评审) (check: grep -c 'CREATE.*INDEX\|ADD.*INDEX' {file})
|
|
22
|
+
- [AC-13] 大表变更是否使用 ONLINE DDL(避免锁表) (check: grep -c 'ALGORITHM.*INPLACE\|ALGORITHM.*ONLINE\|pt-online\|ONLINE' {file})
|
|
23
|
+
- [AC-14] 数据迁移脚本是否有数据校验步骤(迁移前后行数对比/哈希校验) (check: grep -c 'COUNT(\*)\|checksum\|MD5\|SHA\|校验\|验证' {file})
|
|
24
|
+
- [AC-15] 迁移脚本是否纳入版本控制(Git tracked) (check: git ls-files {file} | wc -l)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 架构设计模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 架构设计, 模块设计, 系统设计, 技术方案
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 架构设计文档
|
|
10
|
+
|
|
11
|
+
## 1. 需求概要
|
|
12
|
+
- 业务背景:
|
|
13
|
+
- 核心需求:
|
|
14
|
+
- 非功能需求(性能/安全/可用性):
|
|
15
|
+
|
|
16
|
+
## 2. 模块划分
|
|
17
|
+
- 模块清单与职责边界
|
|
18
|
+
- 模块间依赖关系图
|
|
19
|
+
- 核心接口契约(模块间调用方式)
|
|
20
|
+
|
|
21
|
+
## 3. 数据流向
|
|
22
|
+
- 主流程数据流向图
|
|
23
|
+
- 关键数据结构定义
|
|
24
|
+
- 数据存储方案(数据库/缓存/文件)
|
|
25
|
+
|
|
26
|
+
## 4. 技术选型与依据
|
|
27
|
+
| 技术决策 | 候选方案 | 最终选择 | 选择理由 | 放弃方案原因 |
|
|
28
|
+
|---------|---------|---------|---------|------------|
|
|
29
|
+
| | | | | |
|
|
30
|
+
|
|
31
|
+
## 5. 状态机定义
|
|
32
|
+
- 核心业务状态流转
|
|
33
|
+
- 触发条件、守卫条件、失败/回滚动作
|
|
34
|
+
|
|
35
|
+
## 6. 风险点与应对
|
|
36
|
+
| 风险 | 影响 | 概率 | 应对方案 |
|
|
37
|
+
|------|------|------|---------|
|
|
38
|
+
| | | | |
|
|
39
|
+
|
|
40
|
+
## 7. 扩展点
|
|
41
|
+
- 已识别的未来扩展方向
|
|
42
|
+
- 预留的扩展机制(接口/配置/插件)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 测试计划模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 测试计划, 验证计划, 测试策略, 测试规划
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 测试计划
|
|
10
|
+
|
|
11
|
+
## 1. 测试范围
|
|
12
|
+
- 关联任务卡片:
|
|
13
|
+
- 测试目标(验证哪些功能点):
|
|
14
|
+
- 不在测试范围内的事项:
|
|
15
|
+
|
|
16
|
+
## 2. 测试条目
|
|
17
|
+
| 编号 | 功能点 | 测试类型 | 覆盖策略 | 关联任务卡 | 优先级 |
|
|
18
|
+
|------|--------|---------|---------|-----------|--------|
|
|
19
|
+
| T-01 | 正常流程 | 集成测试 | 正常路径 | | P0 |
|
|
20
|
+
| T-02 | 参数缺失 | 单元测试 | 错误路径 | | P0 |
|
|
21
|
+
| T-03 | 权限不足 | 集成测试 | 错误路径 | | P0 |
|
|
22
|
+
| T-04 | 边界值 | 单元测试 | 边界场景 | | P1 |
|
|
23
|
+
|
|
24
|
+
## 3. 环境与数据
|
|
25
|
+
- 测试环境:
|
|
26
|
+
- 数据准备方式(业务API/页面操作/SQL初始化脚本):
|
|
27
|
+
- 前置依赖(DDL迁移/配置项/第三方Mock):
|
|
28
|
+
|
|
29
|
+
## 4. 执行顺序
|
|
30
|
+
1. DDL 迁移验证
|
|
31
|
+
2. 单元测试
|
|
32
|
+
3. 集成测试
|
|
33
|
+
4. 端到端测试
|
|
34
|
+
|
|
35
|
+
## 5. 验收标准
|
|
36
|
+
- [ ] 所有 P0 测试条目通过
|
|
37
|
+
- [ ] 所有 P1 测试条目通过
|
|
38
|
+
- [ ] 高风险变更有运行时验证
|
|
39
|
+
- [ ] DDL 变更有回滚验证
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 详细设计模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 详细设计, 模块内部设计, 实现设计
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 详细设计文档
|
|
10
|
+
|
|
11
|
+
## 1. 设计前提
|
|
12
|
+
- 对接的架构设计文档:
|
|
13
|
+
- 依赖的接口/模块:
|
|
14
|
+
|
|
15
|
+
## 2. 数据结构(DDL/Model)
|
|
16
|
+
- 表结构定义(字段名、类型、约束、注释、默认值)
|
|
17
|
+
- 实体关系图
|
|
18
|
+
- 索引策略
|
|
19
|
+
- 审计字段(create_time/update_time/create_by/update_by)
|
|
20
|
+
|
|
21
|
+
## 3. 接口定义
|
|
22
|
+
- 内部接口(模块间调用)
|
|
23
|
+
- 方法签名、入参、出参、异常
|
|
24
|
+
- 幂等性声明
|
|
25
|
+
|
|
26
|
+
## 4. 核心逻辑
|
|
27
|
+
- 状态机定义(状态、事件、守卫、动作)
|
|
28
|
+
- 异常处理策略(每种异常的处理方式)
|
|
29
|
+
- 并发控制方案(乐观锁/悲观锁/分布式锁/幂等键)
|
|
30
|
+
- 缓存方案(缓存 key、TTL、失效策略)
|
|
31
|
+
|
|
32
|
+
## 5. 前后端适配矩阵
|
|
33
|
+
| 前端页面/组件 | 后端接口 | 数据字段映射 | 交互行为 |
|
|
34
|
+
|-------------|---------|------------|---------|
|
|
35
|
+
| | | | |
|
|
36
|
+
|
|
37
|
+
## 6. 菜单权限映射
|
|
38
|
+
| 菜单路径 | 角色 | 权限标识 | 关联接口 |
|
|
39
|
+
|---------|------|---------|---------|
|
|
40
|
+
| | | | |
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 迁移评估模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 迁移评估, 技术迁移, 框架升级, 系统迁移评估
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 迁移评估报告
|
|
10
|
+
|
|
11
|
+
## 1. 迁移范围
|
|
12
|
+
- 当前技术/版本:
|
|
13
|
+
- 目标技术/版本:
|
|
14
|
+
- 涉及模块数/代码量:
|
|
15
|
+
- 依赖链影响范围:
|
|
16
|
+
|
|
17
|
+
## 2. 兼容性分析
|
|
18
|
+
| 变更项 | 当前 | 目标 | 兼容性 | 适配方案 |
|
|
19
|
+
|--------|------|------|--------|---------|
|
|
20
|
+
| API 变更 | | | | |
|
|
21
|
+
| 配置变更 | | | | |
|
|
22
|
+
| 行为差异 | | | | |
|
|
23
|
+
| 依赖冲突 | | | | |
|
|
24
|
+
|
|
25
|
+
## 3. 迁移路径
|
|
26
|
+
- **推荐路径**:渐进式 / 一次性
|
|
27
|
+
- **阶段划分**:
|
|
28
|
+
| 阶段 | 内容 | 预计工时 | 回滚方案 |
|
|
29
|
+
|------|------|---------|---------|
|
|
30
|
+
| 1 | | | |
|
|
31
|
+
| 2 | | | |
|
|
32
|
+
|
|
33
|
+
## 4. 风险评估
|
|
34
|
+
- 高风险点:
|
|
35
|
+
- 兼容层需求(适配器/Shim/Feature Flag):
|
|
36
|
+
- 数据迁移需求:
|
|
37
|
+
- 回滚方案:
|
|
38
|
+
|
|
39
|
+
## 5. 资源与时间
|
|
40
|
+
- 所需人力/技能:
|
|
41
|
+
- 建议时间窗口:
|
|
42
|
+
- 灰度策略:
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: general-quality
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 代码质量, 代码审查, review, 质量检查, 提交检查, 上线前检查, 代码评审
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 验收项
|
|
10
|
+
- [AC-01] 无 SQL 字符串拼接(使用参数化查询或 ORM) (check: grep -E '(SELECT|INSERT|UPDATE|DELETE).*(\+|\$\{|%s)' {file})
|
|
11
|
+
- [AC-02] 无 eval/Function 动态代码执行 (check: grep -c '\beval\s*(\|new Function\s*(' {file})
|
|
12
|
+
- [AC-03] 前端无 innerHTML 赋值(防 XSS) (check: grep -c '\.innerHTML\s*=' {file})
|
|
13
|
+
- [AC-04] 无循环内数据库调用(防 N+1) (check: grep -B3 '\.save\|\.insert\|\.update\|\.query\|\.select' {file} | grep -c 'for\|while')
|
|
14
|
+
- [AC-05] 无硬编码的敏感信息(密码/密钥/token) (check: grep -ic 'password\s*=\s*["\x27]\|secret\s*=\s*["\x27]\|token\s*=\s*["\x27]' {file})
|
|
15
|
+
- [AC-06] 文件不超过 500 行(超过应拆分) (check: wc -l {file})
|
|
16
|
+
- [AC-07] 无未处理的 TODO/FIXME 标记(或已记录为技术债务) (check: grep -c 'TODO\|FIXME\|HACK\|XXX' {file})
|
|
17
|
+
- [AC-08] 编译无错误和警告 (check: npm run build 2>&1 | grep -c 'error\|warning')
|
|
18
|
+
- [AC-09] 单元测试覆盖核心逻辑 (check: ls *Test.java *Test.tsx *.test.ts *.spec.ts {dir} 2>/dev/null | wc -l)
|
|
19
|
+
- [AC-10] 接口变更同步更新了文档或契约定义 (check: grep -c 'swagger\|openapi\|ApiOperation\|@Api' {file})
|
|
20
|
+
- [AC-11] 单元测试覆盖率是否达标(核心逻辑 ≥ 80%) (check: grep -r 'coverage\|覆盖率' {dir} | head -3)
|
|
21
|
+
- [AC-12] 是否有集成测试覆盖关键业务路径 (check: ls *IT.java *IT.test.ts *e2e* {dir} 2>/dev/null | wc -l)
|
|
22
|
+
- [AC-13] 是否配置了监控告警(错误率、响应时间) (check: grep -c 'alert\|告警\|metrics\|SLO\|SLA' {file})
|
|
23
|
+
- [AC-14] 是否有回滚方案和验证清单 (check: grep -c 'rollback\|回滚\|revert' {file})
|
|
24
|
+
- [AC-15] 技术文档是否更新(接口文档、架构文档) (check: git diff --name-only {base}..HEAD | grep -c 'README\|CHANGELOG\|doc')
|
|
25
|
+
- [AC-16] 性能是否满足 SLA 要求(P99 响应时间、吞吐量) (check: grep -c 'performance\|SLA\|P99\|latency\|benchmark' {file})
|
|
26
|
+
- [AC-17] 日志是否包含 traceId 支持链路追踪 (check: grep -c 'traceId\|trace_id\|TraceId\|MDC\|correlationId' {file})
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 重构方案模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 重构方案, 代码重构, 模块重构, 结构优化
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 重构方案文档
|
|
10
|
+
|
|
11
|
+
## 1. 重构动机
|
|
12
|
+
- 当前问题(坏味道描述 + 量化数据):
|
|
13
|
+
- 不重构的长期风险:
|
|
14
|
+
|
|
15
|
+
## 2. 重构目标
|
|
16
|
+
- 目标状态描述:
|
|
17
|
+
- 可衡量的改善指标(圈复杂度/行数/类数):
|
|
18
|
+
|
|
19
|
+
## 3. Before/After 对比
|
|
20
|
+
### Before(当前结构)
|
|
21
|
+
- 类/方法职责描述
|
|
22
|
+
- 调用关系图
|
|
23
|
+
- 关键度量(行数、分支数)
|
|
24
|
+
|
|
25
|
+
### After(重构后结构)
|
|
26
|
+
- 类/方法职责描述
|
|
27
|
+
- 调用关系图
|
|
28
|
+
- 关键度量(预期行数、分支数)
|
|
29
|
+
|
|
30
|
+
## 4. 实施步骤
|
|
31
|
+
| 步骤 | 变更内容 | 可独立验证 | 回滚方式 |
|
|
32
|
+
|------|---------|-----------|---------|
|
|
33
|
+
| 1 | | | |
|
|
34
|
+
| 2 | | | |
|
|
35
|
+
|
|
36
|
+
## 5. 风险评估
|
|
37
|
+
- 影响范围(受影响的接口/模块/测试):
|
|
38
|
+
- 行为等价性保障(如何确认不改变外部行为):
|
|
39
|
+
- 回滚策略:
|
|
40
|
+
|
|
41
|
+
## 6. 质量保障检查
|
|
42
|
+
- [ ] 重构是否保持功能等价(有测试用例保障)
|
|
43
|
+
- [ ] 是否分阶段执行(可增量发布,每阶段独立验证)
|
|
44
|
+
- [ ] 是否有回滚方案(每阶段独立可回滚)
|
|
45
|
+
- [ ] 重构是否清理了遗留的 TODO 和临时代码
|
|
46
|
+
- [ ] 重构后性能是否有回归测试(基准对比)
|
|
47
|
+
- [ ] 是否更新了相关文档和注释
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 需求分析模版
|
|
3
|
+
type: acceptance_template
|
|
4
|
+
when: 需求分析, 需求梳理, 需求澄清, 需求理解
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 需求分析文档
|
|
10
|
+
|
|
11
|
+
## 1. 需求来源
|
|
12
|
+
- 需求文档/原型链接:
|
|
13
|
+
- 提出人:
|
|
14
|
+
- 优先级:P0/P1/P2/P3
|
|
15
|
+
|
|
16
|
+
## 2. 功能点清单
|
|
17
|
+
| 编号 | 功能点 | 页面/接口 | 业务规则 | 验收标准 | 状态 |
|
|
18
|
+
|------|--------|----------|---------|---------|------|
|
|
19
|
+
| F-01 | | | | | 待确认/已确认 |
|
|
20
|
+
|
|
21
|
+
## 3. 术语表
|
|
22
|
+
| 术语 | 含义 | 同义词(统一为) |
|
|
23
|
+
|------|------|----------------|
|
|
24
|
+
| | | |
|
|
25
|
+
|
|
26
|
+
## 4. 未确认项
|
|
27
|
+
| 编号 | 问题 | 影响范围 | 阻塞程度 | 负责人 |
|
|
28
|
+
|------|------|---------|---------|--------|
|
|
29
|
+
| | | | 阻塞/非阻塞 | |
|
|
30
|
+
|
|
31
|
+
## 5. 写操作失败反馈
|
|
32
|
+
| 操作 | 失败场景 | 用户提示 | 重试建议 | 是否可恢复 |
|
|
33
|
+
|------|---------|---------|---------|-----------|
|
|
34
|
+
| | | | | |
|
|
35
|
+
|
|
36
|
+
## 6. 菜单权限规划
|
|
37
|
+
| 菜单路径 | 关联功能 | 角色 | 权限标识 | 默认可见 |
|
|
38
|
+
|---------|---------|------|---------|---------|
|
|
39
|
+
| | | | | |
|
|
40
|
+
|
|
41
|
+
## 7. 冲突与越界项
|
|
42
|
+
| 项 | 类型(冲突/越界) | 来源 | 处理方式 |
|
|
43
|
+
|----|-----------------|------|---------|
|
|
44
|
+
| | | | 排除/延期/升级确认 |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-tenancy
|
|
3
|
+
type: domain
|
|
4
|
+
when: 多租户, 租户隔离, tenant, SaaS, 租户, 数据隔离, 多客户
|
|
5
|
+
scope: [backend]
|
|
6
|
+
products: ["saas"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 业务规则
|
|
10
|
+
1. 每个租户的数据完全隔离,租户 A 不能看到租户 B 的任何数据
|
|
11
|
+
2. 所有查询必须自动附加租户过滤条件,不依赖开发人员手动添加
|
|
12
|
+
3. 租户切换需重新认证,不支持跨租户操作
|
|
13
|
+
4. 租户级配置(功能开关、字段自定义)独立管理
|
|
14
|
+
5. 租户间数据必须物理隔离(独立 schema/库)或逻辑隔离(tenant_id 字段 + 全局过滤)
|
|
15
|
+
6. 租户配置(功能开关、参数)必须支持按租户覆盖全局默认值
|
|
16
|
+
7. 新增租户必须自动初始化基础数据(角色、权限、默认菜单)
|
|
17
|
+
|
|
18
|
+
## 约束条件
|
|
19
|
+
- 数据库层面使用 tenant_id 字段实现行级隔离(共享数据库方案)
|
|
20
|
+
- MyBatis 拦截器自动注入 tenant_id 条件,禁止绕过拦截器直接写 SQL
|
|
21
|
+
- 新建表必须包含 tenant_id 字段并建立索引
|
|
22
|
+
- 超级管理员可跨租户查看数据,但需审计日志记录
|
|
23
|
+
- 租户 ID 必须在所有业务表中存在,且建立索引
|
|
24
|
+
- 跨租户数据查询必须显式声明并经过审批
|
|
25
|
+
- 租户数据删除必须级联清理所有关联数据
|
|
26
|
+
|
|
27
|
+
## 例外情况
|
|
28
|
+
- 系统级配置表(如地区、行业分类)不需要 tenant_id
|
|
29
|
+
- 数据统计聚合(如系统总用户数)需脱敏处理后统计
|
|
30
|
+
- 系统管理后台(超管)允许跨租户操作
|
|
31
|
+
|
|
32
|
+
## 关联模式
|
|
33
|
+
参见 auth-permission 模式(权限模型与租户关联)、logging 模式(日志需记录 tenantId)
|
|
34
|
+
- auth-permission
|
|
35
|
+
- data-privacy
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audit-logging
|
|
3
|
+
type: domain
|
|
4
|
+
when: 审计日志, 操作日志, 审计记录, 操作记录, 变更记录, 操作追踪
|
|
5
|
+
scope: [backend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 业务规则
|
|
10
|
+
1. 所有关键业务操作(创建、修改、删除、导出、权限变更)必须记录审计日志
|
|
11
|
+
2. 审计日志不可修改和删除,至少保留 3 年
|
|
12
|
+
3. 每条审计日志包含:操作人、操作时间、操作类型、操作对象、变更前后数据
|
|
13
|
+
4. 敏感操作(删除、权限变更、导出)需额外通知管理员
|
|
14
|
+
5. 审计日志必须记录:操作人、操作时间、操作类型、目标对象、变更前后值
|
|
15
|
+
6. 审计日志禁止被修改或删除(append-only),保证审计链完整性
|
|
16
|
+
7. 审计日志查询必须支持按时间范围、操作人、操作类型、目标对象筛选
|
|
17
|
+
|
|
18
|
+
## 约束条件
|
|
19
|
+
- 审计日志存储在独立表中(audit_log),不与业务数据混存
|
|
20
|
+
- 通过 AOP 切面自动记录,减少开发人员手动埋点
|
|
21
|
+
- 变更前后数据使用 JSON 格式存储(before/after 字段)
|
|
22
|
+
- 审计日志表不支持 UPDATE 和 DELETE(数据库层权限控制)
|
|
23
|
+
- 审计日志必须独立存储,不能与业务数据混用同一张表
|
|
24
|
+
- 审计日志保留期限必须符合合规要求(如 ≥ 180 天)
|
|
25
|
+
|
|
26
|
+
## 例外情况
|
|
27
|
+
- 查询操作(GET)一般不记录审计日志(除导出操作)
|
|
28
|
+
- 批量操作合并为一条审计记录(含数量信息)
|
|
29
|
+
- 查询类操作(GET)通常不记录审计日志,除非有特殊合规要求
|
|
30
|
+
|
|
31
|
+
## 关联模式
|
|
32
|
+
参见 logging 模式(日志记录规范)、error-handling 模式(异常处理与审计)
|
|
33
|
+
- logging
|
|
34
|
+
- data-privacy
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: import-export-rules
|
|
3
|
+
type: domain
|
|
4
|
+
when: 数据导入, 数据导出, Excel导入, CSV导入, 批量导入, 模板下载, 导入校验, 批量处理
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 业务规则
|
|
10
|
+
- 导入必须提供标准模板下载功能,模板字段与校验规则一一对应
|
|
11
|
+
- 导入数据必须全量校验后再入库,禁止边校验边入库(部分成功部分失败难以处理)
|
|
12
|
+
- 校验失败必须返回完整錙误报告(行号 + 字段名 + 錙误原因),禁止只返回"导入失败"
|
|
13
|
+
- 超过 1000 条的导入必须走异步处理,返回任务 ID 和进度查询接口
|
|
14
|
+
- 导入更新模式必须明确:新增/覆盖/跳过已存在记录
|
|
15
|
+
- 导出字段必须与导入模板字段对齐,导入的数据可通过导出还原
|
|
16
|
+
- 导入数据必须支持预览和校验,校验失败返回具体行号和错误原因
|
|
17
|
+
- 导入模板必须与当前系统版本一致,字段变更时同步更新模板
|
|
18
|
+
- 导出数据必须遵循数据权限规则,用户只能导出权限范围内的数据
|
|
19
|
+
|
|
20
|
+
## 约束
|
|
21
|
+
- 导入文件大小限制(建议 10MB),超过限制前端拦截不提交
|
|
22
|
+
- 导入文件类型限制(仅允许 .xlsx/.xls/.csv),禁止 .exe/.sh 等可执行文件
|
|
23
|
+
- 导入操作必须有审计日志(操作人、时间、记录数、成功/失败数)
|
|
24
|
+
- 大数据量导出使用流式写入(SXSSFWorkbook),禁止全量加载到内存
|
|
25
|
+
- 导入文件大小必须限制(如 ≤ 20MB),超过限制拒绝处理
|
|
26
|
+
- 导入操作必须有操作日志,记录导入人、时间、记录数、成功/失败数
|
|
27
|
+
|
|
28
|
+
## 例外
|
|
29
|
+
- 小数据量(< 100 条)可同步导入,直接返回结果
|
|
30
|
+
- 参考数据(字典、配置)导入可简化校验
|
|
31
|
+
- 系统管理员导出数据可以绕过数据权限,但必须有审批流程
|
|
32
|
+
|
|
33
|
+
## 关联模式
|
|
34
|
+
- [[async-export]] 异步导出模式
|
|
35
|
+
- [[file-upload]] 文件上传安全
|
|
36
|
+
- async-export
|
|
37
|
+
- input-validation
|
package/templates/knowledge/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-engine
|
|
3
|
+
type: domain
|
|
4
|
+
when: 审批流, 工作流, 审批, 流程引擎, 审批规则, 审批节点, 会签, 或签, 转办, 驳回, 撤回
|
|
5
|
+
scope: [backend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 业务规则
|
|
10
|
+
- 每个审批节点必须定义:审批人/角色、超时时间、超时自动动作(自动通过/自动驳回/升级)
|
|
11
|
+
- 审批状态流转必须完整:待提交→审批中→通过/驳回/撤回/终止,禁止出现不可解释的中间状态
|
|
12
|
+
- 并行审批(会签)必须定义:全部通过/一票通过/一票否决/比例通过策略
|
|
13
|
+
- 驳回必须明确回到哪个节点:发起人/上一节点/指定节点
|
|
14
|
+
- 审批记录必须完整保留:谁在什么时间审批了什么结果、意见是什么
|
|
15
|
+
- 审批权限必须校验:只有指定的审批人可以审批,禁止越权操作
|
|
16
|
+
- 工作流定义必须支持版本管理,修改后不影响已发起的流程实例
|
|
17
|
+
- 流程节点必须支持超时处理(自动流转/催办/升级),防止流程卡住
|
|
18
|
+
- 流程回退必须回到指定节点而非直接退回起始节点
|
|
19
|
+
|
|
20
|
+
## 约束条件
|
|
21
|
+
- 审批流定义与业务逻辑解耦,禁止在业务代码中硬编码审批步骤
|
|
22
|
+
- 审批超时提醒必须有通知机制(站内信/邮件/钉钉)
|
|
23
|
+
- 审批历史数据禁止物理删除,只能归档
|
|
24
|
+
- 审批中的业务数据禁止修改(如需修改须先撤回再提交)
|
|
25
|
+
- 流程变量大小必须限制(如单个变量 ≤ 4KB),防止流程引擎性能问题
|
|
26
|
+
- 流程发起人必须有权限校验,不是所有用户都能发起所有流程
|
|
27
|
+
|
|
28
|
+
## 例外情况
|
|
29
|
+
- 紧急审批可设置简化流程(减少审批节点),但必须有事后补审机制
|
|
30
|
+
- 系统管理员可查看所有审批记录,但不可代为审批
|
|
31
|
+
- 紧急流程可以跳过非必要审批节点(需配置紧急通道权限)
|
|
32
|
+
|
|
33
|
+
## 关联模式
|
|
34
|
+
- [[state-transition]] 状态机流转
|
|
35
|
+
- [[auth-permission]] 审批权限控制
|
|
36
|
+
- state-flow
|
|
37
|
+
- auth-permission
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: report-statistics
|
|
3
|
+
type: domain
|
|
4
|
+
when: 报表, 统计, 数据分析, 数据看板, 仪表盘, dashboard, 数据汇总, 图表, BI
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 业务规则
|
|
10
|
+
- 统计数据必须注明统计口径(时间范围、数据来源、计算规则、排除条件)
|
|
11
|
+
- 统计维度变更必须记录历史,保证趋势数据的可比性
|
|
12
|
+
- 实时看板数据必须定义刷新频率和数据延迟容忍度
|
|
13
|
+
- 导出报表必须包含:生成时间、数据截止时间、统计口径说明
|
|
14
|
+
- 敏感数据统计(金额、人数)必须有权限控制,禁止无权限查看汇总数据
|
|
15
|
+
- 报表查询必须支持时间范围筛选,默认查询最近 30 天
|
|
16
|
+
- 大数据量报表必须使用异步生成 + 下载方式,禁止同步等待
|
|
17
|
+
- 报表数据必须与业务数据来源一致,禁止报表查询绕过业务逻辑直接读库
|
|
18
|
+
|
|
19
|
+
## 约束条件
|
|
20
|
+
- 统计查询禁止直接查询业务主表,必须使用汇总表或物化视图
|
|
21
|
+
- 大时间范围统计必须支持分页或分段加载,禁止一次返回全量
|
|
22
|
+
- 图表颜色方案必须统一,禁止同一报表使用不一致的配色
|
|
23
|
+
- 统计接口响应时间目标 < 3 秒,超过时必须使用预计算/缓存
|
|
24
|
+
- 报表生成时间超过 30 秒必须改为异步模式
|
|
25
|
+
- 报表缓存必须设置过期时间,避免展示过期数据
|
|
26
|
+
|
|
27
|
+
## 例外情况
|
|
28
|
+
- 管理层汇总看板可使用 T+1 数据(次日更新)
|
|
29
|
+
- 临时统计需求可走 SQL 直查,但须标注"非正式统计"
|
|
30
|
+
- 实时看板类报表允许少量延迟(秒级),不要求强一致性
|
|
31
|
+
|
|
32
|
+
## 关联模式
|
|
33
|
+
- [[caching]] 统计数据缓存
|
|
34
|
+
- [[n-plus-one-query]] 统计查询优化
|
|
35
|
+
- caching
|
|
36
|
+
- async-export
|