# 保存失败问题解决方案

## 问题描述

点击保存工作流时出现两个错误：
1. **CORS错误**：`Access to XMLHttpRequest... blocked by CORS policy`
2. **500内部服务器错误**：`POST /api/v1/workflows 500 (Internal Server Error)`

## 问题原因

### 1. 500错误 ✅ 已修复

**原因**：`WorkflowResponse` 模型期望 `created_at` 和 `updated_at` 是字符串类型，但数据库模型返回的是 `datetime` 对象，导致响应验证失败。

**修复**：将 `WorkflowResponse` 中的 `created_at` 和 `updated_at` 从 `str` 改为 `datetime` 类型。

```python
# 修复前
created_at: str
updated_at: str

# 修复后
from datetime import datetime
created_at: datetime
updated_at: datetime
```

### 2. CORS错误

**原因**：虽然配置中包含了 `http://101.43.95.130:8038`，但可能：
- CORS中间件配置需要重启服务才能生效
- 或者浏览器缓存了旧的CORS响应

**解决方案**：
1. 后端服务已重启，CORS配置应该已生效
2. 如果仍有问题，请清除浏览器缓存或使用无痕模式

## 修复内容

### 1. 修复响应模型 ✅

**文件**：`backend/app/api/workflows.py`

- 添加 `from datetime import datetime`
- 将 `WorkflowResponse` 中的 `created_at` 和 `updated_at` 改为 `datetime` 类型

### 2. 重启后端服务 ✅

- 重启后端服务以应用修复

## 测试步骤

1. **清除浏览器缓存**（推荐）：
   - 按 `Ctrl+Shift+Delete` 清除缓存
   - 或使用无痕模式（`Ctrl+Shift+N`）

2. **刷新页面**：
   - 按 `Ctrl+F5` 强制刷新

3. **测试保存**：
   - 创建工作流
   - 添加节点和连接
   - 点击"保存"按钮
   - 应该看到"工作流已创建"或"工作流已保存"的成功提示

4. **检查控制台**：
   - 打开浏览器控制台（F12）
   - 应该不再出现500错误
   - 如果仍有CORS错误，请清除缓存后重试

## 如果仍有问题

### 检查CORS配置

1. **确认后端CORS配置**：
   ```bash
   docker-compose -f docker-compose.dev.yml exec backend python -c "from app.core.config import settings; print(settings.CORS_ORIGINS)"
   ```
   应该包含：`http://101.43.95.130:8038`

2. **检查后端日志**：
   ```bash
   docker-compose -f docker-compose.dev.yml logs --tail=50 backend
   ```

3. **测试API**：
   ```bash
   curl -X POST http://101.43.95.130:8037/api/v1/workflows \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Origin: http://101.43.95.130:8038" \
     -d '{"name":"test","nodes":[],"edges":[]}'
   ```

### 常见问题

1. **仍然出现CORS错误**：
   - 清除浏览器缓存
   - 使用无痕模式
   - 检查后端服务是否正常运行

2. **仍然出现500错误**：
   - 检查后端日志：`docker-compose -f docker-compose.dev.yml logs backend`
   - 确认数据库连接正常
   - 确认用户已登录（有有效的token）

---

**状态**: ✅ 已修复
**时间**: 2024年
