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,102 @@
|
|
|
1
|
+
# 任务:生成 {module_name} 模块的 security.md
|
|
2
|
+
|
|
3
|
+
{module_description}
|
|
4
|
+
|
|
5
|
+
{execution_guidance}
|
|
6
|
+
|
|
7
|
+
## 你必须遵守的规则(违反任何一条即为失败)
|
|
8
|
+
|
|
9
|
+
1. **禁止编造** — 权限标识、角色名、过滤器顺序必须从源码验证
|
|
10
|
+
2. **认证流程必须完整** — 从请求进入到身份确认的每一步,含 Token 解析/验证/刷新
|
|
11
|
+
3. **权限模型必须明确** — RBAC/ABAC/自定义,角色-权限映射关系
|
|
12
|
+
4. **过滤器链必须有序** — 每个 Filter 的执行顺序、职责、放行/拦截条件
|
|
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}/security.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
|
+
- 认证类型:JWT / Session / OAuth2 / 自定义 Token
|
|
44
|
+
- Token 存储位置:Header / Cookie / Query Param
|
|
45
|
+
- Token 格式与结构(含 payload 字段说明)
|
|
46
|
+
- Token 生命周期:有效期、刷新策略、续期机制
|
|
47
|
+
|
|
48
|
+
### 2. 过滤器链
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
| 顺序 | 过滤器类名 | 职责 | 放行条件 | 拦截后行为 |
|
|
52
|
+
|------|-----------|------|---------|-----------|
|
|
53
|
+
| 1 | CorsFilter | 跨域处理 | 所有请求 | 添加 CORS 头 |
|
|
54
|
+
| 2 | AuthTokenFilter | Token 验证 | 白名单外请求 | 401 |
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
每个过滤器必须包含:
|
|
58
|
+
- 执行顺序(@Order 或注册顺序)
|
|
59
|
+
- 匹配路径(urlPatterns)
|
|
60
|
+
- 核心逻辑:编号步骤
|
|
61
|
+
- 放行/拦截判断条件
|
|
62
|
+
- 异常处理方式
|
|
63
|
+
|
|
64
|
+
### 3. 权限模型
|
|
65
|
+
|
|
66
|
+
- **模型类型**:RBAC / ABAC / 自定义
|
|
67
|
+
- **角色定义**:
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
| 角色标识 | 角色名称 | 权限范围 | 数据范围 |
|
|
71
|
+
|---------|---------|---------|---------|
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
- **权限控制粒度**:接口级 / 方法级 / 数据级
|
|
75
|
+
- **@PreAuthorize 使用方式**:SpEL 表达式示例
|
|
76
|
+
|
|
77
|
+
### 4. 接口访问控制
|
|
78
|
+
|
|
79
|
+
- **白名单路径**:无需认证的接口列表
|
|
80
|
+
- **角色-接口映射**(如有显式配置)
|
|
81
|
+
- **动态权限**(如有):权限数据来源、缓存策略、刷新机制
|
|
82
|
+
|
|
83
|
+
### 5. 安全配置
|
|
84
|
+
|
|
85
|
+
- CORS 配置:允许的域名、方法、头
|
|
86
|
+
- CSRF 策略:启用/禁用及原因
|
|
87
|
+
- Session 策略:STATELESS / IF_REQUIRED
|
|
88
|
+
- 密码加密方式(如有)
|
|
89
|
+
|
|
90
|
+
### 6. 安全相关的上下文传递
|
|
91
|
+
|
|
92
|
+
- 用户信息如何存入 SecurityContext / ThreadLocal
|
|
93
|
+
- 跨线程传递方式(异步场景)
|
|
94
|
+
- 用户信息获取工具类
|
|
95
|
+
|
|
96
|
+
## 完成后自检清单
|
|
97
|
+
|
|
98
|
+
- [ ] 认证流程有完整步骤说明
|
|
99
|
+
- [ ] 过滤器链有明确执行顺序
|
|
100
|
+
- [ ] 权限模型已说明(RBAC/ABAC/自定义)
|
|
101
|
+
- [ ] 白名单路径已列出
|
|
102
|
+
- [ ] Token 生命周期已说明
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# 任务:生成 {module_name} 模块的 source-tree-analysis.md
|
|
2
|
+
|
|
3
|
+
{module_description}
|
|
4
|
+
|
|
5
|
+
{execution_guidance}
|
|
6
|
+
|
|
7
|
+
## 你必须遵守的规则(违反任何一条即为失败)
|
|
8
|
+
|
|
9
|
+
1. **禁止编造** — 文件树必须从骨架 JSON 或源码目录获取
|
|
10
|
+
2. **大项目用分组统计** — 超过 100 个文件时,按包分组统计数量,只详列 high/medium 复杂度的类
|
|
11
|
+
3. **禁止省略号** — 不用 `...` 代替文件列表;大项目用统计数字代替逐文件列出
|
|
12
|
+
4. **按复杂度分级** — high/medium 详细描述,low 用统计行
|
|
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}/source-tree-analysis.md`
|
|
24
|
+
|
|
25
|
+
## 需要读取的源码文件
|
|
26
|
+
|
|
27
|
+
> ⚠️ **source-tree 不需要逐个读取源码文件。** 以下文件清单仅供统计参考(文件数、包分布)。
|
|
28
|
+
> 结构信息从**骨架 JSON**(skeleton-summary)获取,不要逐文件 Read。
|
|
29
|
+
|
|
30
|
+
{file_list}
|
|
31
|
+
|
|
32
|
+
## 必须包含的章节
|
|
33
|
+
|
|
34
|
+
### 1. 模块概览
|
|
35
|
+
|
|
36
|
+
| 指标 | 数值 |
|
|
37
|
+
|------|------|
|
|
38
|
+
| 总文件数 | X |
|
|
39
|
+
| Java 源码文件 | X |
|
|
40
|
+
| 资源文件 | X |
|
|
41
|
+
| 测试文件 | X |
|
|
42
|
+
| 包(package)数 | X |
|
|
43
|
+
|
|
44
|
+
### 2. 包结构总览
|
|
45
|
+
|
|
46
|
+
按顶层包分组,每个包一行统计:
|
|
47
|
+
```markdown
|
|
48
|
+
| 包路径 | 文件数 | 主要职责 |
|
|
49
|
+
|--------|--------|---------|
|
|
50
|
+
| .controller | 8 | REST 接口层 |
|
|
51
|
+
| .service.impl | 15 | 业务逻辑实现 |
|
|
52
|
+
| .dao.entity | 34 | 数据库实体 |
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 3. 核心类详解(high 复杂度)
|
|
56
|
+
|
|
57
|
+
骨架 complexity=high 或 line_count > 200 的类:
|
|
58
|
+
|
|
59
|
+
```markdown
|
|
60
|
+
### PromotionServiceImpl
|
|
61
|
+
- **路径**:`src/main/java/.../PromotionServiceImpl.java`
|
|
62
|
+
- **行数**:~850 行
|
|
63
|
+
- **职责**:促销 CRUD + 发布流程编排
|
|
64
|
+
- **依赖注入**:PromotionMapper, RuleService, PublicationService, RedisService
|
|
65
|
+
- **核心方法**:createPromotionBasicInfo, createPromotionRule, publishPromotion
|
|
66
|
+
- **设计特点**:单类承担过多职责,建议拆分(⚠️ 技术债)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 4. 重要类概述(medium 复杂度)
|
|
70
|
+
|
|
71
|
+
line_count 50-200 的类,每个 1-2 行:
|
|
72
|
+
```markdown
|
|
73
|
+
- `PromotionRuleServiceImpl`(~180行)— 规则保存/校验/多时段处理
|
|
74
|
+
- `PublicationServiceImpl`(~150行)— 发布/取消/定时轮询
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 5. 统计汇总(low 复杂度)
|
|
78
|
+
|
|
79
|
+
不逐个列出,按类型统计:
|
|
80
|
+
```markdown
|
|
81
|
+
| 类型 | 数量 | 示例 |
|
|
82
|
+
|------|------|------|
|
|
83
|
+
| Domain 实体 | 34 | Promotion, PromotionRule, PromotionStore |
|
|
84
|
+
| VO/DTO | 45 | PromotionPageReqVO, PromotionInfoRespVO |
|
|
85
|
+
| Mapper 接口 | 12 | PromotionMapper, PromotionRuleMapper |
|
|
86
|
+
| 枚举 | 8 | PromotionStatusEnum, MechanismTypeEnum |
|
|
87
|
+
| 配置类 | 5 | KafkaConfig, RedisConfig, DruidConfig |
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 6. 资源文件说明
|
|
91
|
+
|
|
92
|
+
application.yaml、mapper XML、Flyway 迁移脚本等的用途。
|
|
93
|
+
|
|
94
|
+
{sibling_modules}
|
|
95
|
+
|
|
96
|
+
## 完成后自检清单
|
|
97
|
+
|
|
98
|
+
- [ ] 无省略号(大项目用统计数字)
|
|
99
|
+
- [ ] high 复杂度类有详细描述(职责+核心方法+设计特点)
|
|
100
|
+
- [ ] low 复杂度类用统计表,不逐个列出
|
|
101
|
+
- [ ] 有包结构总览表
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 任务:更新 {module_name} 模块文档的特定章节
|
|
2
|
+
|
|
3
|
+
你是一个知识库维护者。根据源码变动,更新文档中的**一个特定章节**。
|
|
4
|
+
|
|
5
|
+
## 规则
|
|
6
|
+
|
|
7
|
+
1. **只重写指定章节** — 不要输出其他章节的内容
|
|
8
|
+
2. **保持风格一致** — 与文档其余部分的写作风格、术语、格式保持一致
|
|
9
|
+
3. **从业务角度描述** — 不是代码翻译,而是解释业务逻辑和设计意图
|
|
10
|
+
4. **禁止编造** — 所有内容必须有源码出处,无法确认时写 `⚠️ 待验证`
|
|
11
|
+
5. **引用优先** — 其他文档已覆盖的内容只写一句话摘要 + 引用链接
|
|
12
|
+
6. **输出中文**
|
|
13
|
+
7. **只输出章节正文** — 不含章节标题行(标题由系统保留)
|
|
14
|
+
|
|
15
|
+
## 输入信息
|
|
16
|
+
|
|
17
|
+
**文档类型**: {doc_type}
|
|
18
|
+
**目标章节**: {section_heading}
|
|
19
|
+
|
|
20
|
+
### 当前章节内容
|
|
21
|
+
|
|
22
|
+
{old_content}
|
|
23
|
+
|
|
24
|
+
### 变动文件
|
|
25
|
+
|
|
26
|
+
{changed_files}
|
|
27
|
+
|
|
28
|
+
### 骨架变动(delta)
|
|
29
|
+
|
|
30
|
+
{skeleton_delta}
|
|
31
|
+
|
|
32
|
+
## 输出要求
|
|
33
|
+
|
|
34
|
+
直接输出更新后的章节正文内容(Markdown 格式)。不要包含章节标题行。
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# 任务:生成 {module_name} 模块的 utils.md
|
|
2
|
+
|
|
3
|
+
{module_description}
|
|
4
|
+
|
|
5
|
+
{execution_guidance}
|
|
6
|
+
|
|
7
|
+
## 你必须遵守的规则(违反任何一条即为失败)
|
|
8
|
+
|
|
9
|
+
1. **禁止编造** — 方法逻辑必须从源码提取
|
|
10
|
+
2. **只写有复杂逻辑的方法** — 简单的 null 检查、getter/setter 包装、单行委托不需要文档化
|
|
11
|
+
3. **重点写"坑"和"隐式行为"** — 精度丢失、时区问题、线程安全问题、异常吞没等
|
|
12
|
+
|
|
13
|
+
## 价值判断标准
|
|
14
|
+
|
|
15
|
+
一个工具方法值得写入文档的条件(满足任一即可):
|
|
16
|
+
- 有非显而易见的边界行为(如 null 返回空串而非抛异常)
|
|
17
|
+
- 有精度/编码/时区等隐式处理
|
|
18
|
+
- 被 ≥ 3 个业务流程调用(公共热点方法)
|
|
19
|
+
- 有线程安全或并发相关的设计
|
|
20
|
+
- 方法名无法自解释其完整行为
|
|
21
|
+
|
|
22
|
+
**不值得写的**:
|
|
23
|
+
- `Assert.isNotNull(value, supplier)` — 方法名已自解释
|
|
24
|
+
- 纯 BeanUtils.copy 包装
|
|
25
|
+
- 简单的类型转换(String→Integer)
|
|
26
|
+
|
|
27
|
+
## 输出约束
|
|
28
|
+
|
|
29
|
+
- 信息密度优先
|
|
30
|
+
- 确保中文内容完整无截断
|
|
31
|
+
|
|
32
|
+
## 全局上下文(自动注入)
|
|
33
|
+
|
|
34
|
+
{global_metadata}
|
|
35
|
+
|
|
36
|
+
{prior_docs_context}
|
|
37
|
+
|
|
38
|
+
## 输入
|
|
39
|
+
|
|
40
|
+
- 骨架 JSON:`{skeleton_path}`({skeleton_size}KB,{skeleton_read_instruction})
|
|
41
|
+
- 源码缓存:`{source_cache_path}`
|
|
42
|
+
- 输出文件:`{output_path}/utils.md`
|
|
43
|
+
|
|
44
|
+
## 需要读取的源码文件
|
|
45
|
+
|
|
46
|
+
{file_list}
|
|
47
|
+
|
|
48
|
+
## 内容组织
|
|
49
|
+
|
|
50
|
+
每个工具类独立章节。
|
|
51
|
+
|
|
52
|
+
### 每个工具类包含
|
|
53
|
+
|
|
54
|
+
- 一句话职责 + 源码行数
|
|
55
|
+
- 全局配置(如 ObjectMapper 的 configure 项、静态常量)
|
|
56
|
+
- **只列有文档价值的方法**(见上方价值判断标准)
|
|
57
|
+
|
|
58
|
+
### 方法描述格式
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
#### `methodName(ParamType param) → ReturnType`
|
|
62
|
+
核心逻辑:[2-3 行说明算法/流程]
|
|
63
|
+
⚠️ 注意:[隐式行为/边界条件/线程安全问题]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
不需要写:方法签名的完整泛型、每个参数的类型说明(签名已包含)、"边界校验:null 时返回 null"这种显而易见的行为。
|
|
67
|
+
|
|
68
|
+
## 完成后自检清单
|
|
69
|
+
|
|
70
|
+
- [ ] 只包含有文档价值的方法(非自解释的)
|
|
71
|
+
- [ ] 每个方法有核心逻辑说明(不是一句话概述)
|
|
72
|
+
- [ ] 标注了隐式行为和"坑"
|
|
73
|
+
- [ ] 无简单方法的机械翻译
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
You are a knowledge base maintainer. Update the specific document section based on source code changes.
|
|
2
|
+
|
|
3
|
+
Rules:
|
|
4
|
+
- Only rewrite the affected section content, maintain the style of the rest
|
|
5
|
+
- Describe from a business perspective, not code translation
|
|
6
|
+
- Output in Chinese
|
|
7
|
+
- Output section body only (without the heading line)
|
|
8
|
+
- Do not fabricate; mark uncertain content with ⚠️ 待验证
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Java/Spring Boot 工作流扩展
|
|
2
|
+
|
|
3
|
+
> 本文件包含 Java/Spring Boot 预设特有的工作流步骤。SKILL.md 中标注 `[PRESET-EXT]` 的步骤,
|
|
4
|
+
> 当 preset 为 `java-spring` 时,按本文件执行。其他 preset 跳过或按各自扩展文件执行。
|
|
5
|
+
|
|
6
|
+
## 1. 依赖 JAR 解析(kb-init 步骤 2 扩展)
|
|
7
|
+
|
|
8
|
+
当知识库配置了 `maven_repo` 时,对每个模块自动从 pom.xml 发现内部依赖并下载反编译:
|
|
9
|
+
|
|
10
|
+
```shell
|
|
11
|
+
python -X utf8 "{source_kb_root}/engine/skeleton/resolve_jar_sources.py" batch \
|
|
12
|
+
--pom ".source-cache/{module}/pom.xml" \
|
|
13
|
+
--repo-url "{maven_repo.url}" \
|
|
14
|
+
--known-modules "{所有 repo name 逗号分隔}" \
|
|
15
|
+
--output-dir ".source-cache/{module}-deps/" \
|
|
16
|
+
[--internal-group-ids "{maven_repo.internal_group_ids 逗号分隔}"] \
|
|
17
|
+
[--exclude-artifacts "{maven_repo.exclude_artifacts 逗号分隔}"] \
|
|
18
|
+
[--auth "{maven_repo.auth}"] \
|
|
19
|
+
[--local-repo "{maven_repo.local_repo}"]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
依赖过滤逻辑:自动从 pom.xml 推断项目 groupId 作为内部前缀,排除知识库中已有源码的模块(repos 中的 name),可通过 `internal_group_ids` 和 `exclude_artifacts` 覆盖。
|
|
23
|
+
|
|
24
|
+
**执行策略**:
|
|
25
|
+
1. 依赖 JAR 解析必须**串行执行**(逐模块),禁止多模块并行
|
|
26
|
+
2. **依赖复用优先**:
|
|
27
|
+
a. 主会话在开始依赖解析前,先汇总所有模块的内部依赖列表(逐模块执行 `discover` 子命令),构建全局依赖映射
|
|
28
|
+
b. 按依赖被引用次数降序排列模块
|
|
29
|
+
c. 解析第一个模块后,后续模块的依赖如果已在之前的模块中成功解析,直接复制目录
|
|
30
|
+
d. 仅对该模块独有的依赖执行 `resolve_jar_sources.py`
|
|
31
|
+
3. **中断恢复**:如果某模块的 JAR 解析被中断,检查 `--output-dir` 下已成功的子目录,仅重试失败的 artifactId
|
|
32
|
+
|
|
33
|
+
失败处理:单个 JAR 下载/反编译失败 → 警告并跳过,不阻塞整体流程。
|
|
34
|
+
|
|
35
|
+
## 2. 覆盖率预检方法分配规则(kb-init 步骤 5 扩展)
|
|
36
|
+
|
|
37
|
+
Java/Spring Boot 项目按包名分配方法归属:
|
|
38
|
+
|
|
39
|
+
| 包路径模式 | 归属文档 |
|
|
40
|
+
|-----------|---------|
|
|
41
|
+
| `controller/`, `api/` | api-contracts.md |
|
|
42
|
+
| `config/` 且方法有 `@Bean` | architecture.md |
|
|
43
|
+
| `service/`, `biz/` | business-logic.md |
|
|
44
|
+
| `consumer/`, `listener/` | business-logic.md(消费者分片) |
|
|
45
|
+
| `util/`, `helper/` | utils.md |
|
|
46
|
+
| `aspect/`, `interceptor/` | business-logic.md(辅助逻辑章节) |
|
|
47
|
+
| `domain/`, `dto/`, `model/`, `vo/` | data-models.md(按类名覆盖) |
|
|
48
|
+
| `enums/`, `constant/` | enums-and-constants.md(按类名覆盖) |
|
|
49
|
+
| 其余 | architecture.md 或 business-logic.md(主会话判断) |
|
|
50
|
+
|
|
51
|
+
### high 复杂度方法补充标记规则
|
|
52
|
+
|
|
53
|
+
除骨架 JSON 中 `complexity: "high"` 的方法外,还需按以下规则补充标记:
|
|
54
|
+
- 包含 Lua 脚本(骨架 constants 中有 `SCRIPT`/`LUA`/`ARGV`/`KEYS` 关键词,或方法名含 `lua`/`script`/`cas`/`compareAnd`)
|
|
55
|
+
- 包含内嵌 SQL(骨架 constants 中有 `SELECT`/`INSERT`/`UPDATE`/`DELETE`)
|
|
56
|
+
- 分布式 ID 生成/池化逻辑(方法名含 `generate`/`pool`/`allocate`/`batch`,或类名含 `IdGenerat`,且 line_count > 3)
|
|
57
|
+
- 状态机转换(branches > 5 且 constants 中有多个枚举值引用)
|
|
58
|
+
- 复杂配置工厂(`@Bean` 方法且 line_count > 20)
|
|
59
|
+
- 复杂度 medium 且 line_count > 20 的方法
|
|
60
|
+
|
|
61
|
+
## 3. 跨模块依赖排序(kb-init 步骤 4 扩展)
|
|
62
|
+
|
|
63
|
+
多模块时从 pom.xml 构建依赖 DAG,拓扑排序生成(被依赖的先生成)。后生成模块可引用先生成模块的中立文档。
|
|
64
|
+
|
|
65
|
+
**兄弟模块依赖识别**:构造子代理 task 前,从本模块 pom.xml 提取依赖列表,与 kb-project.yaml 中同知识库 repos 交叉匹配。
|
|
66
|
+
|
|
67
|
+
## 4. 架构代理拆分规则(kb-init 步骤 4 扩展)
|
|
68
|
+
|
|
69
|
+
分派前检测输入文件总大小(config/nacos/interceptor 骨架 + pom.xml + yaml):
|
|
70
|
+
|
|
71
|
+
| 输入总大小 | 策略 |
|
|
72
|
+
|-----------|------|
|
|
73
|
+
| ≤ 20KB | 单代理 |
|
|
74
|
+
| 20-40KB | 拆 2 个(A: 骨架→infra;B: pom+yaml→stack),合并用 merge_shards.py --prefix architecture --order stack,infra |
|
|
75
|
+
| > 40KB | 拆 3 个 |
|
|
76
|
+
|
|
77
|
+
## 5. 文件分类规则(kb-sync 步骤 4 扩展)
|
|
78
|
+
|
|
79
|
+
Java/Spring Boot 项目的文 `preset.yaml` 的 `file_classification` 配置。
|
|
80
|
+
|
|
81
|
+
关键注解检测:
|
|
82
|
+
- `@KafkaListener` → 触发 messaging.md 生成
|
|
83
|
+
- `@Cacheable`/`@CacheEvict` → 触发 caching.md 生成
|
|
84
|
+
- `@FeignClient`(接口定义)→ 触发 api-contracts.md 生成(本模块对外暴露的服务契约)
|
|
85
|
+
- `@FeignClient`(字段注入使用)→ 触发 external-integrations.md 生成(本模块调用的外部依赖)
|
|
86
|
+
|
|
87
|
+
## 6. index.md 基本信息表(Java 特有字段)
|
|
88
|
+
|
|
89
|
+
Java/Spring Boot 模块的 index.md 基本信息表包含以下 Java 特有字段:
|
|
90
|
+
|
|
91
|
+
| 属性 | 数据来源 |
|
|
92
|
+
|------|---------|
|
|
93
|
+
| artifactId | pom.xml |
|
|
94
|
+
| groupId | pom.xml |
|
|
95
|
+
| 当前版本 | pom.xml |
|
|
96
|
+
| 基础包路径 | 启动类所在包 |
|
|
97
|
+
| JDK 版本 | pom.xml maven.compiler.source |
|
|
98
|
+
| Web 容器 | application.yaml server 配置 |
|
|
99
|
+
| JVM 配置 | Dockerfile / 启动脚本 |
|
|
100
|
+
|
|
101
|
+
## 7. 依赖骨架提取(kb-init 步骤 3 扩展)
|
|
102
|
+
|
|
103
|
+
对 `.source-cache/{module}-deps/` 目录下每个子目录提取骨架:
|
|
104
|
+
|
|
105
|
+
```shell
|
|
106
|
+
python -X utf8 "{source_kb_root}/engine/skeleton/extract_skeleton.py" \
|
|
107
|
+
--repo ".source-cache/{module}-deps/{artifactId}/" \
|
|
108
|
+
--preset java-spring --full --compact --ref HEAD \
|
|
109
|
+
--output "{module_dir}/.skeleton-deps/{artifactId}.json"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
子代理生成文档时,同时读取 `.skeleton-deps/` 下的依赖骨架,用于补全 VO/Param 字段定义和接口签名。依赖源码中的类标注来源:`来源: {artifactId}:{version} (外部依赖)`。
|
skills/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# skills package marker — enables setuptools to include .md files as package data.
|
skills/_shared/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# _shared/ 参考文档
|
|
2
|
+
|
|
3
|
+
> **重要**:本目录下的文件已不再是 kb-* skill 的执行依赖。
|
|
4
|
+
> 所有执行规则已内嵌到各 skill 的 `rules.md`、`steps/`、`templates/` 中。
|
|
5
|
+
|
|
6
|
+
## 定位变更(2026-04-28)
|
|
7
|
+
|
|
8
|
+
**改造前**:kb-init / kb-audit / kb-sync 的 SKILL.md 在前置步骤要求读取本目录下的 5 个文件,子代理 prompt 通过 §编号引用规则。规则传递链路:`_shared/ → SKILL.md 引用 → 子代理 prompt 引用 → 实际执行`。链路过长导致规则频繁不生效。
|
|
9
|
+
|
|
10
|
+
**改造后**:各 skill 自包含所有执行规则(参照 module-doc-enricher 模式)。本目录文件保留为设计参考和完整性记录,不再被任何 skill 的执行流程直接依赖。
|
|
11
|
+
|
|
12
|
+
## 文件说明
|
|
13
|
+
|
|
14
|
+
| 文件 | 原角色 | 现角色 |
|
|
15
|
+
|------|--------|--------|
|
|
16
|
+
| doc-quality-standard.md | 执行规则(~1000 行) | 设计参考:完整质量标准定义,各 skill templates/ 从中提炼了关键规则 |
|
|
17
|
+
| doc-subagent-rules.md | 执行规则(~780 行) | 设计参考:完整子代理编排规则,各 skill rules.md 从中提炼了调度规则 |
|
|
18
|
+
| doc-coverage-shared.md | 执行规则(~140 行) | 设计参考:覆盖率校验和共享文档规则,已内嵌到各 skill steps/ |
|
|
19
|
+
| windows-compat.md | 执行规则 | 设计参考:平台兼容性规则,已内嵌到各 skill 需要的位置 |
|
|
20
|
+
|
|
21
|
+
## 平台无关说明
|
|
22
|
+
|
|
23
|
+
自 2026-04-30 起,所有 skill 文件和子代理模板已去除平台特定依赖。
|
|
24
|
+
子代理模板只包含平台无关的内容规则,执行方式通过 `render_prompt.py --mode` 按需注入(`output-only` 或 `readwrite`)。
|
|
25
|
+
|
|
26
|
+
## 何时查阅本目录
|
|
27
|
+
|
|
28
|
+
- 新增 skill 时,从这里提炼规则内嵌到新 skill
|
|
29
|
+
- 修改质量标准时,先改这里的完整定义,再同步到各 skill 的 templates/
|
|
30
|
+
- 审计规则一致性时,对比各 skill 内嵌规则与这里的完整定义
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# 覆盖率校验与共享文档
|
|
2
|
+
|
|
3
|
+
> 覆盖率校验、语言特定维度、共享文档规则。文档质量标准见 [doc-quality-standard.md](./doc-quality-standard.md),子代理规则见 [doc-subagent-rules.md](./doc-subagent-rules.md)。
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## 1. 语言特定检查维度
|
|
7
|
+
|
|
8
|
+
通用标准到此为止。语言特定的检查维度(如 Java 的 `@Transactional` 检查、Python 的 decorator 检查等)定义在:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
presets/{preset_name}/audit_dimensions.md
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
SKILL.md 中引用方式:
|
|
15
|
+
1. 读取本文件(通用标准)
|
|
16
|
+
2. 读取 `kb-project.yaml` 获取 preset 名称
|
|
17
|
+
3. 读取 `presets/{preset}/audit_dimensions.md`(语言特定维度)
|
|
18
|
+
|
|
19
|
+
## 2. 覆盖率校验
|
|
20
|
+
|
|
21
|
+
覆盖率校验分三个阶段执行,各阶段职责不同:
|
|
22
|
+
|
|
23
|
+
| 阶段 | 执行主体 | 时机 | 职责 |
|
|
24
|
+
|------|---------|------|------|
|
|
25
|
+
| 预检 | 主会话 | 分派子代理前(kb-init §5) | 确认骨架方法有归属文档,提前发现分类遗漏 |
|
|
26
|
+
| 自检 | 子代理 | 文档写盘完成后(§8.5.3) | 确认本文档覆盖率 ≥ 80% |
|
|
27
|
+
| 复查 | 主会话 | 所有子代理完成后(本节) | 兜底检查,防止子代理未执行自检或自检遗漏 |
|
|
28
|
+
|
|
29
|
+
**覆盖率阈值**:
|
|
30
|
+
- ≥ 80%:通过
|
|
31
|
+
- 60%-80%:自动补充(最多 2 轮),补充后仍不达标则询问用户
|
|
32
|
+
- < 60%:严重不足,直接询问用户
|
|
33
|
+
|
|
34
|
+
每个模块的文档生成完毕后,主会话执行覆盖率复查:
|
|
35
|
+
|
|
36
|
+
### 2.1 方法覆盖率
|
|
37
|
+
|
|
38
|
+
使用与 doc-subagent-rules.md 8.5.3 节相同的脚本和阈值(80%)。主会话执行校验命令:
|
|
39
|
+
|
|
40
|
+
```shell
|
|
41
|
+
# 单文件骨架
|
|
42
|
+
source-kb validate coverage check \
|
|
43
|
+
--skeleton {module_dir}/.skeleton.json --docs-dir {module_dir} --type {module_type}
|
|
44
|
+
|
|
45
|
+
# 分片目录骨架
|
|
46
|
+
source-kb validate coverage check \
|
|
47
|
+
--skeleton-dir {module_dir}/.skeleton/ --docs-dir {module_dir} --type {module_type}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
覆盖率 < 80% → 主会话补充缺失方法后重新校验。
|
|
51
|
+
|
|
52
|
+
### 2.2 文件覆盖率
|
|
53
|
+
|
|
54
|
+
1. 从 source-tree-analysis.md 中提取源码文件列表
|
|
55
|
+
2. 检查每个业务文件(排除 config/util/constant)是否在至少一个文档中被提及
|
|
56
|
+
3. 未被任何文档提及的业务文件 → 报告并补充
|
|
57
|
+
|
|
58
|
+
### 2.3 可选文档触发检查
|
|
59
|
+
|
|
60
|
+
扫描源码中的中间件使用模式,命中则对应可选文档变为必需。
|
|
61
|
+
|
|
62
|
+
可选文档的触发条件由 preset 的 `doc_types[].conditional` + `owns_keywords` 定义。具体检测模式(注解名、类名、方法名、grep 命令)见 `presets/{preset}/audit_dimensions.md`。
|
|
63
|
+
|
|
64
|
+
未生成必需的可选文档 → 报告并补充。
|
|
65
|
+
|
|
66
|
+
### 2.4 引用完整性校验
|
|
67
|
+
|
|
68
|
+
所有文档生成/更新完毕后,主会话执行:
|
|
69
|
+
|
|
70
|
+
1. 在 business-logic.md 中提取所有 `](./` 和 `](../` 格式的 Markdown 链接
|
|
71
|
+
2. 验证目标文件存在
|
|
72
|
+
3. 如果链接含 `#锚点`,验证目标文档中存在对应的 `##`/`###` 标题(锚点格式:小写、空格转 `-`、去除特殊字符)
|
|
73
|
+
4. 死链数 > 0 → 修复锚点或降级为文件级链接(去掉 `#锚点` 部分),修复后重新校验
|
|
74
|
+
|
|
75
|
+
### 2.5 重复内容检测
|
|
76
|
+
|
|
77
|
+
如果 business-logic.md > 50KB,主会话执行以下检查:
|
|
78
|
+
|
|
79
|
+
1. 搜索缓存 Key 常量模式(如 `crm:point:account:`、`POINT_ACCOUNT_BASE`)出现次数 > 3 → 疑似与 caching.md 重复
|
|
80
|
+
2. 搜索 JSON 示例代码块数量 > 5 → 疑似与 messaging.md 重复
|
|
81
|
+
3. 搜索字段表格头(`| 字段 | 类型 |`)数量 > 3 → 疑似与 data-models.md 重复
|
|
82
|
+
4. 搜索中间件配置参数(`max-poll-records`、`batch-size`、`buffer-memory`)出现次数 > 3 → 疑似与 architecture.md 重复
|
|
83
|
+
5. 命中任一 → 定位重复段落,替换为引用链接(按 doc-quality-standard.md 5.1.1 节)
|
|
84
|
+
|
|
85
|
+
## 3. 共享文档(跨模块)
|
|
86
|
+
|
|
87
|
+
当知识库包含多个模块时,在 `{knowledge_dir}/_shared/` 下生成跨模块汇总文档:
|
|
88
|
+
|
|
89
|
+
| 文件 | 说明 | 触发条件 |
|
|
90
|
+
|------|------|---------|
|
|
91
|
+
| project-overview.md | 项目整体架构、模块关系、部署拓扑 | 始终生成 |
|
|
92
|
+
| cross-module-calls.md | 模块间调用关系(Feign/Dubbo/HTTP) | 模块数 ≥ 2 |
|
|
93
|
+
| error-codes.md | 全局错误码汇总 | 任一模块有错误码定义 |
|
|
94
|
+
| database-ddl.md | 数据库表结构汇总 | 任一模块有数据模型 |
|
|
95
|
+
|
|
96
|
+
生成时机:所有模块文档生成完毕后,汇总生成共享文档。
|
|
97
|
+
|
|
98
|
+
### 3.1 共享文档更新检测逻辑
|
|
99
|
+
|
|
100
|
+
kb-sync 增量更新时,需要判断共享文档是否需要同步更新。检测方式:
|
|
101
|
+
|
|
102
|
+
**cross-module-calls.md**:扫描各模块 `architecture.md` 中的 Feign/Dubbo/HTTP 调用章节,提取调用关系(调用方模块 → 被调方模块 + 接口名)。与现有 `_shared/cross-module-calls.md` 中的调用关系对比,有新增或删除则需更新。
|
|
103
|
+
|
|
104
|
+
```shell
|
|
105
|
+
# 从各模块 architecture.md 提取 Feign 调用关系
|
|
106
|
+
# Bash/Linux:
|
|
107
|
+
grep -h "FeignClient\|@DubboReference\|RestTemplate.*http" {knowledge_dir}/*/architecture.md
|
|
108
|
+
# PowerShell (Windows):
|
|
109
|
+
Get-ChildItem "{knowledge_dir}\*\architecture.md" | Select-String -Pattern "FeignClient|@DubboReference|RestTemplate.*http" | ForEach-Object { $_.Line }
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**error-codes.md**:扫描各模块 `api-contracts.md` 的错误码汇总表(通常在文档末尾的"错误码汇总"章节),提取所有错误码。与现有 `_shared/error-codes.md` 合并去重,有差异则需更新。
|
|
113
|
+
|
|
114
|
+
```shell
|
|
115
|
+
# 从各模块 api-contracts.md 提取错误码表格行
|
|
116
|
+
# Bash/Linux:
|
|
117
|
+
grep -h "^|.*[0-9]\{3,\}.*|" {knowledge_dir}/*/api-contracts.md
|
|
118
|
+
# PowerShell (Windows):
|
|
119
|
+
Get-ChildItem "{knowledge_dir}\*\api-contracts.md" | Select-String -Pattern "^\|.*\d{3,}.*\|" | ForEach-Object { $_.Line }
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**database-ddl.md**:扫描各模块 `data-models.md` 的 Domain/Entity 章节,提取表名和关键字段。与现有 `_shared/database-ddl.md` 对比,有新增表或字段变更则需更新。
|
|
123
|
+
|
|
124
|
+
```shell
|
|
125
|
+
# 从各模块 data-models.md 提取表名(通常在 @TableName 或表名标注后)
|
|
126
|
+
# Bash/Linux:
|
|
127
|
+
grep -h "TableName\|表名\|table.*:" {knowledge_dir}/*/data-models.md
|
|
128
|
+
# PowerShell (Windows):
|
|
129
|
+
Get-ChildItem "{knowledge_dir}\*\data-models.md" | Select-String -Pattern "TableName|表名|table.*:" | ForEach-Object { $_.Line }
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**project-overview.md**:当任一模块的 `architecture.md` 或 `index.md` 发生变更时,检查项目整体架构描述是否仍然准确。
|
|
133
|
+
|
|
134
|
+
共享文档不参与模块级索引重建,单独作为 `_shared` 模块索引:`source-kb rebuild --kb {kb} --module _shared`。
|