# 问题记录文档 > 记录智队中枢项目开发过程中发现的问题、原因分析和解决方案 --- ## 问题 #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 | 维护者:小白 🐶_