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,107 @@
|
|
|
1
|
+
# 任务:生成 {module_name} 模块的 async-and-events.md
|
|
2
|
+
|
|
3
|
+
{module_description}
|
|
4
|
+
|
|
5
|
+
{execution_guidance}
|
|
6
|
+
|
|
7
|
+
## 你必须遵守的规则(违反任何一条即为失败)
|
|
8
|
+
|
|
9
|
+
1. **禁止编造** — 线程池参数、事件类名、异步方法签名必须从源码验证
|
|
10
|
+
2. **数值验证铁律** — 核心线程数、最大线程数、队列容量、超时时间 → 必须 Read 源码确认
|
|
11
|
+
3. **事件发布/订阅关系必须完整** — 谁发布、谁订阅、事件体结构、执行时机
|
|
12
|
+
4. **异步失败处理必须明确** — @Async 方法异常后的行为:吞掉/日志/回调/补偿
|
|
13
|
+
|
|
14
|
+
## 输出约束
|
|
15
|
+
|
|
16
|
+
- 信息密度优先,避免冗余
|
|
17
|
+
- 确保中文内容完整无截断
|
|
18
|
+
|
|
19
|
+
## 输入
|
|
20
|
+
|
|
21
|
+
- 骨架 JSON:`{skeleton_path}`({skeleton_size}KB,{skeleton_read_instruction})
|
|
22
|
+
- 源码缓存:`{source_cache_path}`
|
|
23
|
+
- 输出文件:`{output_path}/async-and-events.md`
|
|
24
|
+
|
|
25
|
+
## 需要读取的源码文件
|
|
26
|
+
|
|
27
|
+
根据以下文件清单读取源码文件进行分析:
|
|
28
|
+
|
|
29
|
+
{file_list}
|
|
30
|
+
|
|
31
|
+
## 文件读取说明
|
|
32
|
+
|
|
33
|
+
你需要:
|
|
34
|
+
1. 逐个读取上述文件清单中的源码文件
|
|
35
|
+
2. 分析文件内容,提取所需信息
|
|
36
|
+
3. 基于原始源码生成文档,禁止编造
|
|
37
|
+
4. 验证所有配置参数和数值
|
|
38
|
+
|
|
39
|
+
## 内容组织
|
|
40
|
+
|
|
41
|
+
### 1. 异步方法总览
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
| 序号 | 方法 | 所在类 | 线程池 | 返回类型 | 失败处理 |
|
|
45
|
+
|------|------|--------|--------|---------|---------|
|
|
46
|
+
| 1 | sendNotification | NotifyService | taskExecutor | void | 日志记录 |
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2. 线程池配置
|
|
50
|
+
|
|
51
|
+
每个线程池必须包含:
|
|
52
|
+
- **Bean 名称**:@Qualifier 或方法名
|
|
53
|
+
- **核心线程数**:具体值 + 来源(硬编码/配置项)
|
|
54
|
+
- **最大线程数**:具体值
|
|
55
|
+
- **队列类型与容量**:LinkedBlockingQueue(1000) / SynchronousQueue 等
|
|
56
|
+
- **拒绝策略**:CallerRunsPolicy / AbortPolicy / 自定义
|
|
57
|
+
- **线程名前缀**:用于日志追踪
|
|
58
|
+
- **关闭策略**:waitForTasksToCompleteOnShutdown / awaitTerminationSeconds
|
|
59
|
+
|
|
60
|
+
### 3. 异步方法详解(复杂方法独立小节)
|
|
61
|
+
|
|
62
|
+
每个异步方法必须包含:
|
|
63
|
+
- **方法签名**:完整签名含参数
|
|
64
|
+
- **使用的线程池**:@Async("poolName")
|
|
65
|
+
- **调用方**:哪些类/方法触发此异步调用
|
|
66
|
+
- **执行逻辑**:编号步骤
|
|
67
|
+
- **异常处理**:AsyncUncaughtExceptionHandler / try-catch / 补偿机制
|
|
68
|
+
- **注意事项**:同类调用失效、事务边界、上下文传递
|
|
69
|
+
|
|
70
|
+
### 4. Spring 事件机制
|
|
71
|
+
|
|
72
|
+
#### 4.1 事件定义
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
| 事件类 | 继承自 | 携带数据 | 发布时机 |
|
|
76
|
+
|--------|--------|---------|---------|
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### 4.2 事件发布点
|
|
80
|
+
|
|
81
|
+
每个发布点说明:
|
|
82
|
+
- 发布位置(类.方法)
|
|
83
|
+
- 发布时机(事务提交前/后、业务逻辑中)
|
|
84
|
+
- 事件构造方式
|
|
85
|
+
|
|
86
|
+
#### 4.3 事件监听器
|
|
87
|
+
|
|
88
|
+
每个监听器必须包含:
|
|
89
|
+
- **监听事件**:@EventListener / @TransactionalEventListener
|
|
90
|
+
- **执行阶段**(@TransactionalEventListener):AFTER_COMMIT / BEFORE_COMMIT / AFTER_ROLLBACK
|
|
91
|
+
- **执行逻辑**:编号步骤
|
|
92
|
+
- **是否异步**:@Async 组合使用
|
|
93
|
+
- **失败处理**:异常后是否影响主流程
|
|
94
|
+
|
|
95
|
+
### 5. 上下文传递
|
|
96
|
+
|
|
97
|
+
- SecurityContext 跨线程传递方式
|
|
98
|
+
- MDC 日志上下文传递
|
|
99
|
+
- 自定义 ThreadLocal 传递(TaskDecorator)
|
|
100
|
+
|
|
101
|
+
## 完成后自检清单
|
|
102
|
+
|
|
103
|
+
- [ ] 每个线程池有完整参数(核心/最大/队列/拒绝策略)
|
|
104
|
+
- [ ] 事件发布/订阅关系已完整映射
|
|
105
|
+
- [ ] @TransactionalEventListener 的执行阶段已标注
|
|
106
|
+
- [ ] 异步方法的异常处理已说明
|
|
107
|
+
- [ ] 数值从源码验证
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 任务:审计 {module_name} 模块的 api-contracts.md
|
|
2
|
+
|
|
3
|
+
你是一个知识库质量审计员。对比 api-contracts.md 文档内容与源码骨架,找出不一致之处。
|
|
4
|
+
|
|
5
|
+
## 审计维度
|
|
6
|
+
|
|
7
|
+
1. **interface_completeness** — 所有接口是否列出
|
|
8
|
+
2. **url_path** — URL 路径是否准确
|
|
9
|
+
3. **http_method** — HTTP 方法是否正确
|
|
10
|
+
4. **request_params** — 请求参数是否与源码一致
|
|
11
|
+
5. **response_type** — 响应类型是否准确
|
|
12
|
+
6. **error_codes** — 错误码是否列出
|
|
13
|
+
|
|
14
|
+
## 输入
|
|
15
|
+
|
|
16
|
+
- 文档内容: `{doc_content_path}`
|
|
17
|
+
- 骨架数据: `{skeleton_path}`
|
|
18
|
+
- 模块名: {module_name}
|
|
19
|
+
|
|
20
|
+
## 输出格式
|
|
21
|
+
|
|
22
|
+
输出 JSON 数组,每个元素:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"dimension": "维度名称",
|
|
27
|
+
"status": "pass" 或 "fail",
|
|
28
|
+
"detail": "问题描述(fail 时必填)",
|
|
29
|
+
"fix": "修复内容(可选)"
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 审计规则
|
|
34
|
+
|
|
35
|
+
- 对比骨架中 @RestController/@Controller 类的方法与文档中的接口章节
|
|
36
|
+
- 检查 @GetMapping/@PostMapping 等注解的 URL 是否与文档一致
|
|
37
|
+
- 检查方法参数(@RequestParam/@RequestBody/@PathVariable)是否在文档中描述
|
|
38
|
+
- 检查 @FeignClient 接口是否列出
|
|
39
|
+
|
|
40
|
+
只输出 JSON,不要其他文字。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 任务:审计 {module_name} 模块的 architecture.md
|
|
2
|
+
|
|
3
|
+
你是一个知识库质量审计员。对比 architecture.md 文档内容与源码/配置,找出不一致之处。
|
|
4
|
+
|
|
5
|
+
## 审计维度
|
|
6
|
+
|
|
7
|
+
1. **tech_stack_versions** — 框架版本是否与 pom.xml 一致
|
|
8
|
+
2. **middleware_config** — 中间件配置是否有具体 key/topic/index
|
|
9
|
+
3. **layer_structure** — 分层架构描述是否准确
|
|
10
|
+
4. **config_items** — 关键配置项是否列出
|
|
11
|
+
|
|
12
|
+
## 输入
|
|
13
|
+
|
|
14
|
+
- 文档内容: `{doc_content_path}`
|
|
15
|
+
- 骨架数据: `{skeleton_path}`
|
|
16
|
+
- 模块名: {module_name}
|
|
17
|
+
|
|
18
|
+
## 输出格式
|
|
19
|
+
|
|
20
|
+
输出 JSON 数组,每个元素:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"dimension": "维度名称",
|
|
25
|
+
"status": "pass" 或 "fail",
|
|
26
|
+
"detail": "问题描述(fail 时必填)",
|
|
27
|
+
"fix": "修复内容(可选)"
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 审计规则
|
|
32
|
+
|
|
33
|
+
- 检查文档中列出的 Spring Boot / 框架版本是否与 pom.xml 中的 parent version 一致
|
|
34
|
+
- 检查中间件(Redis/Kafka/ES)是否有具体的连接配置或 key 前缀
|
|
35
|
+
- 检查分层描述(controller → service → dao)是否与实际包结构一致
|
|
36
|
+
- 检查 application.yml 中的关键配置项是否在文档中提及
|
|
37
|
+
|
|
38
|
+
只输出 JSON,不要其他文字。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 任务:审计 {module_name} 模块的 business-logic.md
|
|
2
|
+
|
|
3
|
+
你是一个知识库质量审计员。对比 business-logic.md 文档内容与源码骨架,找出不一致之处。
|
|
4
|
+
|
|
5
|
+
## 审计维度
|
|
6
|
+
|
|
7
|
+
1. **method_purpose** — 方法用途描述是否准确
|
|
8
|
+
2. **core_logic_flow** — 核心逻辑流程是否完整
|
|
9
|
+
3. **branch_conditions** — 分支条件是否完整描述
|
|
10
|
+
4. **exception_handling** — 异常处理是否标注
|
|
11
|
+
5. **reference_integrity** — 跨文档引用链接是否有效
|
|
12
|
+
6. **dedup_compliance** — 是否有与其他文档重复的内容
|
|
13
|
+
|
|
14
|
+
## 输入
|
|
15
|
+
|
|
16
|
+
- 文档内容: `{doc_content_path}`
|
|
17
|
+
- 骨架数据: `{skeleton_path}`
|
|
18
|
+
- 模块名: {module_name}
|
|
19
|
+
|
|
20
|
+
## 输出格式
|
|
21
|
+
|
|
22
|
+
输出 JSON 数组,每个元素:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"dimension": "维度名称",
|
|
27
|
+
"status": "pass" 或 "fail",
|
|
28
|
+
"detail": "问题描述(fail 时必填)",
|
|
29
|
+
"fix": "修复内容(可选,如果能给出具体修复文本则提供)"
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 审计规则
|
|
34
|
+
|
|
35
|
+
- 对比骨架中的 Service 类方法与文档中的 `##` 章节
|
|
36
|
+
- 检查 high complexity 方法是否有完整的流程描述
|
|
37
|
+
- 检查跨文档引用链接 `[text](./other.md)` 是否指向存在的文件
|
|
38
|
+
- 检查是否有大段内容与 data-models.md / api-contracts.md 重复
|
|
39
|
+
|
|
40
|
+
只输出 JSON,不要其他文字。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 任务:审计 {module_name} 模块的 data-models.md
|
|
2
|
+
|
|
3
|
+
你是一个知识库质量审计员。对比 data-models.md 文档内容与源码骨架,找出不一致之处。
|
|
4
|
+
|
|
5
|
+
## 审计维度
|
|
6
|
+
|
|
7
|
+
1. **entity_completeness** — 所有实体类是否在文档中列出
|
|
8
|
+
2. **field_consistency** — 字段名、类型、说明是否与源码一致
|
|
9
|
+
3. **annotation_accuracy** — @TableName/@Column 等注解是否准确
|
|
10
|
+
4. **dto_vo_coverage** — DTO/VO 类是否覆盖
|
|
11
|
+
5. **enum_values** — 枚举值是否完整准确
|
|
12
|
+
6. **inheritance** — 继承关系是否标注
|
|
13
|
+
|
|
14
|
+
## 输入
|
|
15
|
+
|
|
16
|
+
- 文档内容: `{doc_content_path}`
|
|
17
|
+
- 骨架数据: `{skeleton_path}`
|
|
18
|
+
- 模块名: {module_name}
|
|
19
|
+
|
|
20
|
+
## 输出格式
|
|
21
|
+
|
|
22
|
+
输出 JSON 数组,每个元素:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"dimension": "维度名称",
|
|
27
|
+
"status": "pass" 或 "fail",
|
|
28
|
+
"detail": "问题描述(fail 时必填)",
|
|
29
|
+
"fix": "修复内容(可选)"
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 审计规则
|
|
34
|
+
|
|
35
|
+
- 对比骨架中标注 @Entity/@TableName/@Data 的类与文档中的 `##` 章节
|
|
36
|
+
- 检查每个实体的字段表格是否与骨架 fields 一致
|
|
37
|
+
- 检查 DTO/VO 类是否至少有一行提及
|
|
38
|
+
- 检查枚举值列表是否与骨架中的 enum values 一致
|
|
39
|
+
|
|
40
|
+
只输出 JSON,不要其他文字。
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# 任务:生成 {module_name} 模块的 business-logic.md
|
|
2
|
+
|
|
3
|
+
{module_description}
|
|
4
|
+
|
|
5
|
+
{execution_guidance}
|
|
6
|
+
|
|
7
|
+
## 你必须遵守的规则(违反任何一条即为失败)
|
|
8
|
+
|
|
9
|
+
1. **禁止编造** — 所有内容必须有源码出处,无法确认时写 `⚠️ 待验证`
|
|
10
|
+
2. **数值验证铁律** — 超时时间、TTL、线程池参数、锁参数、注解默认值、重试次数、批量大小 → 必须 Read 源码确认,禁止从骨架推断
|
|
11
|
+
3. **引用优先,禁止重复** — 以下内容只写一句话摘要 + 引用链接,不展开:
|
|
12
|
+
- 缓存 Key/TTL → `(详见 [caching.md](./caching.md))`
|
|
13
|
+
- 消息队列消息体/消费逻辑 → `(详见 [messaging.md](./messaging.md))`
|
|
14
|
+
- DTO/VO/Entity 完整字段 → `(详见 [data-models.md](./data-models.md))`
|
|
15
|
+
- 接口签名/参数/响应 → `(详见 [api-contracts.md](./api-contracts.md))`
|
|
16
|
+
- 枚举完整值列表 → `(详见 [enums-and-constants.md](./enums-and-constants.md))`
|
|
17
|
+
4. **按业务流程组织** — `##` 标题用业务域命名(如"促销发布"),不是类名
|
|
18
|
+
5. **只写有聚合价值的内容** — 单个方法内就能看懂的逻辑不需要文档化;跨多个类/方法的流程、隐式业务规则、设计决策才值得写
|
|
19
|
+
6. **设计决策必须标注** — 用 💡 标注设计选择的原因(如"为什么用异步而非同步")
|
|
20
|
+
7. **风险必须标注** — 用 ⚠️ 标注(如"事务内发 MQ 的不一致风险")
|
|
21
|
+
|
|
22
|
+
## 本文档不覆盖的内容
|
|
23
|
+
|
|
24
|
+
- 纯 CRUD 操作(无业务规则的增删改查)
|
|
25
|
+
- 工具方法的实现细节(归 utils.md)
|
|
26
|
+
- 数据模型字段定义(归 data-models.md)
|
|
27
|
+
- 接口参数和响应格式(归 api-contracts.md)
|
|
28
|
+
- Redis/Kafka/定时任务的配置细节(归各专项文档)
|
|
29
|
+
|
|
30
|
+
## 全局上下文(自动注入,确保术语一致性)
|
|
31
|
+
|
|
32
|
+
{global_metadata}
|
|
33
|
+
|
|
34
|
+
{prior_docs_context}
|
|
35
|
+
|
|
36
|
+
## 输出约束
|
|
37
|
+
|
|
38
|
+
- 信息密度优先,避免冗余
|
|
39
|
+
- 确保中文内容完整无截断
|
|
40
|
+
|
|
41
|
+
## 输入
|
|
42
|
+
|
|
43
|
+
- 骨架 JSON:`{skeleton_path}`({skeleton_size}KB,{skeleton_read_instruction})
|
|
44
|
+
- 源码缓存:`{source_cache_path}`
|
|
45
|
+
- 输出文件:`{output_path}/business-logic.md`
|
|
46
|
+
|
|
47
|
+
## 需要读取的源码文件
|
|
48
|
+
|
|
49
|
+
{file_list}
|
|
50
|
+
|
|
51
|
+
## 必须读源码的方法
|
|
52
|
+
|
|
53
|
+
{high_methods}
|
|
54
|
+
|
|
55
|
+
## 已生成的中立文档(你必须引用而非重复)
|
|
56
|
+
|
|
57
|
+
{generated_docs}
|
|
58
|
+
|
|
59
|
+
## 内容组织规则
|
|
60
|
+
|
|
61
|
+
### 每个 `##` 业务流程章节必须包含
|
|
62
|
+
|
|
63
|
+
1. **入口信息**:入口类.方法、路由路径、触发方式(HTTP/定时/MQ)
|
|
64
|
+
2. **业务价值**(1-2 句):这个流程解决什么业务问题、服务于什么场景(从方法注释/类注释/命名推断)
|
|
65
|
+
3. **核心业务规则**:编号列表,提炼隐式约束和分支条件
|
|
66
|
+
4. **调用链**(调用深度 ≥ 3 层时):ASCII 树形缩进,标注关键分支
|
|
67
|
+
5. **设计决策**(如有):为什么这样设计,有什么权衡
|
|
68
|
+
|
|
69
|
+
### 方法级深度
|
|
70
|
+
|
|
71
|
+
| 复杂度 | 描述深度 |
|
|
72
|
+
|--------|---------|
|
|
73
|
+
| low(纯 CRUD/getter/简单委托) | 不写,或调用链中一行带过 |
|
|
74
|
+
| medium | 2-3 行(签名 + 目的 + 关键分支) |
|
|
75
|
+
| high | 完整步骤 + 调用链 + 所有分支 + 风险标注 |
|
|
76
|
+
|
|
77
|
+
### high 方法必须覆盖的维度
|
|
78
|
+
|
|
79
|
+
业务目的、核心流程(编号步骤)、分支逻辑(所有 if/else/switch)、外部调用(Feign/MQ/Redis 只写调用点不展开细节)、并发控制、错误处理
|
|
80
|
+
|
|
81
|
+
### 文档末尾:并发控制汇总(仅限本分片范围)
|
|
82
|
+
|
|
83
|
+
{{#if is_shard}}
|
|
84
|
+
> ⚠️ 分片模式:只汇总本分片涉及的并发控制机制,不要生成全局汇总表。
|
|
85
|
+
|
|
86
|
+
仅列出本分片源码中出现的:
|
|
87
|
+
- 分布式锁(锁名、粒度、超时)
|
|
88
|
+
- 乐观锁(版本字段、重试策略)
|
|
89
|
+
- CAS 操作
|
|
90
|
+
{{else}}
|
|
91
|
+
文档末尾增加一个 `## 并发控制汇总` 章节:
|
|
92
|
+
|
|
93
|
+
| 机制 | 锁名/字段 | 粒度 | 超时 | 使用场景 |
|
|
94
|
+
|------|----------|------|------|---------|
|
|
95
|
+
{{/if}}
|
|
96
|
+
|
|
97
|
+
### 禁止事项
|
|
98
|
+
|
|
99
|
+
- 禁止生成消息队列事件汇总表(归 messaging.md)
|
|
100
|
+
- 禁止生成 Feign 调用汇总表(归 external-integrations.md)
|
|
101
|
+
- 禁止生成错误码汇总表(归 enums-and-constants.md)
|
|
102
|
+
- 禁止生成线程资源总览表(归 architecture.md)
|
|
103
|
+
- 禁止按类名逐个罗列(`## QueryController` ← 错误)
|
|
104
|
+
- 禁止"需要确认"、"待补充"等占位文字
|
|
105
|
+
|
|
106
|
+
### 源码锚点标注
|
|
107
|
+
|
|
108
|
+
每个 `##` 章节的入口信息后,用 HTML 注释标注源码锚点,便于后续自动化关联:
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
## 促销发布
|
|
112
|
+
<!-- @source:PromotionPublishService.publish -->
|
|
113
|
+
|
|
114
|
+
**入口**:PromotionPublishService.publish() / POST /api/v1/promotion/publish
|
|
115
|
+
**业务价值**:将草稿态促销活动发布为生效态,触发缓存预热和门店同步
|
|
116
|
+
...
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
锚点格式:`<!-- @source:ClassName.methodName -->`,取该流程的主入口方法。
|
|
120
|
+
|
|
121
|
+
## 完成后自检清单
|
|
122
|
+
|
|
123
|
+
- [ ] 每个 `##` 章节聚焦一个业务流程,有明确的入口和规则
|
|
124
|
+
- [ ] 每个 `##` 章节有源码锚点注释(`<!-- @source:... -->`)
|
|
125
|
+
- [ ] 每个 `##` 章节有 1-2 句业务价值描述
|
|
126
|
+
- [ ] 所有 high 方法已读源码并覆盖核心维度
|
|
127
|
+
- [ ] Redis/Kafka/DTO/API/枚举内容用引用链接,未展开
|
|
128
|
+
- [ ] 无 Kafka/Feign/错误码/线程池的全局汇总表
|
|
129
|
+
- [ ] 有设计决策标注(💡)和风险标注(⚠️)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# 任务:生成 {module_name} 模块的 caching.md
|
|
2
|
+
|
|
3
|
+
{module_description}
|
|
4
|
+
|
|
5
|
+
{execution_guidance}
|
|
6
|
+
|
|
7
|
+
## 你必须遵守的规则(违反任何一条即为失败)
|
|
8
|
+
|
|
9
|
+
1. **禁止编造** — Key 格式、TTL、数据结构必须从源码验证
|
|
10
|
+
2. **数值验证铁律** — TTL 具体值、Lua 脚本逻辑、CAS 比较条件 → 必须 Read 源码确认
|
|
11
|
+
3. **每个 Key 必须完整** — Key Pattern、常量引用、拼接规则、数据类型、TTL、Value 格式、写入方式、使用场景、防穿透
|
|
12
|
+
4. **脚本/原子操作必须有伪代码级逻辑** — 比较什么、成功做什么、失败返回什么,一句话概述不够
|
|
13
|
+
|
|
14
|
+
## 输出约束
|
|
15
|
+
|
|
16
|
+
- 信息密度优先,避免冗余
|
|
17
|
+
- 确保中文内容完整无截断
|
|
18
|
+
|
|
19
|
+
## 输入
|
|
20
|
+
|
|
21
|
+
- 骨架 JSON:`{skeleton_path}`({skeleton_size}KB,{skeleton_read_instruction})
|
|
22
|
+
- 源码缓存:`{source_cache_path}`
|
|
23
|
+
- 输出文件:`{output_path}/caching.md`
|
|
24
|
+
|
|
25
|
+
## 需要读取的源码文件
|
|
26
|
+
|
|
27
|
+
根据以下文件清单读取源码文件进行分析:
|
|
28
|
+
|
|
29
|
+
{file_list}
|
|
30
|
+
|
|
31
|
+
## 文件读取说明
|
|
32
|
+
|
|
33
|
+
你需要:
|
|
34
|
+
1. 逐个读取上述文件清单中的源码文件
|
|
35
|
+
2. 分析文件内容,提取所需信息
|
|
36
|
+
3. 基于原始源码生成文档,禁止编造
|
|
37
|
+
4. 验证所有配置参数和数值
|
|
38
|
+
|
|
39
|
+
## 内容组织
|
|
40
|
+
|
|
41
|
+
### 1. 总览表
|
|
42
|
+
|
|
43
|
+
> 适用于 Redis、Memcached、Caffeine、Guava Cache、EhCache 等缓存方案。
|
|
44
|
+
> 注意:本文档是缓存设计的唯一详细文档。architecture.md 只有概述引用。
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
| 序号 | Key/Cache Name | 数据类型/结构 | 来源类 |
|
|
48
|
+
|------|----------------|--------------|--------|
|
|
49
|
+
| 1 | crm:point:account:base:{cid}:{cur} | String | PointAccountBiz |
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 2. 逐 Key/Cache 详解(每个缓存项独立小节)
|
|
53
|
+
|
|
54
|
+
每个缓存项必须包含:
|
|
55
|
+
|
|
56
|
+
- **Key Pattern / Cache Name**:完整拼接规则(含常量名引用和变量占位符)
|
|
57
|
+
- **常量引用**:对应的常量名(如 `RedisKeyConstants.POINT_ACCOUNT_BASE_INFO`)
|
|
58
|
+
- **拼接规则**:代码级表达式
|
|
59
|
+
- **数据类型/结构**:String / Hash / ZSet / List / Set / Object / Map 等
|
|
60
|
+
- **TTL/过期策略**:具体值 + 来源(硬编码 / 配置项名及默认值)。`—` 不是有效值,必须确认是永不过期还是遗漏
|
|
61
|
+
- **Value 格式**:序列化格式(JSON / Protobuf / JDK / 自定义),含分隔符说明
|
|
62
|
+
- **写入方式**:普通 SET / CAS / HMSET / ZADD / put / computeIfAbsent 等
|
|
63
|
+
- **使用场景**:哪些类的哪些方法读取、哪些方法写入
|
|
64
|
+
- **防穿透/击穿**(如有):空值写入策略、判断逻辑、布隆过滤器
|
|
65
|
+
|
|
66
|
+
### 3. 缓存策略说明
|
|
67
|
+
|
|
68
|
+
按缓存模式分组,说明读写策略、一致性保证、穿透防护、淘汰策略。
|
|
69
|
+
|
|
70
|
+
## 完成后自检清单
|
|
71
|
+
|
|
72
|
+
- [ ] 每个缓存项的数据类型已标注
|
|
73
|
+
- [ ] 每个缓存项的 TTL 有具体值或明确"永不过期"
|
|
74
|
+
- [ ] 原子操作/Lua 脚本有伪代码级逻辑
|
|
75
|
+
- [ ] Value 格式说明了序列化方式
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# 任务:生成 {module_name} 模块的 database-access.md
|
|
2
|
+
|
|
3
|
+
{module_description}
|
|
4
|
+
|
|
5
|
+
{execution_guidance}
|
|
6
|
+
|
|
7
|
+
## 你必须遵守的规则(违反任何一条即为失败)
|
|
8
|
+
|
|
9
|
+
1. **禁止编造** — 表名、字段名、SQL 语句、分页参数必须从源码验证
|
|
10
|
+
2. **数值验证铁律** — 批量大小、超时时间、连接池参数 → 必须 Read 源码确认
|
|
11
|
+
3. **查询方法必须说明完整 SQL 语义** — 不能只写"查询用户",必须说明 WHERE 条件、JOIN 关系、排序规则
|
|
12
|
+
4. **事务边界必须明确** — @Transactional 的传播行为、隔离级别、回滚条件
|
|
13
|
+
|
|
14
|
+
## 输出约束
|
|
15
|
+
|
|
16
|
+
- 信息密度优先,避免冗余
|
|
17
|
+
- 确保中文内容完整无截断
|
|
18
|
+
|
|
19
|
+
## 输入
|
|
20
|
+
|
|
21
|
+
- 骨架 JSON:`{skeleton_path}`({skeleton_size}KB,{skeleton_read_instruction})
|
|
22
|
+
- 源码缓存:`{source_cache_path}`
|
|
23
|
+
- 输出文件:`{output_path}/database-access.md`
|
|
24
|
+
|
|
25
|
+
## 需要读取的源码文件
|
|
26
|
+
|
|
27
|
+
根据以下文件清单读取源码文件进行分析:
|
|
28
|
+
|
|
29
|
+
{file_list}
|
|
30
|
+
|
|
31
|
+
## 文件读取说明
|
|
32
|
+
|
|
33
|
+
你需要:
|
|
34
|
+
1. 逐个读取上述文件清单中的源码文件
|
|
35
|
+
2. 分析文件内容,提取所需信息
|
|
36
|
+
3. 基于原始源码生成文档,禁止编造
|
|
37
|
+
4. 验证所有配置参数和数值
|
|
38
|
+
|
|
39
|
+
## 内容组织
|
|
40
|
+
|
|
41
|
+
{{#if is_shard}}
|
|
42
|
+
### 分片模式说明
|
|
43
|
+
你负责的业务域:{shard_info}
|
|
44
|
+
- 章节标题用业务域名,不用通用的"数据访问层总览"
|
|
45
|
+
- 不需要生成全局总览表(由合并步骤统一生成)
|
|
46
|
+
- 只描述本分片涉及的 Mapper/Repository
|
|
47
|
+
{{/if}}
|
|
48
|
+
|
|
49
|
+
### 1. 数据访问层总览
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
| 序号 | Mapper/Repository | 对应实体 | 数据源 | 框架 | 方法数 |
|
|
53
|
+
|------|-------------------|---------|--------|------|--------|
|
|
54
|
+
| 1 | UserMapper | UserEntity | 主库 | MyBatis-Plus | 12 |
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. 逐 Mapper/Repository 详解(每个独立小节)
|
|
58
|
+
|
|
59
|
+
每个数据访问接口必须包含:
|
|
60
|
+
|
|
61
|
+
- **接口名**:完整类名
|
|
62
|
+
- **继承关系**:BaseMapper<T> / JpaRepository<T, ID> / ElasticsearchRepository 等
|
|
63
|
+
- **对应实体**:泛型参数中的实体类
|
|
64
|
+
- **数据源**(如有多数据源):使用的 DataSource 名称
|
|
65
|
+
|
|
66
|
+
#### 自定义查询方法清单
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
| 方法名 | 参数 | 返回类型 | SQL 语义 | 分页 |
|
|
70
|
+
|--------|------|---------|---------|------|
|
|
71
|
+
| findByStatus | status, pageParam | Page<Entity> | WHERE status=? ORDER BY create_time DESC | 是 |
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### 复杂查询详解(复杂 SQL 独立说明)
|
|
75
|
+
|
|
76
|
+
每个复杂查询必须包含:
|
|
77
|
+
- **方法签名**
|
|
78
|
+
- **SQL/DSL 语义**:完整的查询逻辑(WHERE/JOIN/GROUP BY/HAVING)
|
|
79
|
+
- **动态条件**(如有):MyBatis 动态 SQL / Specification / QueryWrapper 构建逻辑
|
|
80
|
+
- **索引依赖**:查询依赖的数据库索引(如能从注解或注释推断)
|
|
81
|
+
- **性能注意**:全表扫描风险、N+1 问题、大结果集
|
|
82
|
+
|
|
83
|
+
### 3. 分页策略
|
|
84
|
+
|
|
85
|
+
- 分页实现方式:PageHelper / MyBatis-Plus Page / Spring Data Pageable
|
|
86
|
+
- 默认分页大小
|
|
87
|
+
- 深分页处理(如有):游标分页 / 限制最大页数
|
|
88
|
+
|
|
89
|
+
### 4. 批量操作
|
|
90
|
+
|
|
91
|
+
- 批量插入方式:foreach / batch insert / saveBatch
|
|
92
|
+
- 批量大小配置
|
|
93
|
+
- 批量更新策略
|
|
94
|
+
|
|
95
|
+
### 5. 事务管理
|
|
96
|
+
|
|
97
|
+
- **事务注解使用**:@Transactional 的传播行为和隔离级别
|
|
98
|
+
- **编程式事务**(如有):TransactionTemplate 使用场景
|
|
99
|
+
- **跨库事务**(如有):分布式事务方案(Seata/本地消息表/TCC)
|
|
100
|
+
- **只读事务**:@Transactional(readOnly=true) 的使用场景
|
|
101
|
+
|
|
102
|
+
### 6. 多数据源(如有)
|
|
103
|
+
|
|
104
|
+
- 数据源配置方式:@DS / AbstractRoutingDataSource / 自定义
|
|
105
|
+
- 切换策略:注解驱动 / ThreadLocal / 请求级别
|
|
106
|
+
- 主从分离规则
|
|
107
|
+
|
|
108
|
+
## 完成后自检清单
|
|
109
|
+
|
|
110
|
+
- [ ] 每个 Mapper/Repository 的继承关系已说明
|
|
111
|
+
- [ ] 复杂查询有完整 SQL 语义描述
|
|
112
|
+
- [ ] 分页策略已说明
|
|
113
|
+
- [ ] 事务传播行为已标注
|
|
114
|
+
- [ ] 数值从源码验证
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# 任务:生成 {module_name} 模块的 enums-and-constants.md
|
|
2
|
+
|
|
3
|
+
{module_description}
|
|
4
|
+
|
|
5
|
+
{execution_guidance}
|
|
6
|
+
|
|
7
|
+
## 你必须遵守的规则(违反任何一条即为失败)
|
|
8
|
+
|
|
9
|
+
1. **禁止编造** — 所有枚举值和常量值必须有源码出处
|
|
10
|
+
2. **枚举值完整列表** — 禁止省略任何枚举值,每个枚举类的所有值都必须列出
|
|
11
|
+
3. **枚举静态方法是核心** — 枚举的静态方法是业务规则载体,RAG 检索中最常被查询,禁止只列枚举值而忽略静态方法
|
|
12
|
+
4. **常量值必须从源码验证** — 数值验证铁律,禁止凭经验填写
|
|
13
|
+
|
|
14
|
+
## 输出约束
|
|
15
|
+
|
|
16
|
+
- 信息密度优先,避免冗余
|
|
17
|
+
- 确保中文内容完整无截断
|
|
18
|
+
|
|
19
|
+
## 输入
|
|
20
|
+
|
|
21
|
+
- 骨架 JSON:`{skeleton_path}`({skeleton_size}KB,{skeleton_read_instruction})
|
|
22
|
+
- 源码缓存:`{source_cache_path}`
|
|
23
|
+
- 输出文件:`{output_path}/enums-and-constants.md`
|
|
24
|
+
|
|
25
|
+
## 需要读取的源码文件
|
|
26
|
+
|
|
27
|
+
根据以下文件清单读取源码文件进行分析:
|
|
28
|
+
|
|
29
|
+
{file_list}
|
|
30
|
+
|
|
31
|
+
## 文件读取说明
|
|
32
|
+
|
|
33
|
+
你需要:
|
|
34
|
+
1. 逐个读取上述文件清单中的源码文件
|
|
35
|
+
2. 分析文件内容,提取所需信息
|
|
36
|
+
3. 基于原始源码生成文档,禁止编造
|
|
37
|
+
4. 验证所有配置参数和数值
|
|
38
|
+
|
|
39
|
+
## 内容组织
|
|
40
|
+
|
|
41
|
+
### 1. 枚举定义(按重要度排序,核心枚举在前)
|
|
42
|
+
|
|
43
|
+
每个枚举类必须包含:
|
|
44
|
+
|
|
45
|
+
**枚举值完整字段表**:
|
|
46
|
+
```markdown
|
|
47
|
+
| code | name | info | 说明 |
|
|
48
|
+
|------|------|------|------|
|
|
49
|
+
| 1 | ORDER_ADD | 订单加积分 | 正常订单产生的积分 |
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**public 静态方法签名和返回值说明**:
|
|
53
|
+
```markdown
|
|
54
|
+
- `isIncr(int operation)` → 判断是否为增加积分操作,返回 true 的 operation 值:{1, 3, 4, 9, 12, 13, 14}
|
|
55
|
+
- `amountCovert()` → 金额转换逻辑说明
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**错误码枚举**必须按前缀分组,列出所有 code + 中文消息,不省略。
|
|
59
|
+
|
|
60
|
+
### 2. 常量定义
|
|
61
|
+
|
|
62
|
+
每个常量类必须包含:
|
|
63
|
+
- 所有 `public static final` 常量的名称、值、用途说明
|
|
64
|
+
- 系统常量标注单位(秒/毫秒/分钟等)
|
|
65
|
+
|
|
66
|
+
> **缓存 Key 常量**:只列常量名和值,不展开 Key 的使用场景和 TTL(归 caching.md)。
|
|
67
|
+
> **错误码常量**:完整列出所有 code + 中文消息,按前缀分组。
|
|
68
|
+
|
|
69
|
+
## 完成后自检清单
|
|
70
|
+
|
|
71
|
+
- [ ] 每个枚举类的所有枚举值已列出(无省略)
|
|
72
|
+
- [ ] 每个枚举类的静态方法已说明
|
|
73
|
+
- [ ] 每个常量类的所有常量已列出
|
|
74
|
+
- [ ] 常量值从源码验证
|
|
75
|
+
- [ ] 错误码枚举按前缀分组
|