# 核心端到端验收用例 执行环境:开发服务器或隔离试点环境。每条用例记录:日期、执行人、环境、结果、失败原因、证据截图/日志。 ## E2E-01 healthy 图片不触发检测 1. 使用真实或 mock healthy 图片上传巡检。 2. 期望 `abnormalProbability=0`,风险不因 healthy 高置信度升高。 3. 期望不创建待确认检测任务。 ## E2E-02 sick/橙色风险只创建一个待确认任务 1. 上传产生橙色风险的非 mock 巡检。 2. 等待 Outbox worker。 3. 查询 `/detection-tasks?sourceType=inspection`,同巡检只出现一个任务。 ## E2E-03 AI 失败可重试且不产生虚假风险 1. 停止 AI 服务后上传巡检。 2. 期望 `aiStatus=failed`、无风险分。 3. 恢复 AI 后重试,期望成功且使用同一幂等键不重复记录。 ## E2E-04 qPCR 无效不确诊 1. 按当前规则录入无有效对照或无效结果。 2. 期望 `result=invalid`,不创建 `DiseaseEvent`。 ## E2E-05 有效阳性创建发病事件并自动溯源 1. LAMP 或统一检测任务录入 `positive`。 2. 期望创建 `DiseaseEvent`。 3. 期望自动创建关联 `TraceRecord`,状态为 `pending`。 ## E2E-06 无权用户访问受保护资源返回 403 1. 使用无权限用户访问视频、设备控制、WebSocket 设备订阅。 2. 期望业务接口 403,WebSocket 返回拒绝事件。 ## E2E-07 离线巡检重启后仅同步一次 1. 断网拍照入队。 2. 重启小程序。 3. 联网后触发同步。 4. 期望服务端仅一条记录,离线队列转为 `synced`。 ## E2E-08 通知失败重试且状态可查 1. 制造微信/通道失败事件。 2. 等待重试或最终失败。 3. 期望 `notifications` 状态、尝试次数、错误可查询。 ## E2E-09 服务重启后任务/通知/吊销状态保持 1. 创建 pending 事件、Outbox、token 吊销。 2. 重启 Go 服务。 3. 期望任务和通知继续处理,吊销仍生效。 ## E2E-10 备份恢复后核心记录与对象引用一致 1. 按 `docs/operations/backup-restore-drill.md` 恢复。 2. 核对巡检、检测、会诊、溯源、图片/光谱/录像引用。 3. 记录 RPO/RTO 和失败项。 ## E2E-11 跨组织对象访问返回 403 1. 创建组织 A/B,并将不同蚕房分别归属到 A/B。 2. 创建仅属于组织 A 的用户和仅属于组织 B 的用户。 3. 使用 B 用户访问 A 的蚕房、设备、遥测、控制、巡检、检测、会诊、溯源、录像等对象。 4. 期望详情/写操作返回 403,列表不返回 A 组织数据,WebSocket 订阅被拒绝。 5. 记录接口清单和证据。 当前状态:本地 Go/WS 单测已覆盖对象授权,待 v9 部署后执行真实账号联调。 ## 2026-08-14 开发服务器执行结果 环境:`100.83.103.1`,Go schema v8,Web :5174,AI :8000(mock)。 | 用例 | 结果 | 说明 | |---|---|---| | E2E-01 | PASS | healthy 图片 riskScore=0/riskLevel=green,未创建检测任务 | | E2E-02 | BLOCKED | mock 结果为 `isMock=true`,按设计不进入生产检测任务;待真实模型后执行 | | E2E-03 | PASS | AI 停止时 `aiStatus=failed` 且无风险;同一幂等键返回原失败记录,恢复后新键上传成功 | | E2E-04 | PASS | qPCR `invalid` 未创建 DiseaseEvent | | E2E-05 | PASS | LAMP `positive` 创建 1 个 confirmed DiseaseEvent 和 1 个 TraceRecord | | E2E-06 | PASS | 普通 viewer 调用控制接口和创建检测任务均 403 | | E2E-07 | PASS(单元) | 队列单测 5/5;微信开发者工具离线重启截图取证未执行 | | E2E-08 | PASS | 未配置微信的 Outbox 事件进入 retry,通知表保留尝试次数和错误 | | E2E-09 | PASS | 吊销 token 后重启 Go,旧 token 仍 401,业务数据保持 | | E2E-10 | PASS | 备份恢复至隔离库,核心表数量与生产库一致 |