feat: 新增模型管理功能(供应商 + 模型 CRUD)
- 新增 providers/models 数据库表、迁移和数据访问层 - 新增 15 个后端 API 路由(供应商/模型 CRUD + 连通性测试) - 新增 AI 服务层(registry.ts: buildProviderRegistry + testProviderConnection) - 新增前端模型管理页面(Tabs: 供应商/模型,含表格、表单、工具栏) - 新增前端 hooks(use-providers, use-models) - 新增共享类型和 MODEL_CAPABILITIES 常量 - 新增 10 个测试文件(66 个测试用例,4 个因 bun test ESM 兼容问题待修复) - 更新开发文档(architecture, backend, frontend) - 附带 apply-review 修复:统一错误响应、提取共享常量、清理重复测试 注意:registry.test.ts 中 4 个测试因 bun test 无法解析 createProviderRegistry ESM 导出而失败,详情见 context.md
This commit is contained in:
@@ -62,7 +62,36 @@ middleware.ts 提供 API 参数校验函数:
|
||||
|
||||
### 数据访问
|
||||
|
||||
`src/server/db/projects.ts` 提供项目数据访问函数,输入输出使用 `src/shared/api.ts` 的类型。函数内部使用 Drizzle query builder 包装 `bun:sqlite` Database。
|
||||
`src/server/db/projects.ts` 提供项目数据访问函数,`src/server/db/providers.ts` 提供供应商数据访问函数,`src/server/db/models.ts` 提供模型数据访问函数。输入输出使用 `src/shared/api.ts` 的类型。函数内部使用 Drizzle query builder 包装 `bun:sqlite` Database。
|
||||
|
||||
## AI 服务层
|
||||
|
||||
`src/server/ai/` 提供 AI Provider Registry 构建与连接测试能力。
|
||||
|
||||
### 类型定义
|
||||
|
||||
`src/server/ai/types.ts` 定义 AI 配置类型:
|
||||
|
||||
- `AIProviderConfig` — 供应商配置(name、type、baseUrl、apiKey)
|
||||
- `AIModelConfig` — 模型配置(providerId、modelId、capabilities)
|
||||
- `AIRegistryConfig` — Registry 构建配置(providers、models)
|
||||
|
||||
### Registry 构建
|
||||
|
||||
`src/server/ai/registry.ts` 提供:
|
||||
|
||||
- `buildProviderRegistry(db)` — 从 DB 查询启用的供应商,构建 Vercel AI SDK Provider Registry
|
||||
- `testProviderConnection(config)` — 使用 generateText 测试供应商连接
|
||||
|
||||
每次 AI 调用时从 DB 查询 providers,构建 registry 后通过 `registry.languageModel('providerId:modelId')` 获取模型实例。不使用缓存层。
|
||||
|
||||
### 支持的供应商类型
|
||||
|
||||
| type | AI SDK factory |
|
||||
| ------------------- | --------------------------------------------------- |
|
||||
| `openai` | `createOpenAI({ apiKey, baseURL })` |
|
||||
| `anthropic` | `createAnthropic({ apiKey, baseURL })` |
|
||||
| `openai-compatible` | `createOpenAICompatible({ name, apiKey, baseURL })` |
|
||||
|
||||
## 类型规范
|
||||
|
||||
|
||||
Reference in New Issue
Block a user