From 95cdb490d2fa58b93fb65d50a37c3aea9a9317ac Mon Sep 17 00:00:00 2001 From: phamnazage-jpg Date: Thu, 21 May 2026 14:19:39 +0800 Subject: [PATCH] docs(runbook): sync account cleanup and deepseek repro notes --- docs/EXECUTION_BOARD.md | 2 ++ docs/REAL_HOST_ACCEPTANCE_RUNBOOK.md | 1 + 2 files changed, 3 insertions(+) diff --git a/docs/EXECUTION_BOARD.md b/docs/EXECUTION_BOARD.md index b441d515..014ec9ba 100644 --- a/docs/EXECUTION_BOARD.md +++ b/docs/EXECUTION_BOARD.md @@ -17,6 +17,8 @@ - fresh-host app 日志显示 DeepSeek group `5` 当前挂了 10 个 active account(IDs `14,15,16,17,19,20,23,25,26,28`),chat 请求会在这些重复 account 之间 failover,全部记为 `account_upstream_error 500/502` 后才落成 gateway `502`。 - MiniMax group `6` 当前挂了 6 个 active account(IDs `18,21,22,24,27,29`),`temp_unschedulable_reason` 都明确记录为 `insufficient_user_quota`;说明它的 completion 阻断已不是 CRM/host 路由问题,而是验证 key 配额不足。 - 汇总证据:`artifacts/real-host-acceptance/20260521_064910_completion_smoke_calibration.md` +- 2026-05-21 当前代码已补一层稳定性收口:`internal/provision/import_service.go` 在 replacement account 全部通过 smoke 校验后,会先清理同 provider 前缀的旧 account 再做 gateway closure,避免重复导入把同 group 污染成多活重复 account;若 replacement 校验失败则保留旧 account,不做破坏性清理。 +- 2026-05-21 同时新增 `scripts/check_deepseek_completion_split.sh`,可把 DeepSeek “host models=200 / host chat=502 / upstream chat=200” 压缩成可复现的最小 issue 证据包。 - 调通细节与经验沉淀:`docs/REAL_HOST_ACCEPTANCE_LEARNINGS.md` - 代码门禁与本地运行态已于 2026-05-21 再次独立复跑:`gofmt -l .`、`go vet ./...`、`go test ./... -count=1`、`go test -race ./... -count=1`、`go test -cover ./internal/... -count=1`、`go test ./tests/integration/... -count=1` 全通过;本机 CRM(18100) 的 `GET /healthz` / 带 token 的 `GET /api/hosts` = `200`,另起 fresh smoke 实例 `127.0.0.1:18101` 也成功返回 `GET /healthz = ok`、`GET /api/hosts = {"hosts":[]}`。 diff --git a/docs/REAL_HOST_ACCEPTANCE_RUNBOOK.md b/docs/REAL_HOST_ACCEPTANCE_RUNBOOK.md index d3c57313..43dbb7ba 100644 --- a/docs/REAL_HOST_ACCEPTANCE_RUNBOOK.md +++ b/docs/REAL_HOST_ACCEPTANCE_RUNBOOK.md @@ -224,6 +224,7 @@ SKIP_ROLLBACK=1 scripts/real_host_acceptance.sh 13. subscription 场景里,closure 最终用于 gateway probe 的 key 是宿主侧 managed key,不一定是请求体里外部传入的 `ACCESS_API_KEY`。如果你拿原始 key 直打 `/v1/models` 收到 `403 not assigned to any group`,先不要判定 CRM 主链路失败。 14. 对“既有 channel 没自动补 `model_pricing`”这类 live 现象,先核对在线 CRM 进程的启动时间与 git 提交时间;之前 MiniMax 的该现象最终被确认是 stale CRM 进程导致,而不是源码缺逻辑。 15. 当 CRM 切换到本机运行时,`PACK_PATH` 也必须切换到控制面本机可读路径;继续沿用远端 `/home/ubuntu/...` 会触发 `stat pack path ... no such file or directory`,这是验收 harness 参数问题,不是导入业务逻辑问题。 +16. 若要把 DeepSeek 的“host `/v1/models`=200 但 host `/v1/chat/completions`=502,而 upstream 直探 `/chat/completions`=200”做成可提 issue 的最小复现,直接运行 `scripts/check_deepseek_completion_split.sh`。它会同时落盘 host `/v1/models`、host `/v1/chat/completions`、upstream `/chat/completions` 三层证据,并在 `summary.json` 里给出 `host_compatibility_gap|upstream_key_quota_issue|unknown` 分类。 ## 建议固定执行的快速诊断顺序