8.2 事实来源
本页规定文档事实从哪里取得,以及发生冲突时以什么为准。目标是避免版本号、API 签名、配置默认值、JDK 矩阵和测试数字在多处手工维护。
1. 总原则
可执行事实以源码、POM、自动配置元数据、测试和 CI 为准;文档负责解释和路由,不反向定义不存在的能力。
优先级如下:
- 当前分支的生产源码和构建配置。
- 能证明行为的自动化测试。
- 本章列出的稳定性和使用策略文档。
- 教程、示例和历史迁移记录。
计划、路线图、注释中的未来设计和已归档报告均不能证明当前功能已经可用。
2. 唯一事实源矩阵
| 事实 | 唯一事实源 | 文档规则 |
|---|---|---|
| 当前版本、Maven 坐标、模块、依赖版本 | 根 POM 和模块 POM | 文档中的当前版本应由发布流程同步或校验 |
| 发行产物 Java 版本 | maven.compiler.release 及模块覆盖 | 不从 README 反推 |
| 完整构建所需 JDK | 根 POM 的 Enforcer 配置 | 与产物 Java 版本分开描述 |
| CI 实际验证 JDK 和命令 | .github/workflows/*.yml | TESTING.md 解释策略,不另造矩阵 |
| 类、方法、参数和返回类型 | src/main/java 及构建后的公开字节码 | Java 示例必须编译或由测试覆盖 |
| 配置键、类型和默认值 | DlzDbProperties | 配置参考 是展示页,不是反向事实源 |
| Spring 自动装配 | 自动配置类、spring.factories、AutoConfiguration.imports 和集成测试 | 不使用历史配置类名 |
| Solon 自动装配 | DlzDbSolonPlugin、Solon SPI 元数据和集成测试 | 必须同时核对 DataSource 来源 |
| 覆盖率门槛 | 根 POM 的 JaCoCo properties | 不在多个文档手写门槛 |
| 测试数和实际覆盖率 | Surefire、JaCoCo 与 CI 产物 | 作为 CI 产物或发行附件保存,不在仓库维护历史快照 |
| 稳定 API、SPI、internal 政策 | API、SPI 与实现边界 | 这是需要人工维护的兼容性契约 |
| AI 推荐入口、硬约束和模板 | DLZ-DB AI 编程速读 | 其他 AI 文档只能引用,不复制整套规则 |
| 面向人的文档导航 | 文档中心 | 根 README 只保留精简入口 |
3. 各入口的职责
llms.txt
用于让 AI 快速理解项目全貌:项目定位、模块、能力边界和文档路由。它不是编程 API 参考,不应包含完整方法表、返回类型表和大段 CRUD 模板。
docs/5.AI辅助/dlz-db-速读.md
用于 AI 编程,是唯一的 AI 代码契约。入口选择、硬约束、最小模板、危险边界和禁止生成项集中维护于此。
docs/6.参考手册
面向需要查精确用法的人和 AI。公共 API、配置、注解选项、稳定性边界、兼容性限制和常见问题各有单一主题,不在总览页重复整章内容。
教程和框架集成
教程可以保留完成任务所需的局部示例,但不维护完整 API 或配置清单。框架集成文档只解释各框架特有的依赖、数据源、自动装配和事务差异。
报告与历史记录
测试数、覆盖率、代码行数和耗时属于某个具体版本与 commit。如需保存,报告必须标注日期和基线,并放在 CI 产物或发行附件中。仓库不提交历史归档目录,历史报告也不能作为当前发行结论。
4. 变更影响路由
| 代码或配置变化 | 必查文档 |
|---|---|
| 新增/修改业务 API | 6.1-公共API.md、AI 编程速读、相关使用指南 |
| 新增注解或内置 Option | 6.3-注解与选项.md、边界文档 |
| 新增/修改 SPI | 6.4-API-SPI与实现边界.md、架构指南 |
| 新增配置字段或改变默认值 | 6.2-配置参考.md、对应框架集成 |
| 改变 JDK、模块或 CI 矩阵 | POM/workflow、TESTING.md、6.5-兼容性与限制.md |
| 改变迁移不兼容点 | 7.2-v7升级到v8.md 或下一版本迁移页 |
| 只修改 internal 实现 | 架构/实现说明;除非行为变化,不扩散到业务教程 |
5. 冲突处理
发现文档与代码不一致时:
- 先确认当前分支、版本和模块,不用历史文档解释新源码。
- 通过生产源码和测试确认真实签名与行为。
- 如果代码行为是缺陷,在修代码和补测试之前,不把期望行为写成现状。
- 先修唯一主题页,再修引用它的局部教程。
- 搜索旧类名、旧包名和旧方法名,区分迁移说明与错误推荐。
不要新增独立的 project-info.yml 或类似文件去复制 POM 和源码事实。后续自动化应直接读取 POM、字节码、配置类和测试结果。