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

2.8 KiB
Raw Permalink Blame History

问题记录文档

记录智队中枢项目开发过程中发现的问题、原因分析和解决方案


问题 #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"

验证结果

# 不带尾部斜杠 → 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

// 修改前
const response = await fetch('/api/bots', {

// 修改后
const response = await fetch('/api/bots/', {

方案二:后端修改

修改 app/routes/bots.py

# 修改前
@bots_bp.route('/', methods=['POST'])

# 修改后
@bots_bp.route('', methods=['POST'])

方案三Flask 配置(全局生效)

app/__init__.py 中添加:

app.url_map.strict_slashes = False

解决状态

状态 日期
待修复 -

问题记录模板

## 问题 #XXX[问题标题]

### 问题现象

**发现时间**YYYY-MM-DD

**发现版本**vX.X.X

**问题描述**
[描述问题现象]

**影响范围**
- [影响的功能模块]

---

### 问题原因

**根本原因**[一句话概括]

**详细分析**
[详细的原因分析]

---

### 解决方案

**方案**[解决方案描述]

**代码修改**
```语言
// 修改前
[代码]

// 修改后
[代码]

解决状态

状态 日期
已修复 YYYY-MM-DD


---

_文档创建时间2026-03-15 | 维护者:小白 🐶_