soloforge 1.1.40 → 1.1.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -0
- package/dist/adapters/shared/workflow_template.js +1 -1
- package/dist/bin/commands/check_write.d.ts +1 -1
- package/dist/bin/commands/check_write.d.ts.map +1 -1
- package/dist/bin/commands/check_write.js +13 -34
- package/dist/bin/commands/check_write.js.map +1 -1
- package/dist/bin/commands/modify.d.ts +2 -1
- package/dist/bin/commands/modify.d.ts.map +1 -1
- package/dist/bin/commands/modify.js +29 -15
- package/dist/bin/commands/modify.js.map +1 -1
- package/dist/bin/commands/review.d.ts +3 -2
- package/dist/bin/commands/review.d.ts.map +1 -1
- package/dist/bin/commands/review.js +179 -46
- package/dist/bin/commands/review.js.map +1 -1
- package/dist/bin/soloforge.js +0 -18
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/context_engine/companion_injector.d.ts +16 -3
- package/dist/engine/context_engine/companion_injector.d.ts.map +1 -1
- package/dist/engine/context_engine/companion_injector.js +228 -35
- package/dist/engine/context_engine/companion_injector.js.map +1 -1
- package/dist/engine/contracts/artifact_contract_registry.d.ts +1 -43
- package/dist/engine/contracts/artifact_contract_registry.d.ts.map +1 -1
- package/dist/engine/contracts/artifact_contract_registry.js +24 -100
- package/dist/engine/contracts/artifact_contract_registry.js.map +1 -1
- package/dist/engine/contracts/artifact_process_rules.d.ts.map +1 -1
- package/dist/engine/contracts/artifact_process_rules.js +0 -12
- package/dist/engine/contracts/artifact_process_rules.js.map +1 -1
- package/dist/engine/contracts/artifact_schema_registry.d.ts.map +1 -1
- package/dist/engine/contracts/artifact_schema_registry.js +0 -24
- package/dist/engine/contracts/artifact_schema_registry.js.map +1 -1
- package/dist/engine/contracts/tool_invocation_contract_registry.d.ts +29 -0
- package/dist/engine/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
- package/dist/engine/contracts/tool_invocation_contract_registry.js +32 -21
- package/dist/engine/contracts/tool_invocation_contract_registry.js.map +1 -1
- package/dist/engine/core/paths.d.ts +0 -2
- package/dist/engine/core/paths.d.ts.map +1 -1
- package/dist/engine/core/paths.js +0 -2
- package/dist/engine/core/paths.js.map +1 -1
- package/dist/engine/knowledge/knowledge_writer.js +1 -1
- package/dist/engine/pipeline/artifact_aliases.d.ts +56 -3
- package/dist/engine/pipeline/artifact_aliases.d.ts.map +1 -1
- package/dist/engine/pipeline/artifact_aliases.js +377 -24
- package/dist/engine/pipeline/artifact_aliases.js.map +1 -1
- package/dist/engine/pipeline/artifact_resolver.d.ts +82 -0
- package/dist/engine/pipeline/artifact_resolver.d.ts.map +1 -0
- package/dist/engine/pipeline/artifact_resolver.js +458 -0
- package/dist/engine/pipeline/artifact_resolver.js.map +1 -0
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts +2 -2
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.js.map +1 -1
- package/dist/engine/pipeline/orchestrate_single_artifact.d.ts +185 -0
- package/dist/engine/pipeline/orchestrate_single_artifact.d.ts.map +1 -0
- package/dist/engine/pipeline/orchestrate_single_artifact.js +772 -0
- package/dist/engine/pipeline/orchestrate_single_artifact.js.map +1 -0
- package/dist/engine/pipeline/scope_resolver.js +1 -1
- package/dist/engine/pipeline/scope_resolver.js.map +1 -1
- package/dist/engine/pipeline/state_machine/certainty_gate.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/certainty_gate.js +122 -9
- package/dist/engine/pipeline/state_machine/certainty_gate.js.map +1 -1
- package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts +1 -13
- package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/pipeline_state_machine.js +65 -73
- package/dist/engine/pipeline/state_machine/pipeline_state_machine.js.map +1 -1
- package/dist/engine/pipeline/state_machine/sf_command_parser.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/sf_command_parser.js +24 -19
- package/dist/engine/pipeline/state_machine/sf_command_parser.js.map +1 -1
- package/dist/engine/pipeline/state_machine/stage_command_registry.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/stage_command_registry.js +7 -0
- package/dist/engine/pipeline/state_machine/stage_command_registry.js.map +1 -1
- package/dist/engine/pipeline/state_machine/stage_executor.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/stage_executor.js +5 -11
- package/dist/engine/pipeline/state_machine/stage_executor.js.map +1 -1
- package/dist/engine/pipeline/state_machine/static_route_table.d.ts +2 -0
- package/dist/engine/pipeline/state_machine/static_route_table.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/static_route_table.js +2 -0
- package/dist/engine/pipeline/state_machine/static_route_table.js.map +1 -1
- package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts +25 -0
- package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/uncertainty_bridge.js +18 -0
- package/dist/engine/pipeline/state_machine/uncertainty_bridge.js.map +1 -1
- package/dist/engine/pipeline/target_classifier.d.ts +48 -0
- package/dist/engine/pipeline/target_classifier.d.ts.map +1 -0
- package/dist/engine/pipeline/target_classifier.js +129 -0
- package/dist/engine/pipeline/target_classifier.js.map +1 -0
- package/dist/engine/pipeline/task_planner.js +1 -1
- package/dist/engine/pipeline/task_planner.js.map +1 -1
- package/dist/engine/release/foundation_scenario_registry.js +1 -1
- package/dist/engine/release/foundation_scenario_registry.js.map +1 -1
- package/dist/engine/templates/asset_manifest.d.ts.map +1 -1
- package/dist/engine/templates/asset_manifest.js +1 -0
- package/dist/engine/templates/asset_manifest.js.map +1 -1
- package/dist/engine/templates/explicit_asset_registry/rules_shared.d.ts.map +1 -1
- package/dist/engine/templates/explicit_asset_registry/rules_shared.js +22 -0
- package/dist/engine/templates/explicit_asset_registry/rules_shared.js.map +1 -1
- package/dist/server/tools/cep_assessment.d.ts +6 -0
- package/dist/server/tools/cep_assessment.d.ts.map +1 -1
- package/dist/server/tools/cep_assessment.js +23 -0
- package/dist/server/tools/cep_assessment.js.map +1 -1
- package/dist/server/tools/middleware.d.ts.map +1 -1
- package/dist/server/tools/middleware.js +78 -1
- package/dist/server/tools/middleware.js.map +1 -1
- package/dist/server/tools/tool_groups/product_operations.d.ts +5 -3
- package/dist/server/tools/tool_groups/product_operations.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/product_operations.js +5 -105
- package/dist/server/tools/tool_groups/product_operations.js.map +1 -1
- package/dist/server/tools/tool_groups/state_machine.d.ts +34 -3
- package/dist/server/tools/tool_groups/state_machine.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/state_machine.js +454 -236
- package/dist/server/tools/tool_groups/state_machine.js.map +1 -1
- package/dist/server/tools/tool_names.d.ts +0 -3
- package/dist/server/tools/tool_names.d.ts.map +1 -1
- package/dist/server/tools/tool_names.js +1 -4
- package/dist/server/tools/tool_names.js.map +1 -1
- package/dist/types/state_machine.d.ts +28 -1
- package/dist/types/state_machine.d.ts.map +1 -1
- package/dist/types/state_machine.js +1 -1
- package/dist/types/state_machine.js.map +1 -1
- package/package.json +1 -1
- package/templates/artifacts/existing-system//344/270/200/351/224/256/345/274/200/345/205/263/351/205/215/347/275/256/346/250/241/347/211/210.json +2 -1
- package/templates/artifacts/existing-system//345/216/206/345/217/262/346/225/260/346/215/256/346/270/205/346/264/227/350/204/232/346/234/254/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/existing-system//345/216/206/345/217/262/351/201/227/347/225/231/351/233/267/345/214/272/346/270/205/345/215/225/346/250/241/347/211/210.md +3 -1
- package/templates/artifacts/existing-system//345/220/221/345/220/216/345/205/274/345/256/271/346/200/247/345/220/210/350/247/204/346/212/245/345/221/212/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/existing-system//345/242/236/351/207/217/350/276/271/347/225/214/347/225/214/345/256/232/346/226/207/346/241/243/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/existing-system//346/224/271/351/200/240/345/275/261/345/223/215/350/214/203/345/233/264/350/257/204/344/274/260/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/existing-system//346/225/260/346/215/256/350/241/200/347/274/230/345/233/276/346/250/241/347/211/210.md +3 -2
- package/templates/artifacts/existing-system//346/226/260/350/200/201/351/200/273/350/276/221/346/257/224/345/257/271/346/227/245/345/277/227/346/250/241/347/211/210.md +3 -1
- package/templates/artifacts/existing-system//347/264/247/346/200/245/345/233/236/346/273/232/346/211/213/345/206/214/346/250/241/347/211/210.md +3 -2
- package/templates/artifacts/existing-system//351/232/224/347/246/273/351/200/202/351/205/215/345/231/250/346/226/271/346/241/210/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/shared/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243/346/250/241/347/211/210.md +3 -3
- package/templates/artifacts/shared//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212/346/250/241/347/211/210.md +1 -1
- package/templates/artifacts/shared//345/210/207/347/211/207/350/256/241/345/210/222/346/250/241/347/211/210.md +6 -2
- package/templates/artifacts/shared//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +5 -3
- package/templates/artifacts/shared//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 +2 -2
- package/templates/artifacts/shared//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 +2 -2
- package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/346/226/207/346/241/243/346/250/241/347/211/210.md +2 -2
- package/templates/artifacts/shared//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +6 -3
- package/templates/artifacts/shared//350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/351/252/214/346/224/266/346/212/245/345/221/212/346/250/241/347/211/210.md +5 -5
- package/templates/artifacts/shared//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +3 -3
- package/templates/artifacts/shared//351/234/200/346/261/202/345/216/237/345/236/213/350/256/276/350/256/241/345/256/236/347/216/260/350/277/275/350/270/252/347/237/251/351/230/265/346/250/241/347/211/210.md +7 -6
- package/templates/checklists//344/274/232/350/257/235/346/201/242/345/244/215.md +1 -1
- package/templates/gates/shared/gate-/344/273/243/347/240/201/345/256/241/346/237/245.yaml +7 -0
- package/templates/gates/shared/gate-/345/210/207/347/211/207/345/256/241/346/237/245.yaml +14 -2
- package/templates/gates/shared/gate-/347/274/226/347/240/201/345/256/236/347/216/260.yaml +12 -0
- package/templates/internal/patterns/Hook/345/261/202/344/272/247/347/211/251/347/273/223/346/236/204/346/240/241/351/252/214.md +1 -1
- package/templates/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +1 -1
- package/templates/procedures//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +1 -2
- package/templates/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//346/272/220/347/240/201/345/216/237/345/236/213/344/272/244/344/273/230/346/265/201/347/250/213.md +2 -2
- package/templates/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/rules/shared//344/273/243/347/240/201/345/217/257/347/273/264/346/212/244/346/200/247/344/270/216/345/217/257/350/247/202/346/265/213/346/200/247/345/256/241/346/237/245.md +21 -3
- package/templates/rules/shared//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/345/245/221/347/272/246/350/247/204/345/210/231.md +122 -0
|
@@ -13,10 +13,10 @@ priority: P2
|
|
|
13
13
|
version: 1.2.0
|
|
14
14
|
last_reviewed: '2026-06-04'
|
|
15
15
|
consumes:
|
|
16
|
-
-
|
|
17
|
-
-
|
|
16
|
+
- design_doc
|
|
17
|
+
- database_design
|
|
18
18
|
emits:
|
|
19
|
-
- docs/architecture/
|
|
19
|
+
- docs/architecture/05-详细设计文档.md
|
|
20
20
|
type: acceptance_template
|
|
21
21
|
triggers: ["详细设计","模块内部设计","实现设计"]
|
|
22
22
|
stages: ["详细设计"]
|
|
@@ -11,12 +11,13 @@ version: 1.2.0
|
|
|
11
11
|
last_reviewed: '2026-06-04'
|
|
12
12
|
owner_mechanism_id: mc-design-artifact-pack
|
|
13
13
|
consumes:
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
- requirement_analysis
|
|
15
|
+
- prototype_spec
|
|
16
|
+
- design_doc
|
|
17
|
+
# 以下上游在后续阶段可用,阶段审查时会自动追加:
|
|
18
|
+
# database_design (详细设计阶段追加 DD 行)
|
|
19
|
+
# api_spec (详细设计阶段追加 API 行)
|
|
20
|
+
# task_plan (任务规划阶段追加 SLICE 行)
|
|
20
21
|
emits:
|
|
21
22
|
- docs/traceability/01-需求原型设计实现追踪矩阵.md
|
|
22
23
|
required_evidence:
|
|
@@ -25,7 +25,7 @@ triggers: ["会话启动","新会话","上下文恢复","状态恢复","断点
|
|
|
25
25
|
1. 调用 sf_resume_workspace 扫描 .soloforge/state/ 目录
|
|
26
26
|
2. 若 resumed=true:播报中断工单的 task_id、阶段、已完成的产出,询问人类是否继续
|
|
27
27
|
3. 若 resumed=false:工作区干净,正常进入分类流程
|
|
28
|
-
4. 恢复时读取
|
|
28
|
+
4. 恢复时读取 docs/ 下的前序产出文件
|
|
29
29
|
5. 基于 state/current-task.json 中的 snapshot 字段恢复上下文
|
|
30
30
|
|
|
31
31
|
## 检查点
|
|
@@ -47,6 +47,13 @@ checks:
|
|
|
47
47
|
evidence_required: "黑盒项数 = 已签署数"
|
|
48
48
|
rule: "所有信任分级为黑盒的审查项必须有人类签署确认"
|
|
49
49
|
|
|
50
|
+
- id: CR-G07
|
|
51
|
+
name: "中文注释与日志审查维度"
|
|
52
|
+
severity: error
|
|
53
|
+
check_type: semantic
|
|
54
|
+
evidence_required: "MNT 中文注释/日志专项审查结果"
|
|
55
|
+
rule: "代码审查必须覆盖中文注释与日志维度:后端类/方法中文 Javadoc 齐全性、关键业务行中文行注释覆盖、业务日志中文事件名、字段中文说明、无全英文业务注释或日志。审查报告中须有 MNT-中文注释/日志专项章节"
|
|
56
|
+
|
|
50
57
|
decision_model:
|
|
51
58
|
PROMOTE: "所有 error 通过 + warning 通过或标注已知取舍"
|
|
52
59
|
HOLD: "error 全通过但 warning 未处理"
|
|
@@ -38,13 +38,25 @@ checks:
|
|
|
38
38
|
- "审查问题列表"
|
|
39
39
|
- "每项处理状态(已修复/有计划/待处理)"
|
|
40
40
|
|
|
41
|
+
- id: SLICE-R04
|
|
42
|
+
name: "中文注释与日志完备"
|
|
43
|
+
category: "quality_check"
|
|
44
|
+
severity: error
|
|
45
|
+
check_type: semantic
|
|
46
|
+
required_artifact: ""
|
|
47
|
+
rule: "切片内所有变更代码必须满足中文注释与日志契约:后端类/方法中文 Javadoc 齐全、关键业务行中文行注释覆盖、业务日志使用中文事件名、字段中文说明完整。零 non_chinese_comment 和 non_chinese_log 违规"
|
|
48
|
+
evidence_required:
|
|
49
|
+
- "中文注释审查结果(类/方法/关键行覆盖情况)"
|
|
50
|
+
- "中文日志审查结果(事件名/上下文字段/异常日志)"
|
|
51
|
+
- "non_chinese_comment / non_chinese_log hard_fail 数量(须为 0)"
|
|
52
|
+
|
|
41
53
|
decision_model:
|
|
42
54
|
promote:
|
|
43
|
-
condition: "SLICE-R01 和 SLICE-
|
|
55
|
+
condition: "SLICE-R01、SLICE-R02 和 SLICE-R04 通过"
|
|
44
56
|
action: "切片审查通过"
|
|
45
57
|
hold:
|
|
46
58
|
condition: "SLICE-R03 有未处理遗留问题"
|
|
47
59
|
action: "标注遗留问题,由用户决定是否继续"
|
|
48
60
|
rollback:
|
|
49
|
-
condition: "SLICE-R01 或 SLICE-
|
|
61
|
+
condition: "SLICE-R01、SLICE-R02 或 SLICE-R04 未通过"
|
|
50
62
|
action: "回退修复后重新审查"
|
|
@@ -40,6 +40,18 @@ checks:
|
|
|
40
40
|
- "扫描记录文件路径"
|
|
41
41
|
- "扫描记录摘要(文件数/行数/变更类型统计)"
|
|
42
42
|
|
|
43
|
+
- id: CODE-I04
|
|
44
|
+
name: "中文注释与日志合规"
|
|
45
|
+
category: "quality_check"
|
|
46
|
+
severity: error
|
|
47
|
+
check_type: semantic
|
|
48
|
+
required_artifact: ""
|
|
49
|
+
rule: "变更代码必须满足代码注释与日志契约规则:后端类/方法有中文 Javadoc;关键业务行(状态流转、金额、权限、外部调用)有中文行注释;业务日志使用中文事件名;catch 块有中文上下文日志;无全英文业务注释或日志"
|
|
50
|
+
evidence_required:
|
|
51
|
+
- "中文注释覆盖率抽检(类注释/方法注释/关键行注释)"
|
|
52
|
+
- "中文日志合规抽检(事件名中文化、catch 块日志)"
|
|
53
|
+
- "non_chinese_comment 和 non_chinese_log 检测结果(须为 0)"
|
|
54
|
+
|
|
43
55
|
decision_model:
|
|
44
56
|
promote:
|
|
45
57
|
condition: "所有 error 项通过"
|
package/templates/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md
CHANGED
|
@@ -29,12 +29,12 @@ triggers: ["数据库结构变更","加字段","改字段","新建表","加索
|
|
|
29
29
|
## 第1步:变更设计
|
|
30
30
|
评估变更类型(加列/改列/删列/加索引/数据迁移/新建表)。确认向前兼容性(新列默认值或允许 NULL)。制定四层兼容策略(数据库→接口契约→前端展示→导出逻辑)。
|
|
31
31
|
模版:数据库变更方案模版.md
|
|
32
|
-
|
|
32
|
+
产出保存到:docs/architecture/02-数据库设计文档.md
|
|
33
33
|
工具:sf_command
|
|
34
34
|
|
|
35
35
|
## 第2步:迁移脚本
|
|
36
36
|
编写 migration 脚本(正向 + 回滚),确保幂等。大表加列使用分批更新策略。大表加索引使用 ONLINE DDL。禁止 migration 中写业务逻辑。
|
|
37
|
-
|
|
37
|
+
产出保存到:docs/architecture/02-migration.sql
|
|
38
38
|
工具:sf_stage_execute
|
|
39
39
|
|
|
40
40
|
## 第3步:代码适配
|
|
@@ -30,12 +30,12 @@ triggers: ["安全加固","安全审计","安全修复","漏洞修复","合规
|
|
|
30
30
|
## 第1步:安全审计
|
|
31
31
|
扫描现有代码和配置的安全漏洞(OWASP Top 10 维度)。检查认证授权机制的完整性。检查数据加密和脱敏策略。检查第三方依赖的已知漏洞。
|
|
32
32
|
模版:安全审计模版.md
|
|
33
|
-
|
|
33
|
+
产出保存到:docs/review/\*\*/*审查*.md
|
|
34
34
|
工具:sf_command, sf_analyze
|
|
35
35
|
|
|
36
36
|
## 第2步:方案设计
|
|
37
37
|
按风险等级(Critical/High/Medium/Low)排序修复优先级。针对每个漏洞设计修复方案。评估修复对现有功能的影响。确定合规要求(数据加密/审计日志/访问控制)。
|
|
38
|
-
|
|
38
|
+
产出保存到:docs/architecture/01-架构设计文档.md
|
|
39
39
|
|
|
40
40
|
## 第3步:安全修复
|
|
41
41
|
按优先级逐个修复安全漏洞。每个修复后回归验证功能无影响。禁止降级安全等级来通过测试。
|
package/templates/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md
CHANGED
|
@@ -30,12 +30,12 @@ triggers: ["性能优化","慢查询","内存泄漏","首屏优化","性能问
|
|
|
30
30
|
## 第1步:性能定位
|
|
31
31
|
量化性能指标(当前值/目标值)。定位瓶颈(慢查询/内存/CPU/网络/前端渲染)。收集证据(APM/慢查询日志/浏览器 DevTools/压测数据)。确定优化优先级(收益/成本排序)。
|
|
32
32
|
模版:性能分析模版.md
|
|
33
|
-
|
|
33
|
+
产出保存到:docs/analyze/*/01-性能分析.md
|
|
34
34
|
工具:sf_command, sf_analyze
|
|
35
35
|
|
|
36
36
|
## 第2步:方案设计
|
|
37
37
|
针对瓶颈设计优化方案(索引优化/SQL 重写/缓存/连接池/异步/分页/懒加载)。评估方案影响范围和风险。确定可衡量的优化目标。
|
|
38
|
-
|
|
38
|
+
产出保存到:docs/architecture/01-架构设计文档.md
|
|
39
39
|
|
|
40
40
|
## 第3步:优化实施
|
|
41
41
|
按优先级逐步实施,每步优化后重新测量性能指标。禁止一次改多处再测量。保持优化前后功能行为一致。
|
|
@@ -69,7 +69,7 @@ triggers: ["架构设计","架构","architecture","设计系统","多端设计",
|
|
|
69
69
|
从多个 task 输入(原型说明、需求文档等)到完整架构设计产出的工作流。适用于多端、多模块、有不确定项的系统设计。
|
|
70
70
|
|
|
71
71
|
## 步骤
|
|
72
|
-
1. **输入集确认**:
|
|
72
|
+
1. **输入集确认**: 识别docs/analyze/目录下所有的原型说明及docs/context/目录下的需求文档,确认覆盖所有端
|
|
73
73
|
2. **架构决策研讨**: 逐域闭合业务流程、数据、安全、后端、前端和基础设施决策,生成 `00-架构决策记录.md`
|
|
74
74
|
- 每条决策使用 MADR 格式记录(标题/状态/上下文/决策/候选方案/理由/后果)
|
|
75
75
|
- ADR 状态管理:Proposed → Accepted → Superseded(被新 ADR 替代时标注 Superseded-By)
|
|
@@ -93,7 +93,6 @@ triggers: ["架构设计","架构","architecture","设计系统","多端设计",
|
|
|
93
93
|
10. **架构设计审查**: reviewArchitectureDesign 与 DesignArtifactPack 真实复验通过
|
|
94
94
|
|
|
95
95
|
## 检查点
|
|
96
|
-
- [ ] 所有 task-* 输入已识别并覆盖
|
|
97
96
|
- [ ] 六类架构决策均已确认并记录 decision refs
|
|
98
97
|
- [ ] 输出目录已用户确认
|
|
99
98
|
- [ ] 技术栈有项目证据或用户确认支撑
|
|
@@ -31,7 +31,7 @@ triggers: ["技术验证","POC","可行性验证","技术选型","技术调研",
|
|
|
31
31
|
|
|
32
32
|
## 第1步:调研分析
|
|
33
33
|
明确验证目标和成功标准。调研候选方案的生态成熟度、社区活跃度、性能基准、与现有技术栈兼容性。列出关键评估维度和权重。
|
|
34
|
-
|
|
34
|
+
产出保存到:docs/analyze/*/01-调研报告.md
|
|
35
35
|
工具:sf_command
|
|
36
36
|
|
|
37
37
|
## 第2步:原型实现
|
|
@@ -41,5 +41,5 @@ triggers: ["技术验证","POC","可行性验证","技术选型","技术调研",
|
|
|
41
41
|
## 第3步:评估结论
|
|
42
42
|
对比各方案在关键维度的表现(附量化数据)。给出推荐方案和理由。列出遗留风险和后续关注点。明确结论:推荐采用/需进一步验证/不建议采用。
|
|
43
43
|
模版:POC结论模版.md
|
|
44
|
-
|
|
44
|
+
产出保存到:docs/review/\*\*/*POC*.md
|
|
45
45
|
工具:sf_gate_check, sf_stage_advance
|
|
@@ -29,12 +29,12 @@ triggers: ["用户提供需求文档、原型源码"]
|
|
|
29
29
|
## 第1步:原型抓取
|
|
30
30
|
只能从导出的源码包(如 React/Vite zip)或已解压源码目录提取原型信息:路由、页面组件、布局结构、状态变量、事件处理、弹窗/导航/表单交互、样式令牌和导入的业务说明。禁止使用 Figma MCP、浏览器运行态、figma.site 或截图作为补充来源。若未提供源码包或源码目录,停止原型抓取并要求补充源码输入。对每个端或页面独立输出原型说明。
|
|
31
31
|
模版:原型说明模版.md
|
|
32
|
-
|
|
32
|
+
产出保存到:docs/analyze/*/01-原型说明.md
|
|
33
33
|
工具:source
|
|
34
34
|
|
|
35
35
|
## 第2步:架构设计
|
|
36
36
|
根据原型说明和需求文档,设计系统模块划分、数据流向、技术选型与依据、风险点与应对方案。
|
|
37
|
-
|
|
37
|
+
产出保存到:docs/architecture/01-架构设计文档.md
|
|
38
38
|
|
|
39
39
|
## 第3步:详细设计
|
|
40
40
|
根据架构设计产出,把数据结构和接口契约落到正式设计载体。
|
|
@@ -29,7 +29,7 @@ triggers: ["紧急修复管线","紧急修复","生产事故处理管线","P0管
|
|
|
29
29
|
|
|
30
30
|
## 第1步:故障定位
|
|
31
31
|
确认问题影响范围和严重程度,通知相关干系人。评估止血方案(配置回滚/功能开关关闭/服务降级/版本回滚),执行止血操作。
|
|
32
|
-
|
|
32
|
+
产出保存到:docs/review/\*\*/*根因*.md
|
|
33
33
|
工具:sf_command, sf_analyze
|
|
34
34
|
|
|
35
35
|
## 第2步:最小修复
|
|
@@ -43,7 +43,7 @@ triggers: ["紧急修复管线","紧急修复","生产事故处理管线","P0管
|
|
|
43
43
|
## 第4步:故障复盘
|
|
44
44
|
编写事故复盘(根因、影响范围、修复过程、暴露的监控盲区、后续改进项)。与 sf_stage_advance 配合形成闭环。
|
|
45
45
|
模版:故障复盘模版.md
|
|
46
|
-
|
|
46
|
+
产出保存到:docs/review/\*\*/*复盘*.md
|
|
47
47
|
工具:sf_stage_advance
|
|
48
48
|
|
|
49
49
|
## 第5步:验证与闭环
|
package/templates/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md
CHANGED
|
@@ -30,12 +30,12 @@ triggers: ["技术迁移","框架升级","技术栈迁移","版本升级","迁
|
|
|
30
30
|
## 第1步:迁移评估
|
|
31
31
|
评估迁移范围和影响(模块数、代码量、依赖链)。评估迁移路径(渐进式/一次性)。评估兼容性风险(API 变更、行为差异、性能差异)。制定回滚方案。
|
|
32
32
|
模版:迁移评估模版.md
|
|
33
|
-
|
|
33
|
+
产出保存到:docs/architecture/08-迁移方案.md
|
|
34
34
|
工具:sf_command, sf_analyze
|
|
35
35
|
|
|
36
36
|
## 第2步:方案设计
|
|
37
37
|
制定分阶段迁移计划(每阶段可独立验证和回滚)。识别兼容层需求(适配器/Shim/Feature Flag)。定义每个阶段的完成标准和验证方式。
|
|
38
|
-
|
|
38
|
+
产出保存到:docs/architecture/08-迁移方案.md
|
|
39
39
|
|
|
40
40
|
## 第3步:渐进迁移
|
|
41
41
|
按计划逐步迁移,每阶段完成后全量测试。保持双写/双读过渡期(如需要)。记录每阶段发现的行为差异和兼容性问题。
|
package/templates/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md
CHANGED
|
@@ -30,12 +30,12 @@ triggers: ["代码重构","模块拆分","模式优化","提取公共方法","
|
|
|
30
30
|
## 第1步:现状分析
|
|
31
31
|
识别当前代码的坏味道和重构目标。量化现状(圈复杂度、方法行数、类职责数)。确定重构类型(提取方法/提取类/内联/重命名/搬移/模式替换)。
|
|
32
32
|
模版:重构方案模版.md
|
|
33
|
-
|
|
33
|
+
产出保存到:docs/review/\*\*/*审查*.md
|
|
34
34
|
工具:sf_command, sf_analyze
|
|
35
35
|
|
|
36
36
|
## 第2步:方案设计
|
|
37
37
|
定义重构目标和 Before/After 对比。评估影响范围(哪些模块/接口/测试受影响)。识别风险点(破坏性变更风险等级、回归风险)。制定分步执行计划(每步可独立验证)。
|
|
38
|
-
|
|
38
|
+
产出保存到:docs/architecture/01-架构设计文档.md
|
|
39
39
|
|
|
40
40
|
## 第3步:分步实施
|
|
41
41
|
按计划逐步执行重构,每步完成后运行测试确认无回归。禁止一次改多步再验证。保持测试始终可通过(绿色),如需修改测试先确认测试本身正确。
|
|
@@ -41,11 +41,11 @@ triggers: ["代码审查","可维护性","可观测性","日志审查","注释
|
|
|
41
41
|
## MNT-03: 复杂业务规则缺设计意图注释
|
|
42
42
|
- id: MNT-03
|
|
43
43
|
- name: 复杂业务规则缺设计意图注释
|
|
44
|
-
- severity:
|
|
44
|
+
- severity: error
|
|
45
45
|
- check_type: semantic
|
|
46
46
|
- evidence_required: 代码审查发现中标注缺注释的业务规则位置与建议注释内容
|
|
47
|
-
- pattern: 复杂业务规则/金额计算/状态机缺说明"为什么"
|
|
48
|
-
- description: changed files 中复杂业务规则必须有说明"为什么"
|
|
47
|
+
- pattern: 复杂业务规则/金额计算/状态机缺说明"为什么"的中文注释
|
|
48
|
+
- description: changed files 中复杂业务规则必须有说明"为什么"的中文注释(不检查纯复述代码的废话注释)。金额计算须有中文设计意图注释、状态机须有中文状态流转注释。所有注释必须使用中文,禁止全英文业务注释。
|
|
49
49
|
|
|
50
50
|
## MNT-04: 未使用项目标准 Logger
|
|
51
51
|
- id: MNT-04
|
|
@@ -64,3 +64,21 @@ triggers: ["代码审查","可维护性","可观测性","日志审查","注释
|
|
|
64
64
|
- evidence_required: 代码审查发现中标注空 catch 块行号与建议的异常处理方式
|
|
65
65
|
- pattern: "catch\\s*\\([^)]*\\)\\s*\\{\\s*\\}"
|
|
66
66
|
- description: catch 块不得为空或仅输出不可定位信息(如 "error"/"failed")。至少需要记录日志,含异常上下文信息。
|
|
67
|
+
|
|
68
|
+
## MNT-06: 业务注释未使用中文
|
|
69
|
+
- id: MNT-06
|
|
70
|
+
- name: 业务注释未使用中文
|
|
71
|
+
- severity: error
|
|
72
|
+
- check_type: semantic
|
|
73
|
+
- evidence_required: 代码审查发现中标注全英文注释的文件、行号与建议中文注释内容
|
|
74
|
+
- pattern: 后端类/方法缺中文 Javadoc;关键业务行(状态流转、金额、权限、外部调用)缺中文行注释;DTO/VO/Entity 字段缺中文说明
|
|
75
|
+
- description: 所有业务注释必须使用中文:后端类/接口/枚举须有中文文档注释说明职责和业务边界;业务方法须有中文文档注释说明作用、参数语义和返回值含义;关键业务行须有中文行注释;DTO/VO/Entity/Request/Response 字段须有中文含义说明或注解。允许保留英文代码标识符,但业务说明必须中文表达。纯样式、getter/setter、简单类型定义可豁免。
|
|
76
|
+
|
|
77
|
+
## MNT-07: 业务日志未使用中文
|
|
78
|
+
- id: MNT-07
|
|
79
|
+
- name: 业务日志未使用中文
|
|
80
|
+
- severity: error
|
|
81
|
+
- check_type: semantic
|
|
82
|
+
- evidence_required: 代码审查发现中标注全英文日志的文件、行号与建议中文事件名
|
|
83
|
+
- pattern: 业务日志首字符串不含中文;日志事件名全英文;catch 块日志无中文上下文
|
|
84
|
+
- description: 所有业务日志必须使用中文事件名或中文动作说明:用户登录/登出、权限拒绝、状态变更、金额变更、外部调用、异步任务、异常处理等日志的事件名或首字符串必须包含中文。日志中必须包含业务对象 ID、操作人、关键状态变化前后值等上下文。禁止只打印英文 "error"/"failed"/"success" 的不可定位日志。
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-comment-log-contract
|
|
3
|
+
scope:
|
|
4
|
+
- '*'
|
|
5
|
+
products:
|
|
6
|
+
- '*'
|
|
7
|
+
id: ka-hard-rule-代码注释与日志契约规则
|
|
8
|
+
type: governance_rule
|
|
9
|
+
lifecycle_status: active
|
|
10
|
+
authority: canonical
|
|
11
|
+
owner_mechanism_id: mc-code-maintainability-observability-contract
|
|
12
|
+
priority: P0
|
|
13
|
+
consumes:
|
|
14
|
+
- mc-coding-readiness
|
|
15
|
+
hard_blocks:
|
|
16
|
+
- code_observability_work_package_missing
|
|
17
|
+
- sensitive_log_leak
|
|
18
|
+
- catch_swallow
|
|
19
|
+
- missing_log_critical
|
|
20
|
+
- missing_comment_complex_unresolved
|
|
21
|
+
- missing_class_doc
|
|
22
|
+
- missing_method_doc
|
|
23
|
+
- missing_important_line_comment
|
|
24
|
+
- non_chinese_log
|
|
25
|
+
- non_chinese_comment
|
|
26
|
+
fallback: manual_required
|
|
27
|
+
required_evidence:
|
|
28
|
+
- code_observability_work_package
|
|
29
|
+
- review_findings
|
|
30
|
+
- verification_result
|
|
31
|
+
version: 1.1.0
|
|
32
|
+
last_reviewed: '2026-06-01'
|
|
33
|
+
stages: ["*"]
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 注释契约
|
|
37
|
+
|
|
38
|
+
### 中文 Javadoc 必须具备
|
|
39
|
+
- Java/Kotlin 后端类、接口、枚举、记录必须有中文文档注释,说明类型职责、业务边界和使用场景。
|
|
40
|
+
- 后端每个业务方法必须有中文文档注释,说明方法作用;有入参时说明参数语义;有返回值时说明返回对象或结果含义。
|
|
41
|
+
- Controller、Service、UseCase、DomainService、Repository、Mapper、DTO、VO、Request、Response、Entity 等均适用。
|
|
42
|
+
- 关键业务行必须有中文行注释,尤其是事务双写、状态流转、级联删除、账号联动、外部调用、审计写入、补偿和回滚边界。
|
|
43
|
+
- 允许保留英文代码标识符,但业务说明、风险说明、参数说明、返回说明必须中文表达。
|
|
44
|
+
|
|
45
|
+
### 必须有注释
|
|
46
|
+
- 业务规则不直观时
|
|
47
|
+
- 领域不变量(如"一个用户同一时间只能有一个有效业务办理")
|
|
48
|
+
- 金额、账单、折扣、支付、退款、核验逻辑
|
|
49
|
+
- 状态流转逻辑(如 pending → paid → refunded)
|
|
50
|
+
- 幂等、分布式锁、事务、并发控制
|
|
51
|
+
- 权限、安全、审计判断
|
|
52
|
+
- 外部系统兼容、历史包袱、第三方接口限制
|
|
53
|
+
- 复杂 SQL、复杂查询条件、非显而易见算法
|
|
54
|
+
- 前端复杂交互规则:权限控制、状态流转、表单联动、乐观更新/回滚、支付与敏感操作
|
|
55
|
+
|
|
56
|
+
### 必须禁止
|
|
57
|
+
- 每行废话注释
|
|
58
|
+
- 复述代码字面含义的注释
|
|
59
|
+
- 注释与代码行为不一致
|
|
60
|
+
- 注释承诺了代码没有做到的安全性、幂等性或事务性
|
|
61
|
+
- 用户项目业务注释全英文
|
|
62
|
+
- 只写 `{@inheritDoc}` 但没有说明本实现的业务边界、入参和出参
|
|
63
|
+
|
|
64
|
+
## 日志契约
|
|
65
|
+
|
|
66
|
+
### 日志中必须有
|
|
67
|
+
- 用户登录、登出、认证失败
|
|
68
|
+
- 权限拒绝、越权访问
|
|
69
|
+
- 创建、修改、删除关键业务对象
|
|
70
|
+
- 状态变更、金额变更、支付、退款、折扣、核验
|
|
71
|
+
- 合同、业务办理、账单、证照、人员角色变更
|
|
72
|
+
- 外部 API 调用失败、超时、重试
|
|
73
|
+
- 异步任务开始、成功、失败、重试、跳过
|
|
74
|
+
- 数据修复、批处理、迁移脚本
|
|
75
|
+
- 捕获异常后继续执行
|
|
76
|
+
- 降级、兜底、补偿逻辑
|
|
77
|
+
- 前端关键交互:表单提交、状态变更、权限动作、支付/敏感操作、上传导入、API 调用失败
|
|
78
|
+
|
|
79
|
+
### 日志必须具备的要素
|
|
80
|
+
- 中文事件名或中文动作说明
|
|
81
|
+
- 事件名或动作名
|
|
82
|
+
- 业务对象 ID
|
|
83
|
+
- 操作人或系统来源
|
|
84
|
+
- traceId / correlationId(如果项目已有)
|
|
85
|
+
- 失败原因
|
|
86
|
+
- 关键状态变化前后值
|
|
87
|
+
- 合理日志级别
|
|
88
|
+
|
|
89
|
+
### 日志中必须禁止
|
|
90
|
+
- 裸 console.log(生产代码)
|
|
91
|
+
- 生产代码遗留调试日志
|
|
92
|
+
- catch 后无日志直接吞异常
|
|
93
|
+
- 只打印 "error"、"failed" 这类不可定位日志
|
|
94
|
+
- 用户项目业务日志全英文
|
|
95
|
+
- 打印 password、token、secret、cookie、身份证全量、手机号全量、银行卡全量、健康隐私
|
|
96
|
+
- 高频循环里刷屏日志
|
|
97
|
+
- 日志拼接大对象导致性能或隐私问题
|
|
98
|
+
|
|
99
|
+
## 项目 logger 识别
|
|
100
|
+
- Java/Spring: Slf4j + LoggerFactory
|
|
101
|
+
- Node/Express/NestJS: pino, winston, NestJS Logger, 项目封装 logger
|
|
102
|
+
- Python/FastAPI、Go handler、.NET、Ruby 等后端: 使用项目现有 logger 或先建立 logger 包装
|
|
103
|
+
- NestJS: Logger
|
|
104
|
+
- React/Vue/Svelte 等前端: 项目封装 logger、埋点或错误上报,生产环境禁止裸 console
|
|
105
|
+
- 如果项目没有 logger,要求先建立项目 logger 包装
|
|
106
|
+
|
|
107
|
+
## 跨技术栈适用范围
|
|
108
|
+
- 后端不限定 Spring:Controller、Service、UseCase、Handler、Router、Resolver、ViewSet、Repository、Mapper 等写操作都适用。
|
|
109
|
+
- 前端不限定框架:React、Vue、Svelte、移动端页面和状态 store 的业务提交、状态变更、权限动作和 API 失败都适用。
|
|
110
|
+
- Entity、Request、Response、VO、DTO、Schema、Serializer、Model 等用户项目契约类的业务字段需要中文含义说明或 Schema 注解。
|
|
111
|
+
- Java Entity 使用 Getter/Setter 分层访问策略;DTO、VO、Request、Response 使用 Data 风格承载边界数据,不得混用导致领域模型语义被抹平。
|
|
112
|
+
|
|
113
|
+
## 严重度
|
|
114
|
+
- P0 阻断: 敏感信息泄漏、catch 吞异常、支付/金额/权限变更无日志
|
|
115
|
+
- P1 阻断: 状态流转无日志、复杂规则无注释、后端类/方法中文 Javadoc 缺失、关键行中文注释缺失、中文日志缺失、外部调用无日志、裸 console.log
|
|
116
|
+
- P2 警告: 日志级别不合理、上下文字段不足
|
|
117
|
+
- P3 建议: 普通可读性优化
|
|
118
|
+
|
|
119
|
+
## 低风险跳过
|
|
120
|
+
- 纯样式、文案、简单 getter/setter、简单类型定义、测试 fixture
|
|
121
|
+
- 低风险只读查询且已有统一 access log
|
|
122
|
+
- 简单配置修改、一次性本地实验代码
|