49 lines
2.7 KiB
Markdown
49 lines
2.7 KiB
Markdown
# 需求分析 — 2026-04-19-02-48-25
|
||
|
||
## 1. 需求背景
|
||
当前 system-settings 中的 AI 接口配置存在冗余和僵化问题:
|
||
- 平铺展示 4 个输入框(`apiEndpoint`/`apiKey`/`kimiApiEndpoint`/`kimiApiKey`),用户困惑该填哪个
|
||
- ReportEditor 中 AI 调用逻辑硬编码 `kimi-k2-5` 模型和 Kimi 接口,无法切换其他模型
|
||
- 未来需要支持 DeepSeek、OpenAI、本地模型等多种服务商,且模型版本会频繁迭代
|
||
|
||
## 2. 需求拆解
|
||
- [ ] **Task 1**:重构 `types.ts` 中 `SystemSettings` 的数据结构
|
||
- 废除 `apiEndpoint`、`apiKey`、`kimiApiKey`、`kimiApiEndpoint` 四个散装字段
|
||
- 新增 `activeAiProvider: string`(当前激活的服务商)
|
||
- 新增 `aiProviders: Record<string, AiProviderConfig>`(多服务商配置字典)
|
||
- `AiProviderConfig` 包含:`endpoint`、`apiKey`、`modelName`
|
||
- [ ] **Task 2**:重构 `SystemSettings.tsx` UI
|
||
- 改为"服务商选择器 + 动态配置表单"模式
|
||
- 预设服务商:Kimi、DeepSeek、OpenAI、自定义
|
||
- 每个服务商可配置:Base URL、API Key、Model Name
|
||
- `testApi` 改为通用测试,使用当前选中的服务商配置
|
||
- [ ] **Task 3**:重构 `ReportEditor.tsx` 调用逻辑
|
||
- `handleAIGenerate` 从 `aiProviders[activeAiProvider]` 动态读取 endpoint/key/model
|
||
- 消除 `model: 'kimi-k2-5'` 硬编码
|
||
- 保持 OpenAI 兼容的 messages 组装逻辑不变
|
||
- [ ] **Task 4**:数据迁移
|
||
- 首次加载时,若检测到旧的 `kimiApiKey`/`kimiApiEndpoint`,自动迁移到 `aiProviders.kimi`
|
||
- 默认模型名设为 `kimi-k2-5`
|
||
|
||
## 3. 影响范围
|
||
| 文件 | 修改类型 | 风险等级 |
|
||
|------|----------|----------|
|
||
| `src/types.ts` | 修改(重构 SystemSettings) | **高**(数据结构变更) |
|
||
| `src/pages/SystemSettings.tsx` | 修改(UI 重构 + 数据迁移) | **高** |
|
||
| `src/pages/ReportEditor.tsx` | 修改(解耦 AI 调用) | 中 |
|
||
| `src/pages/Login.tsx` | 可能修改(默认设置初始化) | 低 |
|
||
|
||
## 4. 优先级
|
||
- P0:数据结构重构 + 迁移逻辑(不做好,旧数据会丢失或报错)
|
||
- P0:SystemSettings UI 改造
|
||
- P0:ReportEditor 调用解耦
|
||
- P1:Login.tsx 默认初始化更新
|
||
|
||
## 5. 验收标准
|
||
- [ ] SystemSettings 中只看到 1 个服务商选择下拉框 + 3 个动态输入框(Base URL / API Key / Model)
|
||
- [ ] 切换服务商时,输入框的值自动切换为该服务商的配置
|
||
- [ ] 旧用户(已有 `kimiApiKey`)首次进入 settings,数据自动迁移,配置不丢失
|
||
- [ ] ReportEditor AI 调用使用当前选中的服务商配置,模型名随配置变化
|
||
- [ ] `npm run lint` 无类型错误
|
||
- [ ] `npm run build` 成功,页面可正常访问
|