2.7 KiB
2.7 KiB
需求分析 — 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.tsxUI- 改为"服务商选择器 + 动态配置表单"模式
- 预设服务商: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成功,页面可正常访问