docs(routing): capture phase1 foundation plan
This commit is contained in:
@@ -100,6 +100,47 @@
|
||||
- `gpt-codex2api-route-lab` 在尝试复用同一 group 时被宿主直接拒绝,artifact:`artifacts/real-host-acceptance/20260528_142320_remote43_gpt-codex2api-route-lab_key_import/03-import.body.json`
|
||||
- 宿主返回 `409 GROUP_ALREADY_IN_CHANNEL`,错误为:`one or more groups already belong to another channel`
|
||||
- 因此当前真实结论不是“同组多 channel 可继续验证路由策略”,而是 **stock / patched sub2api 当前结构上不允许同一个 group 绑定到第二个 channel**
|
||||
- 2026-05-28 已进一步把宿主侧最小改造方案固化到 `docs/HOST_MULTI_CHANNEL_MINIMAL_RETROFIT.md`:
|
||||
- 真实最小改造不只是移除 `channel_groups(group_id)` 唯一索引
|
||||
- 还必须给宿主 `account_groups` 引入 `channel_id`,并让 `gateway / scheduler / sticky session / account stats pricing` 全部从 `group -> single channel` 升级到 `group + channel` 维度
|
||||
- 否则就算数据库允许同一 group 绑定多个 channel,运行时账号池仍会被按 group 混跑,结构上仍不成立
|
||||
- 2026-05-28 已明确 fallback 方案:不修改宿主源码,改由 relay-manager 插件层维护 `logical_group -> route -> shadow_group` 三层抽象,详见 `docs/PLUGIN_ROUTE_STICKY_DESIGN.md`
|
||||
- 前端只看到一个逻辑分组
|
||||
- 插件层先做 route 级 sticky,再把请求稳定转发到某个宿主 shadow group
|
||||
- 宿主继续只做单线路 group 内的 account sticky / 调度
|
||||
- 2026-05-28 已新增插件整体需求盘点 `docs/PLUGIN_REQUIREMENTS_OVERVIEW_2026-05-28.md`
|
||||
- 已把“增加模型、维护逻辑分组、智能路由、供应商帐号导入与停启用、普通用户前端”五大功能域统一收口
|
||||
- 并明确区分 `已完成 / 待优化 / 待完成 / 未来规划`
|
||||
- 2026-05-28 已继续细化闭环实施规划 `docs/PLUGIN_CLOSED_LOOP_IMPLEMENTATION_PLAN_2026-05-28.md`
|
||||
- 明确当前插件数据库仍为 SQLite(`SUB2API_CRM_SQLITE_DSN`)
|
||||
- 明确后续继续以 SQLite 作为主状态库,Redis 作为智能路由运行态缓存
|
||||
- 明确智能路由日志必须结构化落入插件 SQLite,而不是只放 Redis 或 stdout
|
||||
- 2026-05-28 已新增 Phase 1 可开工任务单 `docs/plans/2026-05-28-phase1-logical-routing-foundation-plan.md`
|
||||
- 已把 `SQLite migration / logical_group-route repo+API / 路由日志写入器 / Redis sticky 抽象` 拆成可执行任务
|
||||
- 已继续细化到任务级 `入场条件 / 产出清单 / 远端验证步骤 / 证据要求 / 回滚原则`
|
||||
- 并明确要求:每个闭环功能完成后,都必须提交、推送、部署到 `remote43` 再验证,不能只停留在本地测试
|
||||
- 当前 Phase 1 的统一真相是:
|
||||
- 主状态库继续使用 SQLite
|
||||
- 路由运行态使用 Redis 或 memory backend 抽象
|
||||
- 智能路由日志必须最终结构化写回插件 SQLite
|
||||
- 2026-05-28 已完成 Phase 1 / `P1-T1 SQLite schema foundation`
|
||||
- 提交:`7f75d8a6 feat(routing): add logical group schema foundation`
|
||||
- 新 migration:`internal/store/migrations/0010_logical_groups_and_routes.sql`
|
||||
- 本地门禁已通过:
|
||||
- `gofmt -l .`
|
||||
- `go vet ./...`
|
||||
- `go test -cover ./internal/...`
|
||||
- `go test ./tests/integration/... -count=1`
|
||||
- remote43 已原位升级到 `repo HEAD = 7f75d8a`
|
||||
- `http://127.0.0.1:18173/healthz` 返回 `ok`
|
||||
- remote43 实例 SQLite `/home/ubuntu/sub2api-kimi-patched-auto2-20260525_18169/sub2api-cn-relay-manager.db` 已确认包含:
|
||||
- `logical_groups`
|
||||
- `logical_group_models`
|
||||
- `logical_group_routes`
|
||||
- `logical_group_route_models`
|
||||
- 这轮远端验证还顺手暴露并修正了一个部署细节:
|
||||
- 若只在 `/home/ubuntu` 下直接拉起 CRM,新进程会回退到默认相对 SQLite 路径 `/home/ubuntu/sub2api-cn-relay-manager.db`
|
||||
- 当前已改为显式 `cd` 到实例目录并 `source .env.crm` 后再启动,确保 migration 生效在实例库而不是错误的默认库
|
||||
- 2026-05-26 已把“最终用户 -> 公网域名 -> OpenClaw”这一跳补进正式验证口径:
|
||||
- 公网根地址当前统一为 `https://sub.tksea.top`
|
||||
- OpenClaw 本地 `MiniMax` 运行时故障已定位为 `pi-ai/openai-node` 未继承系统 `HTTP(S)_PROXY`,不是 allowlist 或模型名大小写问题
|
||||
|
||||
Reference in New Issue
Block a user