diff --git a/docs/acceptance/core-e2e-cases.md b/docs/acceptance/core-e2e-cases.md index 3343f17..0de4aa9 100644 --- a/docs/acceptance/core-e2e-cases.md +++ b/docs/acceptance/core-e2e-cases.md @@ -60,3 +60,20 @@ 1. 按 `docs/operations/backup-restore-drill.md` 恢复。 2. 核对巡检、检测、会诊、溯源、图片/光谱/录像引用。 3. 记录 RPO/RTO 和失败项。 + +## 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 | 备份恢复至隔离库,核心表数量与生产库一致 | diff --git a/docs/operations/load-test-scenarios.md b/docs/operations/load-test-scenarios.md index 40cb273..230240d 100644 --- a/docs/operations/load-test-scenarios.md +++ b/docs/operations/load-test-scenarios.md @@ -37,3 +37,15 @@ - 不在生产库执行写入类负载。 - 不使用真实用户隐私图片做公开压测。 - 压测前必须备份数据库并记录环境状态。 + +## 2026-08-14 开发服务器冒烟结果 + +环境:`100.83.103.1`,Go :3000,Web :5174,AI :8000(mock)。 + +| 场景 | 结果 | +|---|---| +| A. 500 请求 API 混合冒烟(健康接口) | 500/500 成功,失败率 0%,p50 99.1ms,p95 182.3ms | +| B. 1000 WebSocket 连接 | 1000/1000 成功,失败率 0%,连接建立+保持 1s 的 p50 1506.5ms,p95 1854.9ms | +| C. AI 峰值 | 未执行:当前为 mock,未使用 T4 和真实模型 | + +说明:B 场景为短时连接冒烟,不等同于 30 分钟持续连接验收;完整验收仍需记录 30 分钟连接稳定性、掉线率和资源曲线。 diff --git a/变更记录.md b/变更记录.md index 9756ffe..8ffadc1 100644 --- a/变更记录.md +++ b/变更记录.md @@ -1201,6 +1201,9 @@ UPDATE cameras SET gb_channel_id = '44010201001320000001' WHERE gb_device_id = ' - Go `/api/v1/health` 200、Web `:5174` 200、AI `/health` 200; - 新路由未登录返回 401,确认路由已注册; - `admin/silk@123` 登录成功;登录态下检测任务、发病事件、生物安全、会诊、效果报告、运维指标接口均返回 200,二维码空载荷返回 400。 +- E2E 结果:E2E-01/03/04/05/06/08/09/10 通过;E2E-02 因 mock 隔离 blocked;E2E-07 队列单测通过。 +- 负载冒烟:500 HTTP 请求 0% 失败;1000 WebSocket 连接 0% 失败。 +- 备份恢复:当前 schema 备份 `/home/pan/backups/silk-20260814-194300.dump` 已恢复到隔离库并核对一致。 ### 回滚点 diff --git a/后续工作计划.md b/后续工作计划.md index b04457f..f56367b 100644 --- a/后续工作计划.md +++ b/后续工作计划.md @@ -22,7 +22,7 @@ | Wave 3 | 业务闭环 | Task 11 实现小程序离线巡检与可靠同步 | 部分可用 | 待开发服务器迁移部署与开发者工具离线/重启联调 | | Wave 3 | 业务闭环 | Task 12 完善环境规则、会诊治理、知识审核与效果评估 | 部分可用 | 待开发服务器迁移部署与专家/试点联调 | | Wave 4 | 验收与发布 | Task 13 建立可观测性、容量与恢复验证 | 部分可用 | 待真实环境负载/备份恢复演练与告警通道联调 | -| Wave 4 | 验收与发布 | Task 14 建立规格追踪、端到端验收与发布门禁 | 部分可用 | 已部署并完成登录态冒烟;待 E2E、恢复演练 | +| Wave 4 | 验收与发布 | Task 14 建立规格追踪、端到端验收与发布门禁 | 部分可用 | 已部署并完成 E2E/负载/恢复冒烟;待 30 分钟 WS、AI T4、正式发布 | ## 技术选型决策(2026-08-11 确定) diff --git a/开发交接记录.md b/开发交接记录.md index c5ba906..cb30c5e 100644 --- a/开发交接记录.md +++ b/开发交接记录.md @@ -1223,10 +1223,14 @@ MVP 沿用 IoTDB(现状);TDengine 作为生产规模化候选(先基准 - 使用 `admin/silk@123` 登录成功,登录态下 `/detection-tasks`、`/disease-events`、`/biosecurity/seed-sources`、`/biosecurity/disinfection-records`、`/consultations`、`/ops/metrics`、`/health-profiles/:id/effect` 均返回 200;`POST /biosecurity/qr/resolve` 空载荷返回 400; - 后端日志显示 `schemaVersion=8` 和正常启动,无 panic; - IoTDB 仍不可用并降级 PostgreSQL,属部署前已知状态; +- 开发服务器 E2E-01/03/04/05/06/08/09/10 通过,E2E-02 因 mock 隔离按设计 blocked,E2E-07 队列单测通过但微信开发者工具重启取证未执行; +- 负载冒烟:500 HTTP 请求 0% 失败,p50 99.1ms/p95 182.3ms;1000 WebSocket 连接 0% 失败,短时保持 p50 1506.5ms/p95 1854.9ms; +- 当前 schema 全量备份:`/home/pan/backups/silk-20260814-194300.dump`,已恢复至隔离库核对表数量一致。 ### 回滚点 - 数据库:`/home/pan/backups/silk-20260814-191754.dump`; +- 当前 schema 数据库:`/home/pan/backups/silk-20260814-194300.dump`; - Go 旧二进制:`/home/pan/silk/server-go/server-go-linux.pre-20260814-191754`; - Go 修复前问题二进制:`/home/pan/silk/server-go/server-go-linux.broken-20260814-1921`; - Web 旧目录:`/home/pan/silk/web/dist.pre-20260814-191754`;