🗄 已归档快照(2026-09-13 文档时效治理):本文件为历史阶段设计快照,最新口径以 docs/contracts/api-v1.3-matrix.md、docs/plans/2026-09-14-白标化内核抽取-两实例对比.md 及 TASKS 现行为准。设计思路仍可参考,数据与结论已过时。
报告人:扣子一号 | 日期:2026-09-07 | 派工:小冈(WIP-204)| 基底:b41476a
链路:登录 → identity → overview → Orders → Bills(三 tab+明细)→ DemandHall → DemandDetail(兴趣响应)→ PackageBuilder → PointTasks
100.64.1.230:8089(staging 绑址)自沙箱 curl 不可达(连接失败),生产环境禁测(dev 通道自动注册用户会污染生产)。```bash
# 服务器 Linux bash(macOS bash 3.2 不支持,WIP-194 已记档)
bash scripts/e2e_b_workbench_full_chain.sh
# 可选:MERCHANT_DEV_ID=<商户账号裸名>(登录接口自动拼 dev_ 前缀);缺省 smoke-ai
```
| 页面 | 前端调用 | 后端端点 | 结论 |
|---|---|---|---|
| Login | POST /auth/login {dev_id} → {ok,data:{token,user}} + GET /identity/me | auth.py /login、identity.py | ✅ 匹配(dev 通道,正式登录=WIP-181 缺口①长线) |
| Workbench overview | GET /merchant-console/overview | merchant_console.py:32 | ✅ 匹配(WIP-189 已接线验收中) |
| Orders | GET /merchant-console/orders | merchant_console.py:143 | ✅ 匹配(WIP-193 返工后:quantity 字段、page/page_size 参数) |
| Bills | GET /workbench/bills ?page=1&page_size=50;明细 GET /workbench/bills/{id} | miniapp_bills.py:82/127 | ✅ 匹配:列表 {code:0,data:{items,total}}、明细 {...payload,items:[明细行]}、金额后端已转元;三 tab=客户端分流(本期=open/pending_confirm 第一条、明细、历史),与后端 status 字段兼容 |
| DemandHall | (原)写死空态 | GET /api/miniapp/demands 早已存在(demand.py:246) | ❌→✅ 缺口#1 当场修复:重写接线(见 §三) |
| DemandDetail | GET /demands/{id}(flat camelCase)+ POST interests {actorType,merchantId,respondedItems:[{itemIndex,note}],note} | demand.py:438/500 | ✅ 匹配(WIP-193 重写;注意后端禁整单承接:respondedItems 至少一项,空数组 422) |
| PackageBuilder | 诚实提示「保存草稿接口暂未开放」 | 无组包端点 | ⏸ DEFERRED(WIP-198 已登记 /package-builder 为延缓路由,非缺口) |
| PointTasks | GET/POST /merchant/point-tasks、PATCH /{id}?status= | scenes.py:362/375/394(prefix=/api/miniapp) | ✅ 匹配:{ok:true} 信封、PATCH status 走 query 参数(前端已用 params);观察项见 §四 |
GET /api/miniapp/demands(demand.py:246)契约完整:{code:0,data:{items:[{id,travelDate,travelDateEnd,partySize,items,note,createdAt,myInterest}],page,pageSize,total}}。b-workbench/src/pages/DemandHall.tsx 重写):service_item_name 与 custom 的 name 合并,最多 3 个超出显示「等 N 项」)+ 备注。myInterest → 「已表达兴趣」徽标;点击进 /demands/{id}。params(GET 查询串),字段名 pageSize 为后端 Query 参数原名(camelCase)。/demands/mine(demand.py:400)是游客侧「我发布的需求」(WHERE td.user_id=$1),非商户侧「我已表达兴趣」列表;商户兴趣列表端点确不存在 → 页面维持诚实空态,缺口登记给阿仁(需求域:GET /demands/interests/mine 商户视角)。budgetTierId 同时填入 judge_type 与 budget_tier,且 family 固定传 'point'(后端文档五族=attract/instore/reputation/waiting/referral)。后端未做枚举校验故不 4xx,但语义可疑——属表单设计问题非契约断裂,暂不动(超 M2 边界),记档待产品口径。{code:0}/{ok:true};账号非 merchant 时商户域步骤记 SKIP 不记 FAIL;兴趣响应 4xx(已响应过/分项校验)记 SKIP。PATCH ?status=archived 清理;零手改 DB。阻塞:WIP-203 M3(履约确认列表+确认+状态流转端点)未交付——阿仁 WIP-203 整单 📋 待开工,merchant_console.py 现有端点仅 overview/payments/tasks/orders/refund-preview/service-fee。M1 待 WIP-203 M3 交付后启动(与待收款确认同型,落 merchant-console 域)。