Files
dealerhub/PROGRESS_AGI_ITERATION_8.md

6.1 KiB
Raw Permalink Blame History

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 行业专版:按规格跳过,未建模。