89 lines
6.1 KiB
Markdown
89 lines
6.1 KiB
Markdown
# 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 行业专版:按规格跳过,未建模。
|