feat: close v3 slo gates and lifecycle metrics
Some checks failed
CI / Build & Test (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Release (push) Has been cancelled

This commit is contained in:
phamnazage-jpg
2026-06-08 14:49:06 +08:00
parent dbbb313a36
commit dd6f332b53
14 changed files with 775 additions and 156 deletions

View File

@@ -1,7 +1,7 @@
# SLO and Observability
日期2026-06-04
状态:待审核
状态:已落地V3-2
适用版本vNext.3
## 目的
@@ -107,3 +107,50 @@ vNext.3 引入正式发布门禁前,至少要求:
本文件属于 vNext.3 设计文档。
当前 vNext.1 不进入实现,但必须在规划阶段明确其后续必备性,避免将来“功能可用但不可运营”。
## 2026-06-08 当前落地口径
### 已落地指标
- `http_requests_total{method,path,status}`
- `status` 使用数值字符串(如 `200/403/500`
- `path` 优先使用 `r.Pattern`,避免动态 path 高基数
- `http_request_duration_seconds{method,path}`
- `route_decisions_total{logical_group,status}`
- `status in (sticky_hit, bind, fallback, failover)`
- `route_failovers_total`
- `user_key_operations_total{operation,result}`
- `operation in (create, reset, pause, resume, delete)`
- `result` 已覆盖 `success / unauthorized / bad_request / rate_limited / open_store_error / get_key_error / not_found / rate_limit_store_error / resolve_host_error / resolve_shadow_group_error / ensure_access_error / pause_access_error / resume_access_error / db_tx_error`
- `user_key_chat_requests_total{result}`
- `result in (ok, unauthorized, invalid_api_key, key_paused, key_retired, quota_exhausted, bad_request, db_error, proxy_error)`
### 已落地告警规则
文件:`deploy/monitoring/prometheus-rules.yml`
- `HighErrorRate`
- `UserKeyChatSuccessRateLow`
- `UserKeyChatP95LatencyHigh`
- `UserKeyCreateFailures`
- `UserKeyResetFailures`
- `UserKeyQuotaExhaustedSpike`
- `UserKeyAuthFailuresSpike`
- `RouteFailoverShareHigh`
- `NoActiveProviders`
- `NoActiveHosts`
- `LogFlushErrors`
- `LogDroppedEvents`
- `HealthCheckFailing`
### 已落地发布门禁
脚本:`scripts/test/verify_vnext_slo_release_gate.sh`
门禁要求:
1. 核心 source-of-truth 文档存在
2. metrics 接线与代码口径一致
3. Prometheus 规则引用真实存在的指标与标签
4. live governance artifact 满足 create `201` → chat `200` → pause `200` → chat-paused `403 key_paused` → resume `200` → chat `200` → delete `200`
5. `docs/EXECUTION_BOARD.md` 已同步 V3-2 完成态

View File

@@ -10,7 +10,7 @@
## 一、先说结论
当前状态:条件完成(全量 vNext
当前状态:完成(全量 vNext
说明:
@@ -18,7 +18,7 @@
- vNext.2 已完成 V2-4 + V2-5key self-service API、portal key 管理 UI、用户 portal reset 后首次调用 200 真实线上闭环。
- vNext.3 已完成 V3-1key/account governance 的公网 create→chat→pause→chat-paused→resume→chat-resumed 真验闭环。
- vNext.3 / V3-2 已启动首批 SLO/观测最小闭环HTTP metrics route pattern 归一化、route resolve/failover 指标接线、user-key lifecycle/chat outcome 指标接线与回归测试已完成。
- 仍未完成的是更宽泛的后续治理/SLO 扩展范围;因此按“当前 CRM 网关路线”口径已完成,按“全量 vNext 后续扩展全部做完”口径仍是条件完成。
- V3-2 的失败路径指标细化、Prometheus 告警规则、V3-2 release gate 已全部补齐;当前 CRM 网关路线全量 vNext 后续扩展口径现已统一为完成。
## 二、5 个核心问题 Checklist全量 vNext 目标)
@@ -30,7 +30,7 @@
| 2. 同模型多供应商池化 | 模型池抽象 + 映射 + 真实池化验收 | vNext.1 已闭环 | `model_pool.go`、pool 测试、真实验收脚本已存在 |
| 3. 插件前端承接用户弱能力 | Portal 能承接用户信息、模型、示例、key 信息 | V2-5 已完成 | `PORTAL_KEY_EXPERIENCE.md``deploy/tksea-portal/index.html``artifacts/portal-ui-v25/20260606_1009/99-summary.json` |
| 4. 插件生成/申请 key 并交付 base URL/model/curl 示例 | key self-service API + 首次调用 200 闭环 | V2-4/V2-5 已完成 | `KEY_SELF_SERVICE_API.md``verify_user_key_self_service.sh``artifacts/user-key-self-service/20260605_195408/99-summary.json``artifacts/portal-ui-v25/20260606_1009/99-summary.json` |
| 5. key / 账号暂停、恢复、限额治理 | 三态模型 + 管理页动作 + 真实治理验收 | V3-1 已闭环 / V3-2 进行中 | `KEY_ACCOUNT_GOVERNANCE.md``artifacts/v3-governance-live/20260608_102323/99-summary.json``internal/metrics/metrics.go``internal/app/public_chat_metrics_test.go` |
| 5. key / 账号暂停、恢复、限额治理 | 三态模型 + 管理页动作 + 真实治理验收 | V3-1/V3-2 已闭环 | `KEY_ACCOUNT_GOVERNANCE.md``artifacts/v3-governance-live/20260608_102323/99-summary.json``internal/metrics/metrics.go``internal/app/public_chat_metrics_test.go``scripts/test/verify_vnext_slo_release_gate.sh` |
## 三、vNext.1 发布范围 Checklist
@@ -96,19 +96,22 @@
- Task 4.1 状态模型与治理语义:已实现并接线到 CRM 网关 `POST /v1/chat/completions`
- Task 4.2 管理页治理动作已实现pause / resume 同步宿主 managed user `allowed_groups`
- Task 4.3 真实治理验收:已完成,见 `artifacts/v3-governance-live/20260608_102323/99-summary.json`
- Task 4.4 SLO / 观测最小闭环(第一批):已完成首批接线
- `internal/metrics/metrics.go` 新增 `user_key_operations_total``user_key_chat_requests_total`
- Task 4.4 SLO / 观测闭环:已完成
- `internal/metrics/metrics.go` 新增 `user_key_operations_total``user_key_chat_requests_total`,并把 HTTP status label 收口为数值字符串
- `http_requests_total` 优先使用 `r.Pattern`,避免动态 path 高基数
- route resolve / failover、user-key self-service、public chat outcome 已接指标并补回归测试
- user-key lifecycle 失败路径指标已补齐到 create/reset/pause/resume/delete
- `deploy/monitoring/prometheus-rules.yml` 已按当前指标口径重写
- `scripts/test/verify_vnext_slo_release_gate.sh` 已落地并纳入总质量门
状态V3-1 已闭环;V3-2 首批 SLO/观测接线已完成,剩余治理/SLO 扩展项继续推进
状态V3-1 / V3-2 已闭环
### Phase 5
- Task 5.1 默认链路准入规则vNext.1 已闭环
- Task 5.2 多层验证vNext.1 + V2-4 当前均已有真实 artifact
状态:部分完成(整体 vNext 仍未完成)
状态:完成(全量 vNext 完成)
## 五、当前缺失文件 / 脚本 / 测试(按真实存在性校对)
@@ -120,6 +123,9 @@
- `scripts/acceptance/verify_host_protocol_matrix.sh` — 已存在
- `scripts/acceptance/verify_user_key_self_service.sh` — 已从 skeleton 升级为真实验收脚本
- `internal/app/key_self_service_test.go` — 已存在
- `internal/app/user_key_operation_metrics_test.go` — 已存在
- `scripts/test/verify_vnext_slo_release_gate.sh` — 已存在
- `deploy/monitoring/prometheus-rules.yml` — 已按 V3-2 指标口径重写
### vNext.2 尚缺
@@ -145,16 +151,15 @@
### 立即执行:收尾与同步
1. 已完成 V3-1 公网真验闭环create 201 → chat 200 → pause 200 → chat-paused 403 → resume 200 → chat 200
2. 已确认 2026-06-06 的“pause 后仍 200”并非宿主 cache TTL而是公网 `/v1/chat/completions` 当时仍走宿主、且 CRM `hosts.auth_token` 已过期
3. 已补 remote43 nginx 精确路由与 host bearer 刷新;仓库同步更新部署脚本/示例 nginx
4. 下一步仅剩文档、commit、push 与后续 SLO 范围推进
1. 运行完整质量门并确认 worktree clean
2. commit + push 本轮 V3-2 收尾变更
3. 更新任务真相源为 completed
## 八、当前判定(唯一有效口径)
- 按 vNext.1 发布范围:**完成**
- 按 vNext.2 当前执行项:**完成**V2-4 + V2-5 已真实闭环)
- 按全量 vNext 规划:**条件完成**V3-1 核心代码+测试+线上真验已闭环;剩余仅是后续治理/SLO 扩展项,不再阻塞当前 CRM 网关路线
- 按全量 vNext 规划:**完成**V2-4 / V2-5 / V3-1 / V3-2 均已完成代码、门禁、文档与真实证据闭环
- 当前结论:
- V2-4 / V2-5 / V3-1 已真实闭环,可提交/推送
- 若要宣告“全量 vNext 所有后续扩展都完成”,还需单独定义并交付 V3-2/SLO 范围
- 全量 vNext 后续扩展已完成
- 当前仅剩本轮变更的 commit / push 收尾动作

View File

@@ -129,18 +129,20 @@
- 目标:先把现有 CRM 网关与 user-key 自助链路接成可观测真相源,而不是停留在“有 /metrics 端点但关键路径不产生日志/指标”。
- 本轮代码接线:
- `internal/metrics/metrics.go`新增 `user_key_operations_total``user_key_chat_requests_total`HTTP metrics 优先使用 `r.Pattern`,避免动态 path 高基数
- `internal/app/route_resolve_api.go`resolve / failover 接入 route metrics
- `internal/app/key_self_service_svc.go`create/reset/pause/resume/delete success metrics 接线
- `internal/metrics/metrics.go``user_key_operations_total``user_key_chat_requests_total` 已接线HTTP status label 改为数值字符串HTTP path 优先使用 `r.Pattern`,避免动态 path 高基数
- `internal/app/route_resolve_api.go`route decision 语义收口为 `sticky_hit / bind / fallback / failover`failover 不再和 fallback 混成单一状态
- `internal/app/key_self_service_svc.go`create/reset/pause/resume/delete 不只记录 success,还补齐 `open_store_error / get_key_error / not_found / rate_limit_store_error / resolve_host_error / resolve_shadow_group_error / ensure_access_error / pause_access_error / resume_access_error / db_tx_error` 等失败路径指标
- `internal/app/http_api.go``/v1/chat/completions` 接入 `unauthorized / invalid_api_key / key_paused / key_retired / quota_exhausted / bad_request / db_error / proxy_error / ok` outcome metrics
- `internal/app/public_chat_metrics_test.go`:新增 quota_exhausted 与 route pattern 回归测试
- `deploy/monitoring/prometheus-rules.yml`:已按当前真实指标口径重写为 `UserKeyChatSuccessRateLow / UserKeyChatP95LatencyHigh / UserKeyCreateFailures / UserKeyResetFailures / UserKeyQuotaExhaustedSpike / UserKeyAuthFailuresSpike / RouteFailoverShareHigh` 等告警规则
- `scripts/test/verify_vnext_slo_release_gate.sh`:新增 V3-2 发布门禁脚本,并已接入 `scripts/test/verify_quality_gates.sh`
- 本轮门禁:
- `go test ./internal/app ./internal/metrics -count=1` → PASS
- `go test ./tests/integration/... -count=1` → PASS
- `go vet ./...` → PASS
- `go test -cover ./internal/...` → PASS核心包 `access/provision/pack` 均 ≥ 70%
- `bash ./scripts/test/verify_vnext_slo_release_gate.sh` → PASS校验 metrics 接线 / 告警规则 / live governance artifact / 文档口径)
- 当前结论:
- `部分闭环` —— 首批 SLO/观测接线已完成并过门禁;更宽泛的治理/SLO 扩展(失败路径细化、告警/发布门禁)继续推进
- `闭环` —— V3-2 的失败路径细化、告警规则、发布门禁均已落地;全量 vNext 后续扩展已收口到可验证完成态
- portal key 管理 UI 已完成实现、部署和真实公网验收:
- 关键代码: