Files
dealerhub/PROGRESS_AGI_ITERATION_8.md

89 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PROGRESS_AGI_ITERATION_8 · P2-2部署尝试+D2收尾+P2-1分页补齐
> 跑法口径:后端 `pytest` 全量(`tests/` + `apps/core/tests`),前端 `npm run build` + `npm test`。
> - 后端 SQLite:**511 passed / 4 skipped**(4 skipped 均为 PG 专用并发用例)
> - 后端 PG 5433 `-m postgres`:**4 passed**
> - 前端:`npm run build` ✅ 5.76s;`npm test` ✅ 17 pass / 0 fail(新增 salesman 6 用例)
> - `manage.py check` 0 issues;`makemigrations --check` No changes
> - P2-2:`docker compose config` 双栈 exit 0;`build/up/冒烟` 因 daemon 未起 + 无服务器凭证未做,不虚报
> - P3-1:按规格跳过,未建模(`Serial` grep 零命中即预期)
## 一、P2-2 部署尝试(NEXT_PLAN §P2-2 按步骤执行,不伪造上线)
| 步骤 | 结果 |
|---|---|
| `config` 插值校验(`backend/infra/docker/docker-compose.yml`) | ✅ exit 0 |
| `config` 插值校验(`backend/docker-compose.yml`,1Panel 上线栈) | ✅ exit 0(`DJANGO_ALLOWED_HOSTS=example.com` 正确展开,两处 service 均确认) |
| `build backend` | ❌ 未跑:daemon 未运行(`failed to connect to the docker API at npipe://...dockerDesktopLinuxEngine`);首次不带变量构建即暴露插值必填(`DJANGO_SECRET_KEY/POSTGRES_PASSWORD required`),属预期门禁 |
| `up -d` + 冒烟(ping/登录/开单) | ❌ 未做:无 192.168.5.7 服务器凭证,绝不伪造上线 |
### 附带真缺口修复:上线栈 compose 通配符硬编码
`backend/docker-compose.yml` 的 `backend`/`worker` 两处 `DJANGO_ALLOWED_HOSTS: "*"`
硬编码,与 `prod.py` 的通配符门禁(迭代 7 新增)直接冲突 —— 该 compose 一上线
就会被 prod 拒绝启动。改为 `${DJANGO_ALLOWED_HOSTS:?required}`,与
`DJANGO_SECRET_KEY`/`POSTGRES_PASSWORD` 同级必填。本地自带 db 栈
(`backend/infra/docker/docker-compose.yml`)无此问题(未设该变量,走 prod 门禁显式报错)。
清单 `docs/DEPLOY_CHECKLIST.md` §三/§四已同步更新(含 daemon 实报错 + 上线前必设域名的 gate)。
## 二、D2 收尾(verify 脚本 + H5 回归进前端测试)
1. **`backend/scripts/verify_salesman_h5.py`**:时间戳唯一收款单号(`SMH<MMDDHHMMSS>`,
可重复跑不撞唯一约束)+ 开单/收款前后 `count` 基线与 `+1` 差值断言(残留隔离,
不删单 —— 过账扣库存/生成应收/凭证/核销,硬删会炸外键)。`py_compile` 通过;
真机 Playwright 部分需 dev 后端 :18099 + vite :15173,本轮未重跑(沿用迭代 7 的
ALL PASSED 证据,脚本逻辑变更仅隔离层,未动 10 步断言本体)。
2. **H5 回归进 `npm test`**:新建 `frontend/src/utils/salesman.js` 纯函数
(`rowAmount/linesTotal/lineTaxAmount/taxTotal/roundOffAmount/netTotal/openDebts/debtTotal`,
抹零与价内税拆分与 D4 同公式),`Salesman.vue` 的 5 处 computed 改调同一份实现,
消灭两份口径;新增 `frontend/tests/salesman.test.mjs` 6 用例(合计/抹零/税额/欠款过滤)。
## 三、P2-1 + 附录A(StorefrontAdmin 分页 + 十项逐项核验)
- **P2-1 尾巴**:`StorefrontAdmin.vue` 无分页(订单超 20 条吞数据,NEXT_PLAN §P2-1 点名)。
后端 `admin_orders` function 视图补真分页(`page/page_size`,`count` 为过滤后总数,
上限 200,与 `StandardAsyncPagination` 同口径)+ 前端 `el-pagination` 接 `count` +
新增 `test_admin_orders_pagination`(3 单分 2 页,`count==3` 且两页无重叠)。
`Channel.vue` 的"最近 50 条"为有意截断展示(标题明示),非分页缺失,不动。
- **附录A十项逐项核验**(页面存在 + 接真接口 + 路由 + 菜单):
收款/付款(含 allocate 核销)/核销记录/库存流水/预警规则(含 init-default)/
打印模板/自定义报表(含 init-system/run)/库存大盘抽屉(inventory-status)/
科目管理(含 init-chart)/价格等级与联系人 —— 十项全部 ✅,无"有接口无页面"残留。
路由 29 条,菜单 24 项(含库存流水/预警规则/打印模板/自定义报表/科目/价格等级/核销记录)。
## 四、最终验证数字(本轮实跑)
```
backend pytest tests/ + apps/core/tests(SQLite): 511 passed / 4 skipped
backend PG -m postgres: 4 passed
backend pytest tests/test_storefront.py: 31 passed(含新增 pagination)
frontend npm test: 17 pass / 0 fail(11 原有 + 6 salesman 新增)
frontend npm run build: ✓ 5.76s(含 Salesman-16.62kB / StorefrontAdmin-8.39kB)
manage.py check: 0 issues;makemigrations --check: No changes
docker compose config(双栈): exit 0
```
## 五、变更文件清单
```
backend/docker-compose.yml [改] ALLOWED_HOSTS "*" 硬编码 → ${...:?required}(两处)
backend/apps/storefront/views.py [改] admin_orders 真分页(page/page_size + count)
backend/tests/test_storefront.py [改] +test_admin_orders_pagination
backend/scripts/verify_salesman_h5.py [改] 唯一收款单号 + 前后 count 差值断言
frontend/src/utils/salesman.js [新] D2 H5 纯计算(与组件同一份实现)
frontend/tests/salesman.test.mjs [新] 6 用例(合计/抹零/税额/欠款)
frontend/src/pages/Salesman.vue [改] 5 处 computed 改调 salesman.js
frontend/src/pages/StorefrontAdmin.vue [改] 订单 el-pagination + count 接线
docs/DEPLOY_CHECKLIST.md [改] §三追加 compose 通配符修复 + §四 daemon 实报错
frontend/dist/ [重建]
```
## 六、遗留阻塞(诚实记录)
- Docker daemon 未起:`build/up` 留待 Docker 就绪的目标机;Dockerfile 多阶段构建本身未动。
- 未上线 192.168.5.7:无服务器凭证;上线前必须设 `DJANGO_ALLOWED_HOSTS=真实域名`
(compose 现为必填,不传则 config 直接报错,不会静默带 `*` 上线)。
- 日志轮转/备份:运维侧动作,仓库无实现(清单已如实标注)。
- D2 Playwright 真机部分本轮未重跑(需双服务在场);脚本变更仅隔离层,10 步断言本体未动。
- P3-1 行业专版:按规格跳过,未建模。