source-kb 0.2.2__py3-none-any.whl
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.
- cli/__init__.py +50 -0
- cli/__main__.py +5 -0
- cli/commands/__init__.py +1 -0
- cli/commands/anchor_fix.py +47 -0
- cli/commands/diff_doc.py +52 -0
- cli/commands/dispatch.py +77 -0
- cli/commands/extract.py +72 -0
- cli/commands/file_list.py +74 -0
- cli/commands/index.py +84 -0
- cli/commands/lock.py +89 -0
- cli/commands/merge.py +60 -0
- cli/commands/merge_delta.py +19 -0
- cli/commands/metadata.py +24 -0
- cli/commands/pipeline.py +45 -0
- cli/commands/post_merge.py +43 -0
- cli/commands/query.py +52 -0
- cli/commands/render.py +101 -0
- cli/commands/scan_repos.py +46 -0
- cli/commands/setup.py +94 -0
- cli/commands/split.py +196 -0
- cli/commands/stale_files.py +98 -0
- cli/commands/validate.py +191 -0
- core/__init__.py +32 -0
- core/config.py +261 -0
- core/docs/__init__.py +7 -0
- core/docs/section_updater.py +286 -0
- core/docs/shared.py +149 -0
- core/git.py +294 -0
- core/interfaces.py +249 -0
- core/monitor/__init__.py +5 -0
- core/monitor/progress.py +83 -0
- core/monitor/prompt_store.py +49 -0
- core/paths.py +141 -0
- core/preset.py +237 -0
- core/preset_accessors.py +202 -0
- core/preset_classify.py +132 -0
- core/preset_hooks.py +129 -0
- core/preset_profile.py +89 -0
- core/prompt/__init__.py +7 -0
- core/prompt/__main__.py +147 -0
- core/prompt/content.py +320 -0
- core/prompt/context_manager.py +164 -0
- core/prompt/renderer.py +236 -0
- core/prompt/response_parser.py +274 -0
- core/prompt/templates.py +357 -0
- core/prompt/validate_parity.py +162 -0
- core/prompt/variables.py +339 -0
- core/rag/__init__.py +22 -0
- core/rag/__main__.py +136 -0
- core/rag/bm25_index.py +268 -0
- core/rag/chunker.py +273 -0
- core/rag/embedder.py +151 -0
- core/rag/indexer.py +292 -0
- core/rag/loader.py +89 -0
- core/rag/retriever.py +82 -0
- core/skeleton/__init__.py +11 -0
- core/skeleton/__main__.py +934 -0
- core/skeleton/anchor_fix.py +250 -0
- core/skeleton/classify.py +331 -0
- core/skeleton/cmd_anchor_fix.py +43 -0
- core/skeleton/cmd_diff_doc.py +44 -0
- core/skeleton/cmd_lock.py +87 -0
- core/skeleton/cmd_merge_delta.py +41 -0
- core/skeleton/community.py +233 -0
- core/skeleton/dependency_graph.py +306 -0
- core/skeleton/diff_doc.py +248 -0
- core/skeleton/dispatch.py +273 -0
- core/skeleton/dispatch_render.py +319 -0
- core/skeleton/dispatch_source.py +111 -0
- core/skeleton/extract.py +218 -0
- core/skeleton/extract_methods.py +298 -0
- core/skeleton/file_list.py +239 -0
- core/skeleton/impact.py +278 -0
- core/skeleton/jar_download.py +177 -0
- core/skeleton/jar_resolver.py +186 -0
- core/skeleton/loader.py +162 -0
- core/skeleton/merge.py +278 -0
- core/skeleton/merge_delta.py +229 -0
- core/skeleton/metadata.py +96 -0
- core/skeleton/metadata_builders.py +264 -0
- core/skeleton/module_dag.py +330 -0
- core/skeleton/parsers/__init__.py +71 -0
- core/skeleton/parsers/jqassistant.py +300 -0
- core/skeleton/parsers/jqassistant_cypher.py +225 -0
- core/skeleton/parsers/regex.py +171 -0
- core/skeleton/parsers/treesitter.py +324 -0
- core/skeleton/parsers/treesitter_java.py +284 -0
- core/skeleton/parsers/treesitter_multi.py +289 -0
- core/skeleton/pom_parser.py +299 -0
- core/skeleton/post_merge.py +295 -0
- core/skeleton/post_merge_llm.py +82 -0
- core/skeleton/query.py +195 -0
- core/skeleton/shard_context.py +177 -0
- core/skeleton/split.py +180 -0
- core/skeleton/split_cache.py +107 -0
- core/skeleton/split_feedback.py +174 -0
- core/skeleton/split_plan.py +219 -0
- core/skeleton/split_plan_helpers.py +305 -0
- core/skeleton/split_plan_llm.py +274 -0
- core/utils.py +135 -0
- core/validators/__init__.py +65 -0
- core/validators/__main__.py +215 -0
- core/validators/consistency.py +203 -0
- core/validators/coverage.py +171 -0
- core/validators/duplicates.py +76 -0
- core/validators/engine.py +224 -0
- core/validators/links.py +76 -0
- core/validators/sampling.py +169 -0
- core/validators/structure.py +144 -0
- engine/__init__.py +7 -0
- engine/assembler.py +231 -0
- engine/confirm.py +65 -0
- engine/dedup.py +106 -0
- engine/main.py +211 -0
- engine/pipeline/__init__.py +163 -0
- engine/pipeline/recovery.py +250 -0
- engine/pipeline/steps/__init__.py +23 -0
- engine/pipeline/steps/audit.py +220 -0
- engine/pipeline/steps/audit_apply.py +195 -0
- engine/pipeline/steps/audit_helpers.py +155 -0
- engine/pipeline/steps/classify_llm.py +236 -0
- engine/pipeline/steps/classify_prompt.py +223 -0
- engine/pipeline/steps/finalize.py +160 -0
- engine/pipeline/steps/generate.py +169 -0
- engine/pipeline/steps/generate_batch.py +197 -0
- engine/pipeline/steps/generate_recovery.py +170 -0
- engine/pipeline/steps/llm_plan_split.py +253 -0
- engine/pipeline/steps/lock.py +64 -0
- engine/pipeline/steps/preflight.py +237 -0
- engine/pipeline/steps/preflight_adjust.py +147 -0
- engine/pipeline/steps/pregenerate.py +130 -0
- engine/pipeline/steps/quality.py +81 -0
- engine/pipeline/steps/skeleton.py +149 -0
- engine/pipeline/steps/source.py +163 -0
- engine/pipeline/steps/sync.py +117 -0
- engine/pipeline/steps/sync_finalize.py +237 -0
- engine/pipeline/steps/sync_update.py +341 -0
- engine/pipelines.py +91 -0
- engine/runner.py +335 -0
- engine/strategies/__init__.py +86 -0
- engine/strategies/api.py +128 -0
- engine/strategies/delegated.py +50 -0
- engine/strategies/dryrun.py +25 -0
- engine/two_phase.py +143 -0
- mcp_server/__init__.py +73 -0
- mcp_server/__main__.py +5 -0
- mcp_server/tools/__init__.py +1 -0
- mcp_server/tools/config.py +63 -0
- mcp_server/tools/discovery.py +276 -0
- mcp_server/tools/generation.py +184 -0
- mcp_server/tools/planning.py +144 -0
- mcp_server/tools/source.py +175 -0
- mcp_server/tools/validation.py +140 -0
- mcp_server/tools/workflow.py +166 -0
- mcp_server/workflow_loader.py +204 -0
- presets/generic/audit_dimensions.md +132 -0
- presets/generic/doc_types.yaml +152 -0
- presets/generic/preset.yaml +115 -0
- presets/java-spring/audit_dimensions.md +228 -0
- presets/java-spring/audit_dimensions.yaml +203 -0
- presets/java-spring/doc_types.yaml +269 -0
- presets/java-spring/hooks.py +122 -0
- presets/java-spring/preset.yaml +341 -0
- presets/java-spring/templates/README.md +34 -0
- presets/java-spring/templates/audit-system.md +15 -0
- presets/java-spring/templates/subagent-aop.md +105 -0
- presets/java-spring/templates/subagent-api.md +63 -0
- presets/java-spring/templates/subagent-architecture.md +111 -0
- presets/java-spring/templates/subagent-async-events.md +107 -0
- presets/java-spring/templates/subagent-audit-api-contracts.md +40 -0
- presets/java-spring/templates/subagent-audit-architecture.md +38 -0
- presets/java-spring/templates/subagent-audit-business.md +40 -0
- presets/java-spring/templates/subagent-audit-data-models.md +40 -0
- presets/java-spring/templates/subagent-business.md +129 -0
- presets/java-spring/templates/subagent-caching.md +75 -0
- presets/java-spring/templates/subagent-database-access.md +114 -0
- presets/java-spring/templates/subagent-enum.md +75 -0
- presets/java-spring/templates/subagent-error-handling.md +91 -0
- presets/java-spring/templates/subagent-external-integrations.md +80 -0
- presets/java-spring/templates/subagent-index.md +122 -0
- presets/java-spring/templates/subagent-messaging.md +97 -0
- presets/java-spring/templates/subagent-model.md +88 -0
- presets/java-spring/templates/subagent-observability.md +91 -0
- presets/java-spring/templates/subagent-scheduled.md +81 -0
- presets/java-spring/templates/subagent-security.md +102 -0
- presets/java-spring/templates/subagent-structure.md +101 -0
- presets/java-spring/templates/subagent-sync-section.md +34 -0
- presets/java-spring/templates/subagent-utils.md +73 -0
- presets/java-spring/templates/sync-system.md +8 -0
- presets/java-spring/workflow-extensions.md +112 -0
- skills/__init__.py +1 -0
- skills/_shared/README.md +30 -0
- skills/_shared/doc-coverage-shared.md +134 -0
- skills/_shared/doc-quality-standard.md +1058 -0
- skills/_shared/doc-subagent-rules.md +762 -0
- skills/_shared/windows-compat.md +89 -0
- skills/kb-audit/SKILL.md +52 -0
- skills/kb-audit/rules.md +88 -0
- skills/kb-audit/steps/step-01-prepare.md +75 -0
- skills/kb-audit/steps/step-02-audit.md +96 -0
- skills/kb-audit/steps/step-03-verify.md +65 -0
- skills/kb-audit/steps/step-04-report.md +64 -0
- skills/kb-init/SKILL.md +146 -0
- skills/kb-init/rules.md +187 -0
- skills/kb-init/steps/step-01-scope.md +62 -0
- skills/kb-init/steps/step-02-source.md +410 -0
- skills/kb-init/steps/step-03-generate.md +307 -0
- skills/kb-init/steps/step-04-quality.md +92 -0
- skills/kb-init/steps/step-05-finalize.md +132 -0
- skills/kb-init/templates/core/execution-modes.md +29 -0
- skills/kb-init/templates/core/output-only.md +4 -0
- skills/kb-init/templates/core/readwrite.md +33 -0
- skills/kb-search/SKILL.md +138 -0
- skills/kb-search/rules.md +64 -0
- skills/kb-sync/SKILL.md +43 -0
- skills/kb-sync/rules.md +70 -0
- skills/kb-sync/scripts/rebuild_module.py +91 -0
- skills/kb-sync/scripts/scan_repos.py +687 -0
- skills/kb-sync/steps/step-01-detect.md +72 -0
- skills/kb-sync/steps/step-02-update.md +71 -0
- skills/kb-sync/steps/step-03-verify.md +47 -0
- skills/kb-sync/steps/step-04-finalize.md +52 -0
- source_kb-0.2.2.dist-info/METADATA +194 -0
- source_kb-0.2.2.dist-info/RECORD +228 -0
- source_kb-0.2.2.dist-info/WHEEL +5 -0
- source_kb-0.2.2.dist-info/entry_points.txt +3 -0
- source_kb-0.2.2.dist-info/licenses/LICENSE +21 -0
- source_kb-0.2.2.dist-info/top_level.txt +6 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Generic Preset — 通用降级预设
|
|
2
|
+
# 不绑定任何语言,按文件扩展名和目录名做基础分类
|
|
3
|
+
#
|
|
4
|
+
# file_extensions 为空时,匹配所有非隐藏文件(排除 test/generated 目录)。
|
|
5
|
+
# 如需限定语言,填入对应扩展名,如 [".py", ".pyi"] 或 [".go"]。
|
|
6
|
+
|
|
7
|
+
name: "Generic"
|
|
8
|
+
language: "any"
|
|
9
|
+
file_extensions: [] # 空 = 所有非隐藏文件(排除 test_patterns 和 generated_patterns)
|
|
10
|
+
test_patterns: ["/test/", "/tests/", "/__tests__/", "/spec/"]
|
|
11
|
+
generated_patterns: ["/generated/", "/build/", "/dist/", "/node_modules/", "/target/", "/.git/"]
|
|
12
|
+
|
|
13
|
+
file_classification:
|
|
14
|
+
source:
|
|
15
|
+
patterns: ["/src/", "/lib/", "/app/"]
|
|
16
|
+
affects: ["business-logic.md"]
|
|
17
|
+
api:
|
|
18
|
+
patterns: ["/api/", "/routes/", "/endpoints/", "/controllers/"]
|
|
19
|
+
affects: ["api-contracts.md", "business-logic.md"]
|
|
20
|
+
model:
|
|
21
|
+
patterns: ["/models/", "/entities/", "/schemas/", "/types/"]
|
|
22
|
+
affects: ["data-models.md"]
|
|
23
|
+
config:
|
|
24
|
+
patterns: ["/config/", "/configs/", "*.yml", "*.yaml", "*.toml", "*.json", "*.env"]
|
|
25
|
+
affects: ["architecture.md"]
|
|
26
|
+
|
|
27
|
+
module_types:
|
|
28
|
+
service:
|
|
29
|
+
skip: []
|
|
30
|
+
library:
|
|
31
|
+
skip: ["api-contracts.md"]
|
|
32
|
+
detect_patterns: ["*-lib", "*-common", "*-shared", "*-utils"]
|
|
33
|
+
frontend:
|
|
34
|
+
skip: ["source-tree-analysis.md", "api-contracts.md"]
|
|
35
|
+
detect_patterns: ["*-web", "*-ui", "*-frontend", "*-app"]
|
|
36
|
+
demo:
|
|
37
|
+
skip: ["*"]
|
|
38
|
+
detect_patterns: ["*-example", "*-demo", "*-sample"]
|
|
39
|
+
|
|
40
|
+
# 跳过的方法名(覆盖率校验时排除)
|
|
41
|
+
skip_method_names:
|
|
42
|
+
- "toString"
|
|
43
|
+
- "hashCode"
|
|
44
|
+
- "equals"
|
|
45
|
+
- "clone"
|
|
46
|
+
- "finalize"
|
|
47
|
+
- "__init__"
|
|
48
|
+
- "__str__"
|
|
49
|
+
- "__repr__"
|
|
50
|
+
- "__eq__"
|
|
51
|
+
- "__hash__"
|
|
52
|
+
|
|
53
|
+
# 跳过的方法前缀(无参时跳过)
|
|
54
|
+
skip_method_prefixes_no_params:
|
|
55
|
+
- "get"
|
|
56
|
+
- "is"
|
|
57
|
+
|
|
58
|
+
# 跳过的方法前缀(无论有无参数都跳过)
|
|
59
|
+
skip_method_prefixes_any:
|
|
60
|
+
- "set"
|
|
61
|
+
|
|
62
|
+
# Generic preset 不定义 architecture_sources 和 key_annotations
|
|
63
|
+
# Agent 会根据实际文件内容自行判断
|
|
64
|
+
|
|
65
|
+
# 覆盖率校验
|
|
66
|
+
coverage_threshold: 0.8
|
|
67
|
+
coverage_skip_patterns:
|
|
68
|
+
- "/test/"
|
|
69
|
+
- "/tests/"
|
|
70
|
+
- "/__tests__/"
|
|
71
|
+
- "/spec/"
|
|
72
|
+
- "/generated/"
|
|
73
|
+
- "/build/"
|
|
74
|
+
- "/dist/"
|
|
75
|
+
- "/node_modules/"
|
|
76
|
+
|
|
77
|
+
# ============================================================
|
|
78
|
+
# 进度监控配置
|
|
79
|
+
# ============================================================
|
|
80
|
+
progress:
|
|
81
|
+
heavy_docs: ["business-logic", "architecture", "data-models"]
|
|
82
|
+
light_timeout_min: 4.0
|
|
83
|
+
heavy_timeout_min: 6.0
|
|
84
|
+
spawn_timeout:
|
|
85
|
+
default: 480 # 8 min,兜底
|
|
86
|
+
source-tree-analysis: 360 # 6 min,模板化程度高
|
|
87
|
+
data-models: 480 # 8 min
|
|
88
|
+
api-contracts: 360 # 6 min
|
|
89
|
+
architecture: 600 # 10 min,输入多
|
|
90
|
+
business-logic: 720 # 12 min,最复杂
|
|
91
|
+
utils: 300 # 5 min
|
|
92
|
+
index: 300 # 5 min,依赖前序文档但自身简单
|
|
93
|
+
|
|
94
|
+
# ============================================================
|
|
95
|
+
# 文档章节校验规则(validate_output.py 使用)
|
|
96
|
+
# ============================================================
|
|
97
|
+
section_checks:
|
|
98
|
+
"business-logic.md":
|
|
99
|
+
must_have: []
|
|
100
|
+
should_have: [["错误处理", "异常处理", "错误码"]]
|
|
101
|
+
"architecture.md":
|
|
102
|
+
must_have: [["技术栈", "技术选型", "框架"]]
|
|
103
|
+
should_have: [["依赖", "依赖清单"], ["配置", "配置管理"]]
|
|
104
|
+
"data-models.md":
|
|
105
|
+
must_have: []
|
|
106
|
+
should_have: [["字段", "Field", "属性"]]
|
|
107
|
+
"index.md":
|
|
108
|
+
must_have: [["模块概览", "模块概述", "模块简介"]]
|
|
109
|
+
should_have: []
|
|
110
|
+
"source-tree-analysis.md":
|
|
111
|
+
must_have: [["目录结构", "文件树", "源码结构", "文件结构"]]
|
|
112
|
+
should_have: []
|
|
113
|
+
"api-contracts.md":
|
|
114
|
+
must_have: []
|
|
115
|
+
should_have: [["接口汇总", "接口总览", "API"]]
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Java / Spring Boot 检查维度
|
|
2
|
+
|
|
3
|
+
> 语言特定的自检维度,配合 `doc-quality-standard.md` 和 `doc-coverage-shared.md` 使用。
|
|
4
|
+
|
|
5
|
+
## source-tree-analysis.md
|
|
6
|
+
|
|
7
|
+
修复标准见 `doc-quality-standard.md` 5.7 节(完整文件树 + 每文件详解格式 + 内容深度基准)。
|
|
8
|
+
|
|
9
|
+
1. 文件完整性 — 文档列出的每个文件在源码中存在
|
|
10
|
+
2. 目录结构 — 目录层级、包名与实际一致
|
|
11
|
+
3. 文件职责描述 — 描述与类的实际功能匹配(检查类注释、接口、继承)
|
|
12
|
+
4. 文件数统计 — 文档中的计数与实际一致
|
|
13
|
+
5. 新增/删除文件 — 源码变动在文档中反映
|
|
14
|
+
|
|
15
|
+
## index.md
|
|
16
|
+
|
|
17
|
+
修复标准见 `doc-quality-standard.md` 5.8 节(基本信息表 + 接口总览表 + 缓存策略概览表 + 文档导航 + 内容深度基准)。
|
|
18
|
+
|
|
19
|
+
1. 链接有效性 — 所有 `[text](file.md)` 链接指向存在的文件
|
|
20
|
+
2. 文件数/统计 — 引用的数量与实际一致
|
|
21
|
+
3. 模块描述 — 概述与模块实际功能匹配
|
|
22
|
+
4. 文档完整性 — 所有 .md 文件都在 index.md 中有链接
|
|
23
|
+
|
|
24
|
+
## architecture.md
|
|
25
|
+
|
|
26
|
+
对比源:`pom.xml`、`application.yml`/`bootstrap.yml`、`@Configuration`/`@EnableXxx` 类。
|
|
27
|
+
|
|
28
|
+
1. 技术栈版本 — Spring Boot、MyBatis、中间件版本与 pom.xml 一致
|
|
29
|
+
2. 依赖清单 — 无遗漏的关键依赖
|
|
30
|
+
3. 分层结构 — Controller → Service → Mapper 分层与实际包结构一致
|
|
31
|
+
4. 中间件配置 — Redis、Kafka、ES 等配置与 yml 一致
|
|
32
|
+
5. 组件关系 — Feign、Dubbo 调用关系与 `@FeignClient`/`@DubboReference` 一致
|
|
33
|
+
6. 配置项 — Nacos/yml 中的关键配置项在文档中有记录
|
|
34
|
+
|
|
35
|
+
## data-models.md
|
|
36
|
+
|
|
37
|
+
对比源:`domain/`、`entity/`、`dto/`、`vo/`、`param/`、`mapper/` 目录。
|
|
38
|
+
|
|
39
|
+
1. 实体完整性 — 每个 Domain/Entity 类在文档中有记录
|
|
40
|
+
2. 字段一致性 — 字段名、类型与源码一致(含泛型)
|
|
41
|
+
3. 注解准确性 — `@TableName`、`@Column`、`@TableField`、`@JsonProperty` 与源码一致
|
|
42
|
+
4. 表名映射 — 文档中的表名与 `@TableName`/`@Entity` 一致
|
|
43
|
+
5. DTO/VO 覆盖 — 请求/响应 DTO、VO、Param 类在文档中有记录
|
|
44
|
+
6. 枚举值 — 枚举类的所有值完整列出
|
|
45
|
+
7. 继承/实现 — 继承关系、实现的接口与源码一致
|
|
46
|
+
|
|
47
|
+
## api-contracts.md
|
|
48
|
+
|
|
49
|
+
对比源:`controller/` 和 `api/` 目录。
|
|
50
|
+
|
|
51
|
+
1. 接口完整性 — 每个 Controller/Feign 方法在文档中有记录
|
|
52
|
+
2. URL 路径 — `@RequestMapping`/`@GetMapping` 等路径与文档一致
|
|
53
|
+
3. HTTP 方法 — GET/POST/PUT/DELETE 与源码一致
|
|
54
|
+
4. 请求参数 — `@RequestParam`、`@PathVariable`、`@RequestBody` 的参数名、类型一致
|
|
55
|
+
5. 响应类型 — 返回值类型(含泛型)与文档一致
|
|
56
|
+
6. 错误码 — 方法中抛出的异常/错误码在文档中有记录
|
|
57
|
+
7. Feign 降级 — `@FeignClient` 的 fallback/fallbackFactory 与文档一致
|
|
58
|
+
8. 权限注解 — `@PreAuthorize`、`@RequiresPermissions` 与文档一致
|
|
59
|
+
|
|
60
|
+
## business-logic.md
|
|
61
|
+
|
|
62
|
+
按 `doc-quality-standard.md` 第 5 节 10 项维度,额外关注以下 Java 特定注解:
|
|
63
|
+
|
|
64
|
+
| 注解 | 检查点 |
|
|
65
|
+
|------|--------|
|
|
66
|
+
| `@Transactional` | 传播级别、回滚规则、只读标记 |
|
|
67
|
+
| `@Async` | 线程池配置、返回类型 |
|
|
68
|
+
| `@Scheduled`/`@XxlJob` | cron 表达式、执行频率 |
|
|
69
|
+
| `@KafkaListener` | topic、groupId、并发数 |
|
|
70
|
+
| `@Cacheable`/`@CacheEvict` | 缓存名、key 表达式、TTL |
|
|
71
|
+
| `@SentinelResource` | 资源名、降级策略 |
|
|
72
|
+
| `@Retryable`/`@CircuitBreaker` | 重试次数、熔断条件 |
|
|
73
|
+
| `@Value` | 配置项 key、默认值 |
|
|
74
|
+
|
|
75
|
+
额外检查维度(引用完整性与去重合规):
|
|
76
|
+
|
|
77
|
+
11. **引用完整性** — business-logic.md 中所有 `](./xxx.md` 和 `](../xxx/` 链接指向存在的文件,锚点对应的章节标题存在
|
|
78
|
+
12. **去重合规** — 以下内容不应在 business-logic.md 中展开(应为引用链接,见 `doc-quality-standard.md` 5.1.1 节):
|
|
79
|
+
- 缓存 Key 拼接规则/TTL/CAS 流程(归属 caching.md)
|
|
80
|
+
- 消息队列消息体 JSON 示例/完整消费逻辑(归属 messaging.md)
|
|
81
|
+
- DTO/VO/Entity 完整字段表(归属 data-models.md)
|
|
82
|
+
- 接口完整参数表/响应结构(归属 api-contracts.md)
|
|
83
|
+
- 检测方式:在 business-logic.md 中搜索以下模式,命中 > 3 次视为重复:
|
|
84
|
+
- `| 字段 | 类型 |`(字段表格头)
|
|
85
|
+
- Redis Key 常量(如 `POINT_ACCOUNT_BASE`、`crm:point:account:`)
|
|
86
|
+
- `max-poll-records`、`batch-size` 等中间件配置参数
|
|
87
|
+
|
|
88
|
+
## 可选文档
|
|
89
|
+
|
|
90
|
+
### 可选文档触发条件
|
|
91
|
+
|
|
92
|
+
扫描源码时,命中以下模式则对应文档变为必需:
|
|
93
|
+
|
|
94
|
+
| 文档 | 触发模式(任一命中即触发) |
|
|
95
|
+
|------|------------------------|
|
|
96
|
+
| messaging.md | `@KafkaListener`、`kafkaTemplate`、`KafkaProducer`、`@StreamListener`、`implements ConsumerSeekAware`、`@PulsarListener`、`@RabbitListener`、`@RocketMQMessageListener` |
|
|
97
|
+
| caching.md | `RedisTemplate`、`StringRedisTemplate`、`RedisService`、`@Cacheable`、`@CacheEvict`、`redissonClient`、`RLock`、`MemcachedClient`、`CaffeineCacheManager` |
|
|
98
|
+
| external-integrations.md | `RestTemplate`、`WebClient`、`OkHttpClient`、`HttpUtil`、`@FeignClient` 字段注入(本模块调用外部服务;排除本模块自身定义的 `@FeignClient` 接口,那些归 api-contracts.md) |
|
|
99
|
+
|
|
100
|
+
检测命令示例:
|
|
101
|
+
```shell
|
|
102
|
+
# ⚠️ 推荐使用 extract_file_list 代替 grep(更精确,自动排除测试文件):
|
|
103
|
+
# python -X utf8 engine/skeleton/extract_file_list.py --skeleton {skeleton} --preset java-spring --doc-type kafka --source-cache {repo} --output /dev/null
|
|
104
|
+
|
|
105
|
+
# 如果使用 grep,必须排除测试目录(避免 JUnit @Before/@After 误报为 AOP):
|
|
106
|
+
# 检测 Kafka 使用
|
|
107
|
+
git -C {repo} grep -l "KafkaListener\|kafkaTemplate\|KafkaProducer" {ref} -- "src/main/**/*.java"
|
|
108
|
+
|
|
109
|
+
# 检测 Redis 使用
|
|
110
|
+
git -C {repo} grep -l "RedisTemplate\|StringRedisTemplate\|@Cacheable\|redissonClient" {ref} -- "src/main/**/*.java"
|
|
111
|
+
|
|
112
|
+
# 检测外部 HTTP 调用
|
|
113
|
+
git -C {repo} grep -l "RestTemplate\|WebClient\|OkHttpClient" {ref} -- "src/main/**/*.java"
|
|
114
|
+
|
|
115
|
+
# 检测 AOP(注意:必须用 @Aspect 而非 @Before/@After,后者会误报 JUnit 注解)
|
|
116
|
+
git -C {repo} grep -l "@Aspect\|@Pointcut" {ref} -- "src/main/**/*.java"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### messaging.md
|
|
120
|
+
|
|
121
|
+
1. Topic/Queue 完整性 — 所有消息生产/消费的 topic/queue 有记录
|
|
122
|
+
2. 消息体结构 — 生产者发送的对象类型与文档一致
|
|
123
|
+
3. 消费者分组 — groupId/subscription 与源码一致
|
|
124
|
+
4. 生产/消费关系 — 哪个类生产、哪个类消费与源码一致
|
|
125
|
+
|
|
126
|
+
### caching.md
|
|
127
|
+
|
|
128
|
+
1. Key/Cache 完整性 — 所有缓存操作的 key pattern/cache name 有记录
|
|
129
|
+
2. TTL — 过期时间与源码一致
|
|
130
|
+
3. 数据类型 — 数据结构类型与源码一致
|
|
131
|
+
|
|
132
|
+
### external-integrations.md
|
|
133
|
+
|
|
134
|
+
1. 集成方完整性 — 所有外部 HTTP/SDK 调用有记录
|
|
135
|
+
2. 接口地址 — URL/配置项与源码一致
|
|
136
|
+
3. 认证方式 — Token/签名/OAuth 与源码一致
|
|
137
|
+
|
|
138
|
+
### enums-and-constants.md
|
|
139
|
+
|
|
140
|
+
对比源:`enum/`、`constant/`、`enums/` 目录及散布在各包中的枚举/常量类。
|
|
141
|
+
|
|
142
|
+
1. 枚举完整性 — 每个枚举类在文档中有记录
|
|
143
|
+
2. 枚举值准确性 — 所有枚举值完整列出,无遗漏
|
|
144
|
+
3. 常量值正确性 — 常量的实际值与文档一致(数值验证)
|
|
145
|
+
4. 使用上下文 — 枚举/常量的业务含义与源码注释/使用场景一致
|
|
146
|
+
5. 静态方法覆盖 — 枚举类的静态方法(业务规则载体)在文档中有记录
|
|
147
|
+
|
|
148
|
+
### database-access.md
|
|
149
|
+
|
|
150
|
+
对比源:`mapper/`、`dao/`、`repository/` 目录,MyBatis XML 映射文件。
|
|
151
|
+
|
|
152
|
+
1. Mapper 完整性 — 每个 Mapper/DAO 接口在文档中有记录
|
|
153
|
+
2. SQL 语义准确性 — 查询方法的 WHERE 条件、JOIN 关系、排序规则与源码/XML 一致
|
|
154
|
+
3. 事务边界 — `@Transactional` 的传播行为、隔离级别、回滚条件与源码一致
|
|
155
|
+
4. 分页参数 — 分页实现方式(PageHelper/MyBatis-Plus)及参数与源码一致
|
|
156
|
+
5. 批量操作 — 批量大小、超时时间与源码配置一致
|
|
157
|
+
6. 表名映射 — 操作的表名与实际 SQL/注解一致
|
|
158
|
+
|
|
159
|
+
### scheduled-tasks.md
|
|
160
|
+
|
|
161
|
+
对比源:`@Scheduled`、`@XxlJob`、`@EnableScheduling` 相关类。
|
|
162
|
+
|
|
163
|
+
1. 任务完整性 — 所有定时任务/Job 在文档中有记录
|
|
164
|
+
2. Cron 表达式 — 调度表达式与源码/配置一致
|
|
165
|
+
3. 执行频率 — 文档描述的频率与 cron/fixedRate/fixedDelay 一致
|
|
166
|
+
4. 幂等性说明 — 幂等保证机制(分布式锁/状态机/版本号)与源码一致
|
|
167
|
+
5. 异常处理 — 任务失败后的行为(重试/告警/跳过)与源码一致
|
|
168
|
+
6. 分片策略 — XxlJob 分片参数、路由策略与配置一致
|
|
169
|
+
|
|
170
|
+
### error-handling.md
|
|
171
|
+
|
|
172
|
+
对比源:`@ControllerAdvice`、`@ExceptionHandler`、自定义异常类。
|
|
173
|
+
|
|
174
|
+
1. 异常类完整性 — 所有自定义异常类在文档中有记录
|
|
175
|
+
2. 异常层次结构 — 从基类到具体异常的继承链与源码一致
|
|
176
|
+
3. 错误码映射 — 错误码 → 异常类 → HTTP 状态码的映射与源码一致
|
|
177
|
+
4. 全局处理器逻辑 — `@ExceptionHandler` 的匹配规则、处理步骤、返回格式与源码一致
|
|
178
|
+
5. 用户提示信息 — 错误码对应的用户可见消息与源码一致
|
|
179
|
+
|
|
180
|
+
### security.md
|
|
181
|
+
|
|
182
|
+
对比源:`SecurityConfig`、`Filter`、`@PreAuthorize`、Token 处理类。
|
|
183
|
+
|
|
184
|
+
1. 认证流程完整性 — 从请求进入到身份确认的每一步与源码一致
|
|
185
|
+
2. Token 机制 — 解析/验证/刷新逻辑与源码一致
|
|
186
|
+
3. 权限模型 — RBAC/ABAC 角色-权限映射与源码/配置一致
|
|
187
|
+
4. 过滤器链顺序 — Filter 执行顺序、职责、放行/拦截条件与源码一致
|
|
188
|
+
5. 权限标识 — `@PreAuthorize`、`@RequiresPermissions` 的权限字符串与源码一致
|
|
189
|
+
|
|
190
|
+
### aop-and-interceptors.md
|
|
191
|
+
|
|
192
|
+
对比源:`@Aspect` 类、`HandlerInterceptor` 实现、`WebMvcConfigurer`。
|
|
193
|
+
|
|
194
|
+
1. 切面完整性 — 所有 `@Aspect` 类在文档中有记录
|
|
195
|
+
2. 切点表达式 — execution/annotation/within 表达式与源码一致
|
|
196
|
+
3. 执行顺序 — `@Order` 值或 `Ordered.getOrder()` 与源码一致
|
|
197
|
+
4. 拦截器链 — 注册顺序、匹配路径与 `WebMvcConfigurer` 配置一致
|
|
198
|
+
5. 通知类型 — @Before/@After/@Around 的逻辑与源码一致
|
|
199
|
+
|
|
200
|
+
### observability.md
|
|
201
|
+
|
|
202
|
+
对比源:Micrometer 指标注册、日志配置、健康检查端点。
|
|
203
|
+
|
|
204
|
+
1. 指标完整性 — 所有自定义 Counter/Timer/Gauge 在文档中有记录
|
|
205
|
+
2. 指标名称 — metric name 与源码中 `MeterRegistry` 注册的一致
|
|
206
|
+
3. 告警阈值 — 阈值配置与源码/配置文件一致
|
|
207
|
+
4. 日志配置 — 日志级别、格式、输出目标与 logback/log4j 配置一致
|
|
208
|
+
5. 健康检查 — 自定义 HealthIndicator 与源码一致
|
|
209
|
+
|
|
210
|
+
### async-and-events.md
|
|
211
|
+
|
|
212
|
+
对比源:`@Async` 方法、`@EventListener`、`ApplicationEvent` 子类、线程池配置。
|
|
213
|
+
|
|
214
|
+
1. 线程池配置 — 核心线程数、最大线程数、队列容量与源码一致
|
|
215
|
+
2. 异步方法完整性 — 所有 `@Async` 方法在文档中有记录
|
|
216
|
+
3. 事件发布/订阅 — 发布者、订阅者、事件体结构与源码一致
|
|
217
|
+
4. 异步失败处理 — 异常后的行为(吞掉/日志/回调/补偿)与源码一致
|
|
218
|
+
5. 事件执行时机 — `@TransactionalEventListener` 的 phase 与源码一致
|
|
219
|
+
|
|
220
|
+
### utils.md
|
|
221
|
+
|
|
222
|
+
对比源:`util/`、`utils/`、`helper/`、`common/` 目录。
|
|
223
|
+
|
|
224
|
+
1. 工具类完整性 — 有复杂逻辑的工具方法在文档中有记录
|
|
225
|
+
2. 方法签名准确性 — 参数类型、返回类型与源码一致
|
|
226
|
+
3. 边界行为 — null 处理、精度丢失、时区问题等隐式行为与源码一致
|
|
227
|
+
4. 线程安全性 — 并发相关设计(如有)与源码一致
|
|
228
|
+
5. 使用上下文 — 高频调用方法的典型调用场景与实际使用一致
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Audit dimensions configuration for java-spring preset
|
|
2
|
+
# Loaded by AuditDocsStep to determine check criteria per doc type.
|
|
3
|
+
# Each dimension defines: name, description, severity, required.
|
|
4
|
+
#
|
|
5
|
+
# severity: error | warning | info
|
|
6
|
+
# required: true → failure is an error; false → failure is a warning
|
|
7
|
+
|
|
8
|
+
version: "1.0"
|
|
9
|
+
|
|
10
|
+
dimensions:
|
|
11
|
+
source-tree-analysis:
|
|
12
|
+
- name: file_completeness
|
|
13
|
+
description: "骨架中所有文件是否在文档中列出"
|
|
14
|
+
severity: error
|
|
15
|
+
required: true
|
|
16
|
+
- name: directory_structure
|
|
17
|
+
description: "是否按 controller/service/dao/config 等分层组织"
|
|
18
|
+
severity: warning
|
|
19
|
+
required: false
|
|
20
|
+
- name: file_responsibility
|
|
21
|
+
description: "每文件是否有一句话功能说明"
|
|
22
|
+
severity: warning
|
|
23
|
+
required: true
|
|
24
|
+
- name: new_deleted_files
|
|
25
|
+
description: "源码有但文档无/文档有但源码无"
|
|
26
|
+
severity: error
|
|
27
|
+
required: true
|
|
28
|
+
|
|
29
|
+
data-models:
|
|
30
|
+
- name: entity_completeness
|
|
31
|
+
description: "所有实体类是否在文档中列出"
|
|
32
|
+
severity: error
|
|
33
|
+
required: true
|
|
34
|
+
- name: field_consistency
|
|
35
|
+
description: "字段名、类型、说明是否与源码一致"
|
|
36
|
+
severity: error
|
|
37
|
+
required: true
|
|
38
|
+
- name: annotation_accuracy
|
|
39
|
+
description: "@TableName/@Column 等注解是否准确"
|
|
40
|
+
severity: warning
|
|
41
|
+
required: false
|
|
42
|
+
- name: dto_vo_coverage
|
|
43
|
+
description: "DTO/VO 类是否覆盖"
|
|
44
|
+
severity: warning
|
|
45
|
+
required: true
|
|
46
|
+
- name: enum_values
|
|
47
|
+
description: "枚举值是否完整准确"
|
|
48
|
+
severity: error
|
|
49
|
+
required: true
|
|
50
|
+
- name: inheritance
|
|
51
|
+
description: "继承关系是否标注"
|
|
52
|
+
severity: info
|
|
53
|
+
required: false
|
|
54
|
+
|
|
55
|
+
api-contracts:
|
|
56
|
+
- name: interface_completeness
|
|
57
|
+
description: "所有接口是否列出"
|
|
58
|
+
severity: error
|
|
59
|
+
required: true
|
|
60
|
+
- name: url_path
|
|
61
|
+
description: "URL 路径是否准确"
|
|
62
|
+
severity: error
|
|
63
|
+
required: true
|
|
64
|
+
- name: http_method
|
|
65
|
+
description: "HTTP 方法是否正确"
|
|
66
|
+
severity: error
|
|
67
|
+
required: true
|
|
68
|
+
- name: request_params
|
|
69
|
+
description: "请求参数是否与源码一致"
|
|
70
|
+
severity: error
|
|
71
|
+
required: true
|
|
72
|
+
- name: response_type
|
|
73
|
+
description: "响应类型是否准确"
|
|
74
|
+
severity: warning
|
|
75
|
+
required: true
|
|
76
|
+
- name: error_codes
|
|
77
|
+
description: "错误码是否列出"
|
|
78
|
+
severity: warning
|
|
79
|
+
required: false
|
|
80
|
+
|
|
81
|
+
business-logic:
|
|
82
|
+
- name: method_purpose
|
|
83
|
+
description: "方法用途描述是否准确"
|
|
84
|
+
severity: error
|
|
85
|
+
required: true
|
|
86
|
+
- name: core_logic_flow
|
|
87
|
+
description: "核心逻辑流程是否完整"
|
|
88
|
+
severity: error
|
|
89
|
+
required: true
|
|
90
|
+
- name: branch_conditions
|
|
91
|
+
description: "分支条件是否完整描述"
|
|
92
|
+
severity: warning
|
|
93
|
+
required: true
|
|
94
|
+
- name: exception_handling
|
|
95
|
+
description: "异常处理是否标注"
|
|
96
|
+
severity: warning
|
|
97
|
+
required: false
|
|
98
|
+
- name: reference_integrity
|
|
99
|
+
description: "跨文档引用链接是否有效"
|
|
100
|
+
severity: warning
|
|
101
|
+
required: true
|
|
102
|
+
- name: dedup_compliance
|
|
103
|
+
description: "是否有与其他文档重复的内容"
|
|
104
|
+
severity: info
|
|
105
|
+
required: false
|
|
106
|
+
|
|
107
|
+
architecture:
|
|
108
|
+
- name: tech_stack_versions
|
|
109
|
+
description: "框架版本是否与 pom.xml 一致"
|
|
110
|
+
severity: error
|
|
111
|
+
required: true
|
|
112
|
+
- name: middleware_config
|
|
113
|
+
description: "中间件配置是否有具体 key/topic/index"
|
|
114
|
+
severity: warning
|
|
115
|
+
required: true
|
|
116
|
+
- name: layer_structure
|
|
117
|
+
description: "分层架构描述是否准确"
|
|
118
|
+
severity: warning
|
|
119
|
+
required: false
|
|
120
|
+
- name: config_items
|
|
121
|
+
description: "关键配置项是否列出"
|
|
122
|
+
severity: warning
|
|
123
|
+
required: false
|
|
124
|
+
|
|
125
|
+
caching:
|
|
126
|
+
- name: key_completeness
|
|
127
|
+
description: "所有 Redis Key 是否列出"
|
|
128
|
+
severity: error
|
|
129
|
+
required: true
|
|
130
|
+
- name: ttl_accuracy
|
|
131
|
+
description: "TTL 值是否与源码一致"
|
|
132
|
+
severity: error
|
|
133
|
+
required: true
|
|
134
|
+
- name: operation_type
|
|
135
|
+
description: "操作类型(读/写/删)是否标注"
|
|
136
|
+
severity: warning
|
|
137
|
+
required: false
|
|
138
|
+
|
|
139
|
+
messaging:
|
|
140
|
+
- name: topic_completeness
|
|
141
|
+
description: "所有 Topic 是否列出"
|
|
142
|
+
severity: error
|
|
143
|
+
required: true
|
|
144
|
+
- name: consumer_producer
|
|
145
|
+
description: "消费者/生产者是否标注"
|
|
146
|
+
severity: warning
|
|
147
|
+
required: true
|
|
148
|
+
- name: message_format
|
|
149
|
+
description: "消息体格式是否描述"
|
|
150
|
+
severity: warning
|
|
151
|
+
required: false
|
|
152
|
+
|
|
153
|
+
database-access:
|
|
154
|
+
- name: mapper_completeness
|
|
155
|
+
description: "所有 Mapper/Repository 是否列出"
|
|
156
|
+
severity: error
|
|
157
|
+
required: true
|
|
158
|
+
- name: sql_accuracy
|
|
159
|
+
description: "SQL 操作描述是否准确"
|
|
160
|
+
severity: warning
|
|
161
|
+
required: true
|
|
162
|
+
- name: transaction_boundary
|
|
163
|
+
description: "事务边界是否标注"
|
|
164
|
+
severity: warning
|
|
165
|
+
required: false
|
|
166
|
+
|
|
167
|
+
enums-and-constants:
|
|
168
|
+
- name: enum_completeness
|
|
169
|
+
description: "所有枚举类是否列出"
|
|
170
|
+
severity: error
|
|
171
|
+
required: true
|
|
172
|
+
- name: value_accuracy
|
|
173
|
+
description: "枚举值是否与源码一致"
|
|
174
|
+
severity: error
|
|
175
|
+
required: true
|
|
176
|
+
- name: constant_coverage
|
|
177
|
+
description: "关键常量是否覆盖"
|
|
178
|
+
severity: warning
|
|
179
|
+
required: false
|
|
180
|
+
|
|
181
|
+
external-integrations:
|
|
182
|
+
- name: service_completeness
|
|
183
|
+
description: "所有外部服务调用是否列出"
|
|
184
|
+
severity: error
|
|
185
|
+
required: true
|
|
186
|
+
- name: url_accuracy
|
|
187
|
+
description: "调用地址/接口是否准确"
|
|
188
|
+
severity: error
|
|
189
|
+
required: true
|
|
190
|
+
- name: error_handling
|
|
191
|
+
description: "异常处理/降级策略是否描述"
|
|
192
|
+
severity: warning
|
|
193
|
+
required: false
|
|
194
|
+
|
|
195
|
+
utils:
|
|
196
|
+
- name: class_completeness
|
|
197
|
+
description: "工具类是否列出"
|
|
198
|
+
severity: warning
|
|
199
|
+
required: true
|
|
200
|
+
- name: method_purpose
|
|
201
|
+
description: "方法用途是否描述"
|
|
202
|
+
severity: warning
|
|
203
|
+
required: false
|