Skip to content

Latest commit

 

History

History
71 lines (56 loc) · 4.55 KB

File metadata and controls

71 lines (56 loc) · 4.55 KB

质量门禁

「什么算合格」的客观标尺。提交前对照本表;红线项不达标 = 不可合并。

1. 最小门禁(按改动模块,提交前必跑)

改动落在 命令
server/ cd server && make test(pytest 退出码 0)
web/ cd web && pnpm lint && pnpm type-check
mobile/ cd mobile && pnpm lint && pnpm type-check
agents/stargazer/ cd agents/stargazer && make lint(pre-commit)
webchat/ cd webchat && npm run build && npm run test
algorithms/<svc> cd algorithms/<svc> && uv run pytest

覆盖率门槛:改动代码覆盖率 ≥75%(pytest --cov)。是否设置全仓 --cov-fail-under 以当前测试基线和 CI 配置为准,不在本文预设未落地门禁。

2. 自动门禁(已落地,别绕过)

  • .husky/pre-commit:对 web/mobile/ staged 变更自动 lint/type-check。
  • server/.pre-commit-config.yaml:black + isort + flake8 + check_migrate + check_requirements
  • Python 行宽 150server/apps/ 日志走 apps.core.logger{app}_logger as loggeralgorithms/ 等独立服务可用 loguru

3. 代码质量红线(硬性)

后端高频陷阱(鉴权/查询/事务/输入/序列化)的正确姿势见 后端工程规格

  • TypeScript:接口用 interface,禁用 any,不可信输入用 unknown
  • Python:black + isort + flake8 全过,行宽 ≤150
  • 无空 except
  • 日志无敏感信息
  • FalkorDB 语法(CMDB),无 Neo4j 语法
  • 禁用原生 SQL:走 Django ORM,无 raw SQL / .raw() / RawSQL / cursor.execute(跨 DB_ENGINE 方言)
  • 启动不被非关键初始化阻断:非关键、可重建资源失败须告警并可恢复,不得让 startup.sh / batch_init / entrypoint 退出;见 可靠性红线 §2.6
  • 下发不伤宿主:插件/作业下发不致目标主机崩溃、死机、数据丢失;不可逆操作有边界与确认
  • 新增依赖附理由
  • 只改必要文件,无顺手重构 / 全仓格式化

4. 测试质量(server)

  • TDD:新功能/bugfix 先按 红-绿-重构 推进(先写失败测试,通常从 _pure/_service 起步)。
  • 有效性:测行为/契约而非实现细节;禁止凑覆盖率的无效测试(无断言、断言常量、镜像实现、永真)。
  • 启动/升级路径:修改启动脚本、初始化命令或外部资源声明时,必须覆盖空环境、重复执行、存量状态冲突和依赖不可用;只测首次创建或同名更新不算有效回归测试。
  • 高风险边界矩阵:触及并发授权、批量变更、跨服务协议、出站连接、可膨胀输入或初始凭据时,除正常路径外至少覆盖下表对应场景。
  • 覆盖率:改动代码 ≥75%;关键/安全路径(鉴权、下发、事务、金额/权限)必须覆盖。
  • 遵循 server/docs/testing-guide.md(分层、BDD、中文 Gherkin)。
  • 文件名后缀分层:_pure(无 DB/IO)/ _service(mock 依赖)/ _views(DRF via api_client)。
  • Marker:unit / integration / bdd / slow;asyncio_mode = auto
  • 全局 fixture:authenticated_user / api_client / request_factory(server/conftest.py)。
  • bugfix 必须带回归测试(参见近期 e4dee9ba6:修复合并错误 + 补 3 条单测)。
变更类型 最小测试场景
并发授权/状态变更 锁前状态变化、竞争事务、过期执行者提交、条件更新失败
批量回填/清理 跨页增删改、断点续跑、重复执行、快照不完整、部分失败
跨服务协议 旧生产者→新消费者、新生产者→旧消费者、乱序/重复消息、回滚
可膨胀输入 编码大小、条目数、解码后尺寸/像素和预计内存上界
外部目标连接 环回/受限网段、DNS 变化、重定向、响应大小和超时
初始凭据 受控交付、首次轮换、生成/存储失败和恢复流程

5. 评分速查(自评,合并前)

维度 不合格(0) 合格(1)
门禁 未跑/有红 对应模块命令退出码 0
红线 触犯任一硬性红线 全清
测试 改行为无新测试 / 无效凑数测试 先写测试、测行为、改动覆盖率 ≥75%
范围 夹带无关改动 最小 diff
验证 「应该没问题」 有命令/输出证据

5 项全 1 才算完成;工程原则与默认取舍以 PRODUCT.md 为准。