6.1 KiB
6.1 KiB
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 check0 issues;makemigrations --checkNo changes- P2-2:
docker compose config双栈 exit 0;build/up/冒烟因 daemon 未起 + 无服务器凭证未做,不虚报- P3-1:按规格跳过,未建模(
Serialgrep 零命中即预期)
一、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 回归进前端测试)
backend/scripts/verify_salesman_h5.py:时间戳唯一收款单号(SMH<MMDDHHMMSS>, 可重复跑不撞唯一约束)+ 开单/收款前后count基线与+1差值断言(残留隔离, 不删单 —— 过账扣库存/生成应收/凭证/核销,硬删会炸外键)。py_compile通过; 真机 Playwright 部分需 dev 后端 :18099 + vite :15173,本轮未重跑(沿用迭代 7 的 ALL PASSED 证据,脚本逻辑变更仅隔离层,未动 10 步断言本体)。- 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.mjs6 用例(合计/抹零/税额/欠款过滤)。
三、P2-1 + 附录A(StorefrontAdmin 分页 + 十项逐项核验)
- P2-1 尾巴:
StorefrontAdmin.vue无分页(订单超 20 条吞数据,NEXT_PLAN §P2-1 点名)。 后端admin_ordersfunction 视图补真分页(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 行业专版:按规格跳过,未建模。