# DC-FAILOVER —— vstore 宕机 BFF 兜底演练 runbook(受控) > 对应用例:DC-FAILOVER-01~03(test_case_report.md §3.13)。 > **只有 TL 在场并明确指令时执行**。演练对象是 TL 启动的 dev 实例(非生产端口), > 严禁触碰生产 8090/8091/5180 与运行中的生产进程。 ## 前置 1. TL 已启动:dev BFF(非生产端口,指向 vstore)与受控 vstore 实例(加密落盘开启)。 2. 记录端口:BFF=____,vstore=____,vault 目录=____(写入轮次记录环境栏)。 3. 测试 agent 确认有 vstore 进程的启停权限与命令(vstore 启动脚本 deploy/vstore_restart.sh,由 dev1 交付)。 ## 演练步骤(按序执行,逐条留痕到 test_case_report.md 实测列) ### DC-FAILOVER-01 入库链路宕机 1. `curl http://BFF/api/health` 记录基线(应 200)。 2. 停止 vstore 进程(记录停的方式与 PID)。 3. `curl -F "file=@样例.docx" http://BFF/api/docgen/library`。 - 检查点:返回错误信封 `{"ok":false,"error":{...}}`(HTTP 5xx 或 4xx,按契约);**不得**出现 200 假成功。 - 检查点:`curl http://BFF/api/health` 仍 200(BFF 不崩)。 4. 留痕:状态码、错误 code、BFF health 状态。 ### DC-FAILOVER-02 生成链路宕机 1. vstore 保持宕机。 2. `curl -X POST http://BFF/api/docgen/generate -H 'Content-Type: application/json' -d '{"description":"帮我写一份年度工作总结","session_id":"failover-1","library_ids":[]}'`。 - 检查点:检索失败 → 空模版集合,生成跳过模版,不中断(artifact 正常 done,template_name 为空)。 - 检查点:若指定了已入库 library_ids,document 拉取失败 → 该资料缺失占位提示出现在 md 中("资料缺失"字样),不阻断生成。 - 检查点:若 LLM 亦不可用,生成返回错误信封(不属于 vstore 兜底断言,单独记录)。 3. 留痕:artifact status、md 中占位提示、耗时。 ### DC-FAILOVER-03 恢复 1. 重启 vstore(记录启动命令与日志路径)。 2. 再次执行 DC-FAILOVER-01 的入库请求 → 应成功(功能自动恢复,无人工干预)。 3. 保密断言复验: - `ls -1 ` → 仅 `.enc` 与 `index.json`; - `grep -r <样例明文标志串> ` → 无命中。 4. 留痕:恢复后入库结果、ls 结果、grep 结果。 ## 回填要求 演练结束后,在 test_case_report.md 中 DC-FAILOVER-01~03 三行的实测列各追加本轮留痕(格式 `R1: 状态码/现象/结论`),并在轮次记录区填写结束汇总。任何与契约不一致的偏差(如错误码不同)记入 FAIL 明细并同步 TL。