Demo / Mock 数据审计与治理登记(2026-08-28)

1. 结论

本轮确认的根因不是单个页面漏接接口,而是原型开发阶段形成了三种“点状数据源”:前端硬编码业务目录、API 失败时的本地业务 fallback、应用启动时无环境隔离的业务 Seed。它们让相同业务对象在不同页面表现不一致,并可能把接口失败伪装成正常数据或成功操作。

本轮已完成第一轮治理:保险卡选择统一到后端 policy_card 目录;普通业务路由不再显示静态保险名单、假卡面、假患者/药品/药房队列、假 Catalogue、假 P0 收银数据或假 CP/WDL 交易数据;失败写操作不再本地伪成功;共享 HTTP 层已取消业务 fallback;主要运营 Demo Seed 改为本地显式 opt-in。

2. 已处理项

区域 原问题 本轮处理 当前状态
Patient / Appointment 保险卡 前端 70 条名单和生成 SVG 卡面与后台维护数据无关 删除静态目录与生成卡面;统一读取 /api/insurance-card-programmes 本地代码已实现;待部署/UAT
保险数据模型 policy_card、Benefit Contracts、患者自由文本三套对象无引用 policy_card 作为 Card Programme 目录;患者表新增 card_programme_id,并保留 programme/provider/plan 历史快照 本地代码已实现;Visit eligibility / Invoice Snapshot 仍待完成
Benefit Contracts 后台 无 Card Programme 维护入口 新增 Card Programmes 列表与新建/编辑/停用状态;图片仅接受官方 URL 本地代码已实现
Connected Clinic API 失败后显示 Emily/Jason、示例药品和药房队列;写失败后仍显示成功 删除业务 fallback;加载失败显示空/错误;仅服务端成功后更新本地状态 本地代码已实现
P0 Documents / Tasks / Checkout / Operations 404 或断网时显示假附件、任务、就诊、收银会话,并可把失败的开票、收款、关账伪装成成功 删除 P0 API 层所有本地业务 payload;请求失败由页面处理,不再生成临时业务 ID 本地代码已实现
Clinic Dispensing 空队列或加载失败时显示四条假处方,并允许本地推进/退回医生 空队列保持为空;失败显示错误;状态推进必须针对已持久化订单并由 API 成功确认 本地代码已实现
Central Pharmacy / WDL Warehouse API 失败时显示假价格规则、审批、库存预留、欠货、库位、QR 和供应商绩效;价格预览失败时本地按成本加 18% 删除前端 fallback 交易与计算;所有页面只展示后端响应,失败保持可见 本地代码已实现;后端 seed 分类仍待 WS4 完成
Catalogue & Contracts 空库或请求失败自动显示 Demo 商品/优惠券 空库显示真实空状态;部分源失败显示错误,不混入 Demo 本地代码已实现
Clinical AI Copilot 普通业务入口内置三名样例患者并送入模型 prompt 删除样例患者;Patient Chat 只接受 launch/workspace 中已授权 patient/encounter context 本地代码已实现
患者侧栏与重复患者工具 无患者上下文时显示完整假患者;代码保留按特定中文姓名注入假重复候选的测试钩子 无上下文显示中性空状态;删除运行时代码中的假患者和假重复候选 本地代码已实现
后端启动 Seed Benefit、P0 当日 Visit/收银会话、Demo 套餐、示例患者及其疫苗/过敏/就诊补数默认写入 通过 VAI_ENABLE_DEMO_SEEDS=trueVAI_ENV 为 local/dev/development/test 才允许;共享环境强制关闭 本地代码已实现
角色与预览登录 角色、权限、测试账号、membership 与 dev auth 是当前多角色预览和本地联调入口,不属于业务 Mock 明确保留现有 Bootstrap;local/dev/development/test/preview 可启用 dev auth,staging、production 和未声明环境保持 SSO、失败关闭 已确认保留;不得随 Demo 业务数据清理删除或停用

3. 保留但必须隔离的合成数据

4. 仍需后续治理

项目 判断 下一步
CP Warehouse / WDL 后端现有 seed 前端 fallback 已移除;后端仍同时包含结构性主数据、迁移兼容和演示交易,不能整段删除 由 WS4 分表标注 master / migrated / fixture / operational,把 operational fixture 移入显式本地 seed 命令
角色、测试账号与 membership 当前平台预览、多角色界面核对和本地开发所需 保留现有 Bootstrap、角色选择及明确 preview/local/dev/test 环境的 dev auth;后续认证迁移如需调整,必须作为独立决策,不纳入 Demo 数据清理
旧患者自由文本保险记录 历史数据没有 card_programme_id,不能自动猜测映射 生成可审查 migration report,按 provider/plan 精确匹配后人工确认;未匹配记录保持 legacy snapshot
package-lock.json package.json 不同步,严格 npm ci 无法执行 单独做依赖锁治理并在 CI 强制 clean install;不得在本次产品变更中静默重写锁文件
现存环境里的旧 Demo 行 本轮只阻止继续生成,不自动删除历史数据 部署前用只读审计脚本列出命中项,由环境 owner 批准清理/保留;禁止启动迁移自动删业务行

5. 新增验收门槛

  1. API 返回空数组时页面必须显示空状态,不能显示内置业务记录。
  2. API 请求或写入失败时不得改变业务状态或显示成功消息。
  3. 普通路由不得引用 Patient、Appointment、Drug、Insurance、Invoice、Pharmacy 等 synthetic fixture。
  4. 共享环境启动不得生成患者、Visit、订单、Invoice、Payment、Benefit utilization 或其他运营记录。
  5. 任何可选择业务目录必须有后端 authority、稳定 ID、权限和维护入口;前端只允许展示快照,不维护第二套列表。