docs: specify hide collector staff UI with presign rename

Capture the agreed design: hide collector displays on protocol/donation/timeline, keep DB/API fields with silent defaults, and rename presign visible labels to 市场专员 while retaining collectorUserId for convert.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-10-16 17:33:59 +08:00
1 parent d29a18db86
commit 241dd2861c
1 file changed
+73
@@ -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 无破坏性变更。