Files
dealerhub/PROGRESS_AGI_ITERATION_5.md
T

65 lines
3.4 KiB
Markdown

# AGI 迭代第 5 轮 · 可运行闭环与回归收口
日期:2026-09-11
## 本轮完成
### 构建与部署基线
- 修复 `backend/infra/scripts/run_dev.sh` 工作目录解析,脚本从任意调用目录都能定位 `backend/manage.py`。
- `backend/infra/docker/Dockerfile.backend` 改为 Node + Python 多阶段构建,镜像内自动执行 `npm ci` / `npm run build`,不再依赖宿主机预生成 `backend/frontend_dist`。
- 修正 `backend/infra/docker/docker-compose.yml` 的构建上下文与 Dockerfile 路径。
- 新增根目录 `.dockerignore`,排除 SQLite、日志、缓存、node_modules 和本地构建产物。
- 对齐 `requirements.in` / `requirements.txt`,补齐 `python-dateutil`,统一 psycopg 安装声明。
- 修复 PostgreSQL 准备脚本把探测到的密码传入迁移阶段的问题。
- 清理 `apps/finance/management/__init__.py` 中重复的 management command 实现。
### 演示数据
- `seed_demo --reset` 现在会清理商城订单、订单行、商城账号和商品授权,避免重建残留。
- 演示账龄数据补齐 `0-30`、`31-60`、`61-90`、`91-180`、`181-365`、`365+` 六个桶。
- 回归测试覆盖完整 storefront reset 和六桶账龄。
### 交易与库存
- 销售页保留用户手工改价,不因数量/客户刷新而覆盖;重新取价改为显式操作。
- 最低售价统一按基本单位价格比较,修复 source unit 重复换算。
- 采购页使用成本价而非销售价,并按录入单位显示金额,提交 `source_quantity`。
- 商品单位接口为换算单位返回对应 `cost_price`,同时保留销售价。
- 批次页近效期筛选改为后端过滤并重置分页;新增 `near_expiry` / `expiry_days` 参数。
- 新增前端 `src/utils/transaction.js` 和 Node 原生单测,固定单位换算、金额和边界校验口径。
### 通知与会话
- 通知列表只返回当前租户广播和当前用户通知。
- `mark-read` 不能修改其他用户的私有通知。
- `mark-all-read` 只处理广播和当前用户通知,不再批量改动其他用户状态。
- 普通登录和退出时清理演示只读、商城会话状态;主布局监听 storage 变化,租户/只读标签不再陈旧。
### 开放平台与表单
- 商品新增表单增加必填与正价格校验。
- API Key 管理页显示过期时间并支持确认吊销。
- 前端增加 `npm test`,覆盖交易金额、换算和边界校验。
## 验证结果
```text
backend: 460 passed, 4 skipped
frontend: npm run build ✅
frontend: npm test ✅ (3 tests)
Django check ✅
makemigrations --check --dry-run ✅
bash -n backend/infra/scripts/run_dev.sh ✅
```
4 个跳过用例是 PostgreSQL 并发测试,需要 `config.settings.pgtest` 与可用的 PostgreSQL 实例;本轮未伪造该环境结果。Dockerfile/Compose 配置已通过静态路径与插值检查,完整镜像构建需启动 Docker Desktop。
## 下一轮最高价值项
1. ~~为用户—租户增加服务端 membership/授权关系,补跨租户切换回归。~~ ✅ 已完成(见 `PROGRESS_AGI_ITERATION_6.md`:权限分层 + `tests/test_membership.py` 8 用例,全量 0 failed)。
2. 把收款/付款分配 service 接入 REST action,并补 API 集成测试。
3. 在 PostgreSQL 上执行并发过账、库存和核销测试,审查 `EXPLAIN ANALYZE`。
4. 补齐前端 Voucher、Channel、StorefrontAdmin 的完整表单校验与分页。
5. 实现审计日志保留/归档策略和正式部署 readiness gate。