diff --git a/docs/superpowers/specs/2026-10-16-hide-collector-staff-ui-design.md b/docs/superpowers/specs/2026-10-16-hide-collector-staff-ui-design.md new file mode 100644 index 00000000..6451f80a --- /dev/null +++ b/docs/superpowers/specs/2026-10-16-hide-collector-staff-ui-design.md @@ -0,0 +1,73 @@ +# 隐藏「采集专员」可见 UI(预签改名「市场专员」) + +## Goal + +- 用户界面不再展示「采集专员」文案(采集协议单、科研捐赠、缴费确认时间线等)。 +- 预签约订单例外:控件与展示保留,可见文案一律改为「市场专员」;接口字段仍为 `collectorUserId`(转正式依赖该字段)。 +- 后台字段与 API 契约保留;新建默认当前登录用户;编辑不得清空已有值。 + +## Non-goals + +- 不删库列、不改 API 字段名、不改转正式 `resolve_convert_staff_fields` 映射逻辑。 +- 不改 Demo HTML / 静态原型页。 +- `mobile-h5` 无独立协议/预签表单(WebView 承载 `mobile-oa-h5`),无单独改动。 + +## Approach + +前端逐处隐藏或改名(方案 1)。不引入全局展示开关;不强制后端写死覆盖。 + +## Module matrix + +| 模块 | 用户可见「采集专员」 | 行为 | +|------|---------------------|------| +| 采集协议单(Web + mobile-oa-h5) | 隐藏(表单 / 列表 / 详情) | 静默写 `collectorUserId` | +| 科研捐赠(Web + mobile-oa-h5 若有) | 隐藏(表单 / 列表 / 详情) | 同上 | +| 缴费确认时间线等外围展示 | 隐藏 | 仅展示层 | +| **预签约订单**(Web + mobile-oa-h5) | **不隐藏** | 表单 label、列表、详情、转正式提示等文案改为 **「市场专员」**;`collectorUserId` 不变 | + +## Silent write rules(协议单 / 科研捐赠) + +### Create + +- 无采集专员控件时,仍将 `collectorUserId` 设为当前登录用户(沿用现有默认:Web 表单初始化、Web API 空值回落、移动 specialist 强制当前用户、`protocol-form-defaults` 等)。 + +### Edit + +- 提交时必须继续带上已有 `collectorUserId`(从详情/列表回填)。 +- **禁止**因隐藏控件而提交空串,导致更新把历史值清成 `null`。 +- 实现要点:隐藏 UI 后保留内部状态回填;或更新 payload 在空值时省略该字段(以现有各端提交路径为准,择一保证不清空)。 + +### Presign + +- 控件保留,可选可改。 +- 所有用户可见「采集专员」改为「市场专员」(含选择器 title、列表字段 label、详情字段、转正式确认文案等)。 +- `v-model` / 请求体仍为 `collectorUserId`;转正式仍走现有映射(预签采集专员 → 正式单采集专员 + 市场专员)。 + +## Primary touchpoints + +### web-admin + +- 协议:`ProtocolFormDialog.vue`、`ProtocolViewDialog.vue`、`protocol/index.vue` +- 科研捐赠:`DonationFormDialog.vue`、`DonationViewDialog.vue`、`research-donation/list/index.vue` +- 外围:`clinical-payment-confirm-timeline/index.vue`(及任何其它用户可见「采集专员」处) +- 预签:`PresignOrderFormDialog.vue`、预签列表/详情相关文案、`presign-order/index.vue` 转正式确认语 + +### mobile-oa-h5 + +- 协议:`modules/protocol.js` 表单字段与详情、`list-presenter.js` 等 +- 预签:`PresignOrderForm.vue`、`presign-list-model.js`、`modules/presign.js` 详情与相关测试期望文案 +- 科研捐赠:若存在可见「采集专员」字段/列,一并隐藏 +- 默认值:`protocol-form-defaults.js` 等静默默认逻辑保留 + +## Testing + +- 更新/调整断言:协议与科研捐赠不再期望可见「采集专员」文案或表单字段。 +- 预签相关测试:可见文案期望改为「市场专员」;字段 key 仍为 `collectorUserId` / `collectorUserName`。 +- 回归关注:新建后库中 `collector_user_id` 有值;编辑保存后原值不被清空;预签转正式人员映射不变。 + +## Acceptance + +1. 协议单、科研捐赠、缴费确认时间线等界面无「采集专员」可见文案与选择控件。 +2. 预签全链路可见文案为「市场专员」,字段仍写 `collectorUserId`,转正式行为与改前一致。 +3. 新建协议/捐赠静默写入当前用户;编辑不清空历史 `collectorUserId`。 +4. 后端 schema / DB 无破坏性变更。