fix(copilot): harden provider configuration flow

This commit is contained in:
2026-07-13 14:57:28 +08:00
parent 19cee9af11
commit a712b91982
8 changed files with 153 additions and 36 deletions
+12 -4
View File
@@ -97,9 +97,12 @@ Provider 预设只负责填充默认 Endpoint,不锁死模型:
| Provider | 默认 Base URL | 协议实现 |
|---|---|---|
| OpenAI | `https://api.openai.com/v1` | Eino OpenAI |
| Anthropic | `https://api.anthropic.com` | Anthropic Messages API |
| OpenAI Compatible | 用户填写 | Eino OpenAI;适用于 DeepSeek、通义千问、豆包及自建网关 |
| OpenAI | `https://api.openai.com/v1` | `llm.OpenAIProvider`,OpenAI Chat Completions API |
| Anthropic | `https://api.anthropic.com` | `llm.AnthropicProvider`,Anthropic Messages API |
| OpenAI Compatible | 用户填写 | `llm.OpenAIProvider` + 自定义 Base URL;适用于 DeepSeek、通义千问、豆包及自建网关 |
`EinoProvider` 适配器仍保留给显式构造的 Eino ChatModel/Embedder 使用;数据库驱动的
`ProviderManager` 运行时配置链路不经过该适配器,而是按协议直接创建上述 Provider。
首期不单独增加 DeepSeek/Qwen/Doubao 枚举,避免把供应商宣传名称与真实协议实现绑死。
@@ -313,13 +316,18 @@ Embedding 维度由迁移 `000056_make_article_embedding_dimension_dynamic` 改
- `go test ./...` 通过。
- 覆盖明文存储、掩码/不回显、保留/替换/清除、候选测试不落库、Provider 热切换、
OpenAI/OpenAI-compatible/Anthropic、超时/重试、统一安全错误、动态 Embedding 维度和重建状态。
- Service → `ProviderManager` → Fake HTTP Provider 集成测试证明 editor、copilot、assistant、
label suggestion 分别使用账户配置的功能模型,未配置时由 Manager 回退平台默认模型。
- Assistant 显式配置的 Temperature(包括 `0`)优先于平台默认值;未显式配置时继续使用平台值。
- OpenAI-compatible 的错误响应与 malformed SSE chunk 不进入日志或健康检查响应;对外只返回稳定错误类别。
- SuperAdmin 平台权限、Administrator 账户权限和 Agent 禁止访问均有 Handler/Middleware 回归测试。
- 配置变更写入 `audits`,只记录 Provider、模型、维度、配置状态和是否变更 Key,不记录 Key 或掩码。
### 前端自动化
- Vitest 覆盖菜单/路由、Pinia 平台与账户请求、SuperAdmin 识别、Provider 条件字段、
API Key 不回填/清除确认、Anthropic 非法组合、维度确认、回复行为和自动回复确认。
API Key 不回填/清除确认、清除 Key 时允许保存但禁止连接测试、Anthropic 非法组合、
维度确认、回复行为和自动回复确认。
- `pnpm build` 通过。
### 真实运行验证