diff --git a/docs/superpowers/specs/2026-10-14-presign-detail-order-actions-only-design.md b/docs/superpowers/specs/2026-10-14-presign-detail-order-actions-only-design.md new file mode 100644 index 00000000..cc7ca873 --- /dev/null +++ b/docs/superpowers/specs/2026-10-14-presign-detail-order-actions-only-design.md @@ -0,0 +1,56 @@ +# 预签约详情底栏仅订单级三按钮 — 设计说明 + +**日期:** 2026-10-14 +**状态:** 已确认(方案 1) +**范围:** `mobile-oa-h5` 市场专员 / 地区经理「预签约订单」详情底栏;`mobile-h5` 经 WebView 复用,无独立改动 +**前置:** 意向金转账操作已在编辑页转账卡片完成 + +## 1. 目标 + +列表卡片进入详情后,底部操作栏**只展示**订单级按钮(在后端授权范围内): + +- 编辑 +- 转正式协议 +- 删除 + +不再在详情底栏展示意向金相关动作(添加 / 编辑 / 删除意向金、提交财务确认、撤回等)。意向金仅在编辑页操作。 + +## 2. 决策摘要 + +| 项 | 决策 | +|----|------| +| 实现点 | 改 `collectAllowedActions` 的 `presign` 分支 | +| 详情可用动作 | 仅 `edit` / `convert` / `delete`(`PRESIGN_ORDER_ACTIONS`) | +| 权限 | 仍取详情 `allowedActions` / `actions`,再与上述白名单求交 | +| 意向金 | 编辑页转账卡片继续用各笔 `allowedActions` + `transferAllowedActions` | +| 端覆盖 | 专员、经理同一套;不改 `mobile-h5` 壳 | + +## 3. 实现要点 + +### 3.1 `action-policy.js` + +`collectAllowedActions('presign', …)`: + +- **保留**:从 `detail.allowedActions`(或 `detail.actions`)过滤出 `edit` / `convert` / `delete` +- **移除**:拼装 `transfers[].allowedActions` → nested 转账动作;拼装 `transferAllowedActions` → `create-transfer` + +`PRESIGN_ORDER_ACTIONS`、`MarketBottomBar` 标签(编辑 / 转正式协议 / 删除)已存在,无需改文案。 + +`MarketModuleDetail` 继续调用 `collectAllowedActions`,无需为预签再加一层过滤。 + +### 3.2 测试 + +更新 `module-actions.test.js`(及任何断言「详情含 submit-transfer / create-transfer」的用例): + +- 有订单授权时详情动作仅为 `edit` / `convert` / `delete`(子集) +- 转账级 `allowedActions` / `transferAllowedActions` **不再**出现在 `collectAllowedActions` 返回值中 +- 非预签模块(payment / freight 等)行为不变 + +可选:契约测试确认详情底栏不出现「添加意向金」「提交财务确认」等文案绑定(若已有详情契约则改之)。 + +## 4. 非目标 + +- 不改编辑页意向金卡片与保存自动提交财务确认逻辑 +- 不改 Web 管理端 +- 不改后端 `allowedActions` 字段结构(后端仍可下发转账动作;前端详情底栏不再消费) +- 不强制已转正式 / 无权限时仍显示三个按钮(无权限则不显示对应项)