docs(v2): add batch auto-import spec and tdd plan with resolved open questions
- Add BATCH_AUTO_IMPORT_SPEC.md: 3-stage pipeline (probe/provision/validate), provider_id=host+hash, smoke_model=find-first-usable, pricing=defaults - Add BATCH_AUTO_IMPORT_TDD_PLAN.md: 5-stage implementation plan, 10 tasks - Update EXECUTION_BOARD.md: add v2 section with resolved open questions
This commit is contained in:
@@ -185,9 +185,55 @@
|
||||
3. 若换 key 后 upstream `/chat/completions` 变成 `200`,再看 host `/chat/completions` 是否仍有兼容性问题
|
||||
4. 当前代码状态可维持 “代码侧 `CONDITIONAL_APPROVED`、外部门禁 `BLOCKED`”
|
||||
|
||||
## v2 规划:Batch Auto-Import(URL + Key)
|
||||
|
||||
**文档**:`docs/2026-05-21-BATCH_AUTO_IMPORT_SPEC.md`(需求规格)
|
||||
**TDD 计划**:`docs/2026-05-21-BATCH_AUTO_IMPORT_TDD_PLAN.md`(实现路径)
|
||||
|
||||
**核心目标**:管理员只需提供 `(base_url, api_key)` 列表,系统自动完成上游模型探测 → 宿主 channel 扩展 → provider 注册 → 中转闭环验证,全程无需预置 provider manifest。
|
||||
|
||||
**三阶段管道**:
|
||||
```
|
||||
Stage 1 (Probe) → GET /v1/models 获取模型列表,smoke test completion
|
||||
Stage 2 (Provision) → channel 自动扩展 model_mapping,创建/更新 account
|
||||
Stage 3 (Validate) → host relay completion 测试,写 access_status
|
||||
```
|
||||
|
||||
**新增模块**:
|
||||
- `internal/probe/` — 上游探测(models 解析 / completion smoke / 错误分类)
|
||||
- `internal/batch/` — 批量编排(URL→provider_id / model_mapping 扩展 / 管道服务)
|
||||
- `cmd/cli/batch_import.go` — CLI 入口
|
||||
- `internal/host/sub2api/channel.go` — PatchChannel 扩展
|
||||
|
||||
**成功标准**:
|
||||
- 单条和文件批量输入均可
|
||||
- 重复导入同一 URL+key 幂等(不重复创建 channel/account)
|
||||
- strict/partial 两种模式
|
||||
- Stage 3 completion 通过时 `access_status=active`,失败时正确降级
|
||||
- 全流程不修改宿主源码,不写宿主数据库
|
||||
|
||||
**任务清单**(共 10 项,详见 TDD_PLAN):
|
||||
- [ ] probe/models + test
|
||||
- [ ] probe/classifier + test
|
||||
- [ ] probe/completion + test
|
||||
- [ ] batch/provider_id + test
|
||||
- [ ] batch/channel_evolution + test
|
||||
- [ ] host/channel.go PatchChannel + test
|
||||
- [ ] batch/service + test
|
||||
- [ ] cmd/cli/batch_import
|
||||
- [ ] integration test
|
||||
- [ ] 全量门禁
|
||||
|
||||
**开放问题(已决策)**:
|
||||
1. ~~smoke test model 选择策略~~ → 选 C:遍历找第一个可用的
|
||||
2. ~~model_pricing 为空时 restrict_models 行为~~ → 选 B:自动补空 pricing
|
||||
3. ~~provider_id 冲突策略~~ → 选 B:host + hash(`{normalized_host}-{url_hash_last8}`)
|
||||
|
||||
---
|
||||
|
||||
## 禁止错误结论
|
||||
|
||||
- ❌ 历史失败 artifact ≠ 当前 fresh redeploy 仍失败
|
||||
- ❌ capability probe 无副作用 ≠ 所有宿主版本都已真实兼容
|
||||
- ❌ rollback-provider 已改安全路径 ≠ 历史脏资源自动消失
|
||||
|- ❌ 历史失败 artifact ≠ 当前 fresh redeploy 仍失败
|
||||
|- ❌ capability probe 无副作用 ≠ 所有宿主版本都已真实兼容
|
||||
|- ❌ rollback-provider 已改安全路径 ≠ 历史脏资源自动消失
|
||||
- ❌ `HTTP 200` ≠ 宿主初始化会自动准备普通用户/订阅/余额;这些仍是显式运营前置
|
||||
|
||||
Reference in New Issue
Block a user