开发准则
本页适用于 Ithiltir、Ithiltir-node、文档站和发布脚本的变更。
基本原则
- 保持现有用户可见行为兼容。
- 优先使用项目已有的数据结构、配置方式、脚本入口和错误语义。
- 新抽象必须减少实际重复或复杂度。
- 内部重构不应改变公开 API、配置项、CLI、协议字段、数据库迁移结果或发布包布局。
- 代码和文档不得把未实现能力写成事实。
公共契约
以下内容属于公共契约:
- Dash HTTP API 的路径、方法、请求字段、响应字段和错误码。
- Ithiltir-node 上报协议、CLI 参数、安装脚本行为和本地模式行为。
config.toml、环境变量、主题包、磁盘结构、指标结构和文件系统布局。- 数据库迁移、保留策略、聚合结果、流量计费语义和时区语义。
- Release asset 名称、压缩格式、内置文件路径和自动安装依赖。
修改公共契约时,必须同步更新对应文档。无法保持兼容时,应提供迁移路径或明确版本边界。
实现要求
- 先复用已有模块边界,再考虑新增模块。
- 不为单个调用点引入通用框架。
- 不把临时开发命令、调试字段或未稳定接口写入文档。
- 错误码应稳定、可匹配,并在文档中说明触发条件。
- 配置默认值必须和代码默认值一致。
- UI 状态重构、前端 store 迁移、hook 调整等内部实现不进入用户文档,除非改变了用户可见行为。
测试要求
不要求所有变更都新增单元测试。
涉及以下内容时,应补充测试或走真实路径验证:
- 公共 API、CLI、配置解析和错误语义。
- 数据库迁移、序列化、聚合、保留策略和计费周期。
- 状态机、并发、重试、缓存失效和权限判断。
- 安装、打包、升级、发布资产和跨平台脚本。
- 历史 bug 区域或容易产生边界差异的路径。
只验证当前实现细节、编译器已保证的行为或纯内部重命名的测试不应新增。
文档要求
- 用户可见行为改变时,同步更新中文文档和英文文档。
- API、错误码、配置项和数据结构应写在参考页或组件页。
- 运维影响应写在运维页或配置页。
- 发布、构建、工具链和贡献规则应写在
开发和发布分组。 - 文档只描述稳定入口、限制和结果,不记录临时开发过程。
发布要求
- 版本号必须符合 SemVer。
- 发布包命名、内置节点版本和资产路径必须和发布说明一致。
- 脚本依赖、Node.js 版本、GoReleaser 版本和系统依赖变化必须同步更新构建文档。
- 发布说明应列出用户可见变化、迁移要求、兼容性影响和已知限制。