DIP1 工作日志 — UAT 第一轮 16 项 Bug 修复
DWLG 编号:DWLG-20260810-04
日期:2026-08-10
参与方:DIP1 Code Agent
关联文档:DWLG-20260810-03 UAT 可用性排查报告(§四 修复策略 1-16)
关联 Issue:无
一、工作内容
按 UAT 排查报告 §四 策略全部 16 项执行修复(7 P0 + 5 P1 + 4 P2):
后端(9 项)
| Bug |
修复 |
文件 |
| BUG-01 🔴 看板 pool 键不匹配 |
4 时间池 → 6 阶段池(POOL_L1_NEW_LEADS / L3_PENDING_QUOTE / L4_PENDING_ASSIGN / L6_INSTALL_TODAY / L8_PENDING_FOLLOWUP / EXCEPTION),DONE/CANCELLED 不入池;CptOrderCard.pool_label Literal 同步 |
cpt_service.py / dtos/cpt.py / test_cpt_api.py |
| BUG-02 🔴 GET /qsv/quotes 405 |
新增列表端点(分页 + status/customer_id/order_id 过滤 + join 客户名/品类 code,权限 qsv:calc) |
repositories/qsv.py / qsv_service.py / api/qsv.py |
| BUG-03 🔴 试算路径 404 |
前端改调 /qsv/calculator/preview(见前端) |
— |
| BUG-04 🔴 categories 裸数组致白屏 |
/mds/categories 改分页结构 |
api/mds.py / dtos/mds.py / test_mds_api.py |
| BUG-05 🔴 PATCH /qsv/quotes/{id} 405 |
新增状态流转端点(DRAFT→CONFIRMED/REJECTED/EXPIRED,CONFIRMED→EXPIRED;终态 409/3001;写 confirmed_by/at、reject_reason;权限 qsv:confirm) |
qsv_service.py / api/qsv.py / dtos/qsv.py |
| BUG-06 🔴 客户历史订单空 |
list_orders 增加 customer_id 精确过滤参数(repo/service/api 三层) |
repositories/cpt.py / cpt_service.py / api/cpt.py |
| BUG-07 🔴 /qsv/params/versions 404 |
新增参数版本列表端点(方案 A) |
repositories/qsv.py / qsv_service.py / api/qsv.py |
| BUG-08 🟡 登录缺 user 字段 |
TokenResponse 增加 user(user_id/username/display_name/roles 数组/permissions) |
api/auth.py / test_auth_api.py |
| BUG-09 🟡 /me role vs roles |
UserMeResponse role:str → roles:list[str] |
api/auth.py / test_auth_api.py |
| BUG-14 🟢 admin 角色空 |
seed cli 补 sys_user_roles(admin→TL,幂等 on_conflict) |
seed/cli.py |
前端 opr-admin(8 项)
| Bug |
修复 |
文件 |
| BUG-03 🔴 |
试算路径 /qsv/calculate→/qsv/calculator/preview;字段 base_fee→base_fee_hkd、capped→capped_flag;factor_breakdown 对象→Object.entries 渲染 |
quotes/new/page.tsx |
| BUG-10 🟡 |
报价详情 calc→平铺字段 + calc_snapshot;金额字符串→number 归一化 |
quotes/[id]/page.tsx / types.ts |
| BUG-11 🟡 |
权限矩阵键改从后端响应动态提取(删 21 条硬编码假键) |
admin/page.tsx |
| BUG-12 🟡 |
導出 PDF → window.print()(导出端点属 P3) |
quotes/[id]/page.tsx |
| BUG-13 🟢 |
formatMoney 兼容 string|number + 新增 toNumber helper |
format.ts |
| BUG-15 🟢 |
驾驶舱移除 pool_label = OVERDUE 调试文案;逾期卡改「異常暫停訂單」(对接 POOL_EXCEPTION) |
(main)/page.tsx |
| BUG-16 🟢 |
楼宇联想改用专用端点 /mds/buildings/autocomplete(数组响应适配) |
buildings/page.tsx |
| BUG-06 🔴 |
客户详情订单查询 q:customerId → customer_id:customerId |
customers/[id]/page.tsx |
顺手修复
get_current_param_version 增加 created_at 倒序决胜(同日多版本时保证确定性,消除演示数据与测试夹具竞争);
- demo.py
_cleanup 增强:级联清理测试期间挂在 DEMO 客户/订单上的衍生报价/订单/阶段子表(UAT 实测发现的 FK 阻塞,报告 F1 同类问题的完整版)。
二、验证结果
| 验证 |
结果 |
| 后端 pytest 全量 |
73 passed, 0 failed(含改写的看板 6 池测试:force 跳转 6 阶段逐池断言) |
| ruff app+tests |
All checks passed |
| opr-admin typecheck + build |
✅ 17 路由全部生成 |
| 端到端 curl 复测 9 项 |
✅ login user 字段 / me roles / quotes 列表(客户名+品类code)/ params versions / categories 分页 / board 6 池 {L1:1, L3:1, L6:1} / customer_id 过滤 2 单 / PATCH 确认 / 重复确认 409 |
| 演示数据 |
修复后已重置(2 报价/4 订单/3 客户/3 师傅),后端服务运行中 |
三、遗留问题
| # |
问题 |
状态 |
负责人 |
| 1 |
报价导出 PDF 端点(真导出) |
🟡 P3 对象存储依赖 |
TL(凭据) |
| 2 |
OpenAPI yaml 的 CptOrderCard.pool_label 枚举仍为旧 4 池,需同步 6 池 |
🟡 待 DT 同步契约文档 |
DT |
| 3 |
订单看板拖拽流转(当前详情页按钮流转替代) |
🟡 P2 体验优化 |
Code Agent |
四、状态矩阵更新(DIP1-IMP §7.1)
- C-B1(QSV 报价域):🟡 ~60% → 🟢(列表/状态流转/参数版本端点补齐,UAT 报价管理流程断裂点修复)
- C-B2(CPT):🟢 不变(看板 6 池对齐 CPT-D 语义,回归全绿)
- C-C2(opr-admin):🟢 → 🟢+(7 个阻断页面全部恢复可用,待 DT 复测确认)
修订记录
| 版本 |
日期 |
修订人 |
修订内容 |
| V1.0 |
2026-08-10 |
DIP1 Code Agent |
创建:UAT 第一轮 16 项修复全程记录 |
修复原则遵循报告 §四「前后端成对修复避免再次错配」;全部修复后已通过 pytest/ruff/build/curl 四重验证,可通知 DT 复测。