90 lines
5.5 KiB
Markdown
90 lines
5.5 KiB
Markdown
# sub2api-cn-relay-manager 执行板
|
||
|
||
日期:2026-05-18
|
||
当前 Gate:APPROVED(按 PRD 首版范围放行;代码门禁通过,真实宿主 fresh redeploy 复验已确认 self_service / subscription 访问链路可打通,且已补充 reconcile host-scope acceptance artifact)
|
||
目标:实现独立控制面、零侵入宿主、可导入国产模型并具备可运维的导入/回滚/访问闭环。
|
||
|
||
## 本轮已完成
|
||
|
||
1. 宿主身份模型统一
|
||
- host 注册时持久化 `auth_type/auth_token`
|
||
- import / reconcile / rollback-provider / access 运行时链路切换为 `host_id` 主键
|
||
- provider status / resources / access status / import-batches 支持 `host_id` 查询维度
|
||
2. managed_resources 宿主维度收口
|
||
- 新增迁移 `0004_host_identity_and_managed_resources.sql`
|
||
- `managed_resources` 唯一键提升为 `(host_id, resource_type, host_resource_id)`
|
||
- 仓储与服务查询切换为 host-scoped 语义
|
||
3. reconcile run 结果按批次收口
|
||
- 新增迁移 `0006_reconcile_runs_batch_scope.sql`
|
||
- `reconcile_runs` 补充 `batch_id`,batch detail 仅返回本批次 reconcile 记录
|
||
4. capability probe 收敛为无副作用探测
|
||
- 不再对真实创建接口发送空 `POST`
|
||
5. rollback-provider 风险收敛
|
||
- 改为优先按已记录批次资源 `RollbackStoredResources()` 回滚
|
||
- 缺少已记录资源时拒绝危险删除
|
||
6. 文档真相同步
|
||
- 新增 `docs/2026-05-18-PRODUCTION_REMEDIATION_TASK_BOARD.md`
|
||
- 下调 `DEPLOYMENT.md` 中未实现的 `/metrics` / 限流 / 监控承诺
|
||
7. 真实宿主重新验收已执行
|
||
- `self_service` 新 artifact:`artifacts/real-host-acceptance/20260518_self_service_reaccept_v6`
|
||
- `subscription` 新 artifact:`artifacts/real-host-acceptance/20260518_subscription_reaccept_v6`
|
||
- 两轮都完成了 `preview-import / import / access-preview / status / reconcile / rollback` 全链路落盘
|
||
8. reconcile host-scope 证据已补强
|
||
- `self_service`:`artifacts/real-host-acceptance/20260518_reconcile_hostscope_self_service`
|
||
- `subscription`:`artifacts/real-host-acceptance/20260518_reconcile_hostscope_subscription`
|
||
- 已补齐 `status / resources / reconcile / batch detail / rollback` 的 host-scoped artifact,验证 batch detail 的 reconcile 视图按 batch 收口
|
||
|
||
## 已验证门禁
|
||
|
||
- `gofmt -l .` ✅ 空输出
|
||
- `go vet ./...` ✅
|
||
- `go test ./...` ✅
|
||
- `go test -race ./...` ✅
|
||
- `go test -cover ./internal/...` ✅
|
||
- `internal/access`: `77.3%`
|
||
- `internal/pack`: `72.7%`
|
||
- `internal/provision`: `74.6%`
|
||
- `internal/store/sqlite`: `61.3%`
|
||
- `go test ./tests/integration/... -count=1` ✅
|
||
|
||
## 本轮真实宿主复验结果
|
||
|
||
1. `self_service`(最新 fresh redeploy 复验)
|
||
- 证据目录:`artifacts/real-host-acceptance/20260518_redeploy_matrix`
|
||
- 初始状态:普通用户 key 未绑定 group、用户余额为 0 时,`/v1/models` 返回 `403`
|
||
- 修正后:对普通用户执行“key 绑定标准 group + 用户余额=10”后,`04-self-after-balance.headers.txt` 显示 `HTTP/1.1 200 OK`
|
||
- 结论:`self_service` 主链路已在 fresh host 上真实打通;当前关键前置条件已收敛为 runbook 中明确记录的普通用户创建 / key-group 绑定 / 余额要求,而不是代码级阻塞。
|
||
2. `subscription`(最新 fresh redeploy 复验)
|
||
- 证据目录:`artifacts/real-host-acceptance/20260518_redeploy_matrix`
|
||
- 修正后:创建 subscription 类型 group、完成普通用户订阅分配、并把普通用户 key 绑定到该 group 后,`06-subscription-after-assign.headers.txt` 显示 `HTTP/1.1 200 OK`
|
||
- 结论:`subscription` 主链路也已在 fresh host 上真实打通;其可用前提不是“宿主自动初始化一切”,而是显式完成 subscription group / user subscription / key binding 这一套运营动作。
|
||
|
||
## 剩余项(非阻塞,P2 / 运营前置)
|
||
|
||
1. 结构债务仍存在
|
||
- access / reconcile 尚未完全按 implementation plan 物理拆分
|
||
- 无内置 scheduler/jobs
|
||
2. 运营前置动作需要 runbook 化执行
|
||
- 真实宿主初始化不会自动创建普通用户;验收或上线前必须显式创建普通用户并留存可复用凭据
|
||
- `self_service` 需要普通用户 key 绑定目标标准 group,且通常还需要可用余额
|
||
- `subscription` 需要 subscription 类型 group + 普通用户订阅分配 + key/group 绑定
|
||
3. 标准多阶段 Dockerfile 在受限网络环境下仍不稳
|
||
- 当前推荐 `scripts/build_local_image.sh` + `Dockerfile.local`
|
||
4. 真实宿主验收工具已补自动化闭环
|
||
- `scripts/real_host_acceptance.sh` 支持 `AFTER_IMPORT_HOOK_COMMAND`,可把宿主侧 access 前置动作收敛进同一条 artifact 链
|
||
- `scripts/import_remote43_provider.sh` 已内置 remote43 subscription 的“补余额 + key/group 绑定 + subscription upsert + Redis flush + host state 落盘”
|
||
|
||
## 当前最短上线路径
|
||
|
||
1. 按 `docs/REAL_HOST_ACCEPTANCE_RUNBOOK.md` 准备真实宿主普通用户与凭据
|
||
2. 按目标模式完成必要的 key/group/billing(or subscription) 绑定
|
||
3. 使用 `scripts/build_local_image.sh` 与 `scripts/real_host_acceptance.sh` 复跑并归档现场 artifact
|
||
4. 若现场前置满足,本项目按 PRD 首版范围可直接上线
|
||
|
||
## 禁止错误结论
|
||
|
||
- ❌ 历史失败 artifact ≠ 当前 fresh redeploy 仍失败
|
||
- ❌ capability probe 无副作用 ≠ 所有宿主版本都已真实兼容
|
||
- ❌ rollback-provider 已改安全路径 ≠ 历史脏资源自动消失
|
||
- ❌ `HTTP 200` ≠ 宿主初始化会自动准备普通用户/订阅/余额;这些仍是显式运营前置
|