38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
# 需求分析 — 2026-04-19-03-03-55
|
||
|
||
## 1. 需求背景
|
||
AI 撰写功能上线后出现三个体验问题:
|
||
1. **SystemSettings 测试连接成功(返回 13 个模型),但 ReportEditor 调用报 404**:`POST https://api.moonshot.cn/v1/chat/completions 404`
|
||
2. **模型名称只能手动输入**:用户希望测试连接成功后,模型名称自动变为下拉选择(从 `/models` 返回的列表中选择)
|
||
3. **AI 聊天记录不持久**:从 ReportEditor 切换到其他页面再返回,AI 撰写面板中的聊天记录全部丢失
|
||
|
||
## 2. 需求拆解
|
||
- [ ] **Task 1:修复 404 错误**
|
||
- 原因分析:测试按钮读取的是 React state(界面临时值),ReportEditor 读取的是 localStorage。若测试后未点击"保存",两者不一致。另外 `apiEndpoint` 末尾多余斜杠可能导致路径拼接错误(`v1//chat/completions`)
|
||
- 修复:在 `handleAIGenerate` 中对 `apiEndpoint` 做 `.replace(/\/+$/, '')` 净化
|
||
- [ ] **Task 2:模型名称下拉栏**
|
||
- SystemSettings.tsx 增加 `availableModels` 状态
|
||
- `testApi` 成功后解析 `/models` 响应,填充 `availableModels`
|
||
- Model Name 输入框在有 availableModels 时自动变为 `<select>` 下拉
|
||
- [ ] **Task 3:AI 聊天记录持久化**
|
||
- `stateRef` 增加 `chatMessages` 字段
|
||
- `saveDraftToStorage` 将 `chatMessages` 存入 draft
|
||
- 初始化 `useEffect` 恢复 draft 时,同步恢复 `chatMessages`
|
||
|
||
## 3. 影响范围
|
||
| 文件 | 修改类型 | 风险等级 |
|
||
|------|----------|----------|
|
||
| `src/pages/ReportEditor.tsx` | 修改(endpoint 净化 + 草稿持久化) | 中 |
|
||
| `src/pages/SystemSettings.tsx` | 修改(testApi + UI 动态切换) | 低 |
|
||
|
||
## 4. 优先级
|
||
- P0:404 修复(功能不可用)
|
||
- P1:聊天记录持久化(体验问题)
|
||
- P1:模型名称下拉栏(体验优化)
|
||
|
||
## 5. 验收标准
|
||
- [ ] ReportEditor 中 AI 调用不再因尾部斜杠导致 404
|
||
- [ ] SystemSettings 测试连接成功后,模型名称自动变为下拉栏,可选模型列表
|
||
- [ ] 切换页面后返回 ReportEditor,AI 聊天记录保留
|
||
- [ ] `npm run lint` 无类型错误
|