docs: 新增问题记录文档

- 新增 docs/ISSUES.md 问题记录文档
- 记录问题 #001:新建机器人报 Failed to fetch 错误
- 包含问题现象、原因分析、解决方案
- 提供问题记录模板
This commit is contained in:
小白
2026-03-15 13:31:07 +08:00
parent 11f4347864
commit 7d747fd33a

166
docs/ISSUES.md Normal file
View File

@@ -0,0 +1,166 @@
# 问题记录文档
> 记录智队中枢项目开发过程中发现的问题、原因分析和解决方案
---
## 问题 #001新建机器人报 "Failed to fetch" 错误
### 问题现象
**发现时间**2026-03-15
**发现版本**v0.9.8
**问题描述**
用户在智队中枢 Web 页面点击「新建机器人」按钮,填写表单提交后,前端报错:
```
Failed to fetch
```
**影响范围**
- 新建机器人功能
- 所有 `/api/bots` 相关请求
---
### 问题原因
**根本原因**Flask 路由尾部斜杠不一致导致 301 重定向
**详细分析**
| 组件 | 路径 | 说明 |
|------|------|------|
| Flask 蓝图注册 | `url_prefix='/api/bots'` | 无尾部斜杠 |
| Flask 路由定义 | `@bots_bp.route('/')` | 有前导斜杠 |
| 实际完整路径 | `/api/bots/` | **有尾部斜杠** |
| 前端请求路径 | `fetch('/api/bots')` | **无尾部斜杠** |
**错误流程**
```
1. 前端发送 POST /api/bots无尾部斜杠
2. Flask 返回 301 重定向 → /api/bots/(有尾部斜杠)
3. POST 请求被重定向时:
- 某些浏览器会将 POST 改为 GET
- fetch API 无法正确处理重定向
4. 前端报错 "Failed to fetch"
```
**验证结果**
```bash
# 不带尾部斜杠 → 301 重定向
curl -X POST http://localhost:9000/api/bots
# 返回: Redirecting to /api/bots/
# 带尾部斜杠 → 正常响应
curl -X POST http://localhost:9000/api/bots/
# 返回: {"msg": "Not enough segments"} # 正常的 JWT 错误
```
---
### 解决方案
**方案一:前端修改(推荐)**
修改 `frontend/src/components/chat/CreateBotModal.vue`
```typescript
// 修改前
const response = await fetch('/api/bots', {
// 修改后
const response = await fetch('/api/bots/', {
```
**方案二:后端修改**
修改 `app/routes/bots.py`
```python
# 修改前
@bots_bp.route('/', methods=['POST'])
# 修改后
@bots_bp.route('', methods=['POST'])
```
**方案三Flask 配置(全局生效)**
`app/__init__.py` 中添加:
```python
app.url_map.strict_slashes = False
```
---
### 解决状态
| 状态 | 日期 |
|------|------|
| ⏳ 待修复 | - |
---
## 问题记录模板
```markdown
## 问题 #XXX[问题标题]
### 问题现象
**发现时间**YYYY-MM-DD
**发现版本**vX.X.X
**问题描述**
[描述问题现象]
**影响范围**
- [影响的功能模块]
---
### 问题原因
**根本原因**[一句话概括]
**详细分析**
[详细的原因分析]
---
### 解决方案
**方案**[解决方案描述]
**代码修改**
```语言
// 修改前
[代码]
// 修改后
[代码]
```
---
### 解决状态
| 状态 | 日期 |
|------|------|
| ✅ 已修复 | YYYY-MM-DD |
---
```
---
_文档创建时间2026-03-15 | 维护者:小白 🐶_