每个包不再重复 DROP+迁移,清空改用 DELETE 并重置自增,go test ./... 从约 6 分钟降到十几秒。租号全链路改走 NewTestDB,去掉依赖额外 DSN 才会跑的过渡测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
56 lines
2.5 KiB
Markdown
56 lines
2.5 KiB
Markdown
# HFB Sys 代码质量改进计划
|
|
|
|
## 当前基线
|
|
|
|
更新时间:2026-09-02。
|
|
|
|
- 后端约 374 个 Go 文件、6.6 万行代码,64 个测试文件。
|
|
- 前端约 249 个 Vue/TypeScript 文件、8.4 万行代码,7 个测试文件、32 个测试;大型页面样式已外置,订单详情 setup 已独立为 composable 目录中的脚本模块。
|
|
- 数据库使用 61 个 Goose 迁移文件,SQL 约束由 `scripts/check-sql-guard.sh` 检查。
|
|
- 后端总语句覆盖率基线为 30%;核心模块门禁为 order 40%、payment 20%、wallet 34%、withdrawal 30%。
|
|
- 前端支付、钱包、提现和订单展示目标文件已建立 V8 覆盖率门禁:语句 80%、分支 70%、函数 80%、行 80%。
|
|
- Vue 页面大小门禁为 1800 行,`scripts/check-vue-size.sh` 在本地检查中执行,防止大型 SFC 回涨;订单详情页的指标、支付流水和展示工具已拆出独立模块。
|
|
- Repository 已普遍传递请求 Context;当前约 376 处 GORM `WithContext` 调用。
|
|
|
|
## 已落地门禁
|
|
|
|
本地和部署前统一运行:
|
|
|
|
```bash
|
|
./scripts/check.sh
|
|
```
|
|
|
|
门禁包含:
|
|
|
|
1. SQL 迁移约束与完整性检查。
|
|
2. `go vet`、Go 全量构建、测试和覆盖率基线。
|
|
3. Prettier、ESLint、Vue/TypeScript 类型检查。
|
|
4. Vitest 和 Vite 生产构建。
|
|
|
|
本地门禁通过 `scripts/check.sh` 统一执行;完整租赁与分销链路 e2e 已包含在后端测试中。覆盖率门禁采用“只能提高、不能回退”的基线策略,新增测试后应同步上调阈值。
|
|
|
|
## 后续重点
|
|
|
|
### P0:资金正确性
|
|
|
|
- 扩充支付通知乱序、重复回调和退款重试测试。
|
|
- 扩充钱包并发入账、提现审核竞争和事务回滚测试。
|
|
- 保持金额使用整数分存储,禁止业务层使用浮点数累计金额。
|
|
|
|
### P1:前端回归保护
|
|
|
|
- 为支付收银台、订单操作、提现和后台财务组件增加测试。
|
|
- 优先测试状态转换、权限可见性和请求参数,不追求低价值快照数量。
|
|
- 逐步建立前端覆盖率基线。
|
|
|
|
### P1:结构治理
|
|
|
|
- 将大型管理页面拆成展示组件、操作对话框和 composable。
|
|
- 将路由组装按公开、用户、卖家、管理员领域拆分,保持 `router.New` 只负责依赖组装。
|
|
- 单次拆分必须保持接口、路由名称和用户行为不变。
|
|
|
|
### P2:可观测性
|
|
|
|
- 区分 `/health` 存活探针和 `/health/ready` 就绪探针。
|
|
- 持续观察慢查询、退款重试、订单超时任务和备份恢复演练结果。
|