feat(routing): add route acceptance matrix scripts

This commit is contained in:
phamnazage-jpg
2026-05-29 13:50:16 +08:00
parent 112ed67f6b
commit 949134005e
7 changed files with 994 additions and 0 deletions

View File

@@ -0,0 +1,165 @@
# Route Acceptance Matrix
日期2026-05-29
## 目标
把 Phase 2 已经验证过的三类能力,收敛成固定入口和固定证据格式:
1. 控制面
2. 运行态 / 健康视图
3. 数据面
当前统一入口:
- `scripts/acceptance/verify_route_control_plane.sh`
- `scripts/acceptance/verify_route_health_ui.sh`
- `scripts/acceptance/verify_route_data_plane.sh`
- `scripts/acceptance/verify_route_acceptance_matrix.sh`
其中 `verify_route_acceptance_matrix.sh` 是总入口,会按顺序执行前三个脚本并汇总 `summary.json`
## 验收矩阵
### 1. 控制面
脚本:
- `scripts/acceptance/verify_route_control_plane.sh`
验证范围:
- 创建 `logical_group`
- 创建 `logical_group_model`
- 创建 `route`
- 创建 `route_model`
- `GET /api/logical-groups/{group_id}`
- `PUT /api/logical-groups/{group_id}`
- `PUT /api/logical-groups/{group_id}/routes/{route_id}`
- `GET /api/logical-groups/{group_id}/routes`
- `GET /api/logical-groups/{group_id}/routes/{route_id}/models`
最小输入:
- `CRM_BASE`
- `CRM_ADMIN_TOKEN`
主要产物:
- `01-create-group.json`
- `03-create-route.json`
- `06-update-group.json`
- `07-update-route.json`
- `10-summary.json`
### 2. 健康视图 / 运行态
脚本:
- `scripts/acceptance/verify_route_health_ui.sh`
验证范围:
- 公网 `route-health.html` 页面可达
- `POST /api/routing/sticky/cooldowns`
- `POST /api/routing/sticky/route-failures`
- `GET /api/routing/routes/health`
- `POST /api/routing/resolve`
- `GET /api/routing/logs/failovers`
最小输入:
- `CRM_BASE`
- `CRM_ADMIN_TOKEN`
- 可选 `ROUTE_HEALTH_PAGE_URL`
主要产物:
- `00-route-health.html`
- `08-health-before.json`
- `09-resolve.json`
- `10-health-after.json`
- `11-failovers.json`
- `12-summary.json`
### 3. 数据面
脚本:
- `scripts/acceptance/verify_route_data_plane.sh`
验证范围:
- 创建临时 `logical_group / route / route_model`
- `POST /api/routing/chat/completions`
- `GET /api/routing/logs/decisions`
最小输入:
- `CRM_BASE`
- `CRM_ADMIN_TOKEN`
- `SHADOW_HOST_ID`
- `SHADOW_GROUP_ID`
- 二选一:
- `SUBSCRIPTION_USER_ID`
- `GATEWAY_API_KEY`
补充说明:
- 若传 `SUBSCRIPTION_USER_ID`,期望 `effective_gateway_key_source=managed_subscription`
- 若传 `GATEWAY_API_KEY`,脚本仍可跑通,但这不覆盖“自动供给 managed key”场景
主要产物:
- `05-route-chat.json`
- `06-decision-logs.json`
- `07-summary.json`
## 总入口
脚本:
- `scripts/acceptance/verify_route_acceptance_matrix.sh`
它会创建:
```text
artifacts/phase2-routing-matrix/<timestamp>_route_matrix/
control_plane/
health_ui/
data_plane/
summary.json
```
`summary.json` 只保留最核心的摘要字段:
- `control_plane_group_id`
- `health_ui_group_id`
- `data_plane_group_id`
- `data_plane_request_id`
- `data_plane_upstream_status`
- `health_ui_resolve_route_id`
## remote43 推荐执行方式
如果要避免把真实 `CRM_ADMIN_TOKEN` 带回本地,推荐直接在 `remote43` 上执行:
```bash
cd /home/ubuntu/sub2api-kimi-patched-auto2-20260525_18169
set -a
. ./.env.crm
set +a
cd /home/ubuntu/sub2api-cn-relay-manager-git-current
CRM_BASE="https://sub.tksea.top/portal-admin-api" \
SHADOW_HOST_ID="<real-shadow-host-id>" \
SHADOW_GROUP_ID="<real-shadow-group-id>" \
SUBSCRIPTION_USER_ID="<managed-user-id>" \
bash ./scripts/acceptance/verify_route_acceptance_matrix.sh
```
## 当前边界
- 脚本只负责留证据和判断通过/失败,不负责清理临时 `logical_group`
- 数据面脚本当前仍依赖调用方提供真实 `shadow_host_id / shadow_group_id`
- 尚未覆盖“同公开模型双线路主备”的未来策略矩阵