锁定缴费校验失败时整单回滚,避免样本半成功落库;前端禁止删除锁定缴费样本,改码走更正编码。同步落地样本更正、采集微信通知、OA提及未读、细胞产品套餐与相关迁移文档。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.0 KiB
2.0 KiB
协议编辑锁定已落库样本编码 — 设计
日期:2026-10-26
状态:已确认(方案 1,实现默认)
关联:样本编码全链路纠错(2026-10-22-sample-code-correction-design.md)
1. 背景
客户服务 / 样本信息管理已提供「更正编码」,会级联更新下游快照。协议单(采集协议、科研捐赠)编辑里换码不会回写下游,易造成不一致。因此编辑已落库样本时禁止改编码。
2. 范围决策
| 项 | 决定 |
|---|---|
| 业务 | 采集协议 + 科研捐赠 |
| 端 | Web 管理端 + 小程序市场端(mobile-oa-h5) |
| 新增样本 | 仍可选 / 可自动生成编码 |
| 已落库判定 | 样本行有持久化 id |
| 本会话未保存新行 | 仍可改码 |
| 后端 | 更新时若 payload 带已存在 id 且编码变更 → 拒绝 |
| 真要改码 | 仅走「更正编码」 |
3. 非目标
- 不禁止删除已有样本后再新增另一条(删 + 增)
- 不在协议编辑内提供纠错入口
- 不改「更正编码」级联逻辑
4. UI
- Web:
SampleTransportFormSection编辑弹窗中,若sampleDraft.id非空,样本编码只读展示;新增仍用选择器 / 自动生成。 - 小程序:
ProtocolSampleTransportPanel同等规则(科研捐赠本就自动生成只读,编辑已落库时保持只读并提示来源)。 - 可选提示:已落库编码请到客户服务使用「更正编码」。
5. 后端
在采集协议 save_samples、科研捐赠样本更新路径中,于写库前:
- 加载本单现有未删样本,按
id建索引。 - 遍历 payload:若
id命中现有行,则sample_code、sample_code_id(trim 后)必须与库中一致。 - 否则
ValueError,文案明确引导使用「更正编码」。
无 id 或 id 不在本单现有行中的条目视为新增,不套本校验。
6. 测试
- 已落库样本改
sampleCode/sampleCodeId→ 拒绝。 - 已落库样本保持原码 → 通过。
- 无
id新增样本 → 不受本规则影响。