# AI换脸换装异步任务系统使用指南 ## 🚀 系统概述 本系统实现了真正的异步任务处理,确保在执行AI换脸换装任务时,用户可以正常访问其他页面功能(如历史记录、素材库等),无需等待AI任务完成。 ## 🏗️ 技术架构 ### 后端架构 - **任务队列服务**: 基于线程池的异步任务处理 - **FastAPI**: 异步Web框架,支持高并发 - **多线程处理**: AI任务在独立线程中执行 - **状态管理**: 实时任务状态跟踪 ### 前端架构 - **React**: 组件化UI,独立状态管理 - **轮询机制**: 定期检查任务状态 - **实时反馈**: 任务进度和状态显示 ## 📋 功能特性 ### ✅ 核心功能 1. **非阻塞任务提交**: 立即返回任务ID,不阻塞用户界面 2. **实时状态监控**: 轮询任务状态,实时显示进度 3. **并发API访问**: 其他页面功能正常使用 4. **任务管理**: 支持取消、查看任务列表 5. **错误处理**: 完善的异常处理和用户反馈 ### ✅ 用户体验 1. **即时响应**: 任务提交后立即可以切换页面 2. **状态透明**: 清楚显示任务状态和进度 3. **操作灵活**: 支持取消正在进行的任务 4. **历史记录**: 任务完成后自动更新历史记录 ## 🔧 使用方法 ### 1. 启动系统 ```bash # 启动后端服务 cd backend python -m uvicorn api.ai_swap_api:app --reload --host 0.0.0.0 --port 8000 # 启动前端服务 cd new_frontend npm start ``` ### 2. 使用流程 1. **登录系统**: 访问登录页面,输入用户凭据 2. **上传素材**: 在素材库页面上传人脸和服装素材 3. **开始处理**: 在AI换脸换装页面选择素材并输入提示词 4. **任务提交**: 点击"开始AI换脸换装"按钮 5. **状态监控**: 查看任务状态和进度 6. **自由操作**: 可以切换到其他页面,功能正常使用 7. **结果查看**: 任务完成后查看处理结果 ### 3. 任务状态说明 - **等待中 (pending)**: 任务已提交,等待处理 - **处理中 (processing)**: 任务正在执行 - **已完成 (completed)**: 任务成功完成 - **失败 (failed)**: 任务执行失败 - **已取消 (cancelled)**: 任务被用户取消 ## 🧪 测试验证 ### 1. 运行测试脚本 ```bash python test_async_system.py ``` ### 2. 手动测试步骤 1. 启动AI换脸换装任务 2. 立即切换到历史记录页面 3. 验证历史记录正常加载 4. 切换到素材库页面 5. 验证素材列表正常显示 6. 返回AI换脸换装页面查看任务状态 ### 3. 预期结果 - ✅ 其他页面可以正常访问和加载数据 - ✅ 任务状态实时更新 - ✅ 系统响应流畅,无阻塞现象 - ✅ 任务完成后结果正常显示 ## 📊 API接口 ### 任务管理接口 ```http # 提交AI换脸换装任务 POST /api/v1/swap { "user_id": 3, "face_image_id": 21, "cloth_image_id": 40, "prompt": "创意提示词" } # 获取任务状态 GET /api/v1/tasks/{task_id} # 获取用户任务列表 GET /api/v1/users/{user_id}/tasks # 取消任务 DELETE /api/v1/tasks/{task_id} # 获取队列统计 GET /api/v1/tasks/queue/stats ``` ### 响应示例 ```json { "success": true, "task_id": "550e8400-e29b-41d4-a716-446655440000", "process_record_id": null, "result_image_id": null, "copywriter_text": null, "history_prompt": null } ``` ## 🔍 监控和调试 ### 1. 后端日志 ```bash # 查看任务队列日志 tail -f backend/logs/ai_swap_service.log # 查看API访问日志 tail -f backend/logs/ai_swap_api.log ``` ### 2. 前端调试 ```javascript // 浏览器控制台查看任务状态 console.log('当前任务ID:', currentTaskId); console.log('任务状态:', taskStatus); // 网络面板查看API请求 // 检查 /api/v1/tasks/{task_id} 请求 ``` ### 3. 队列监控 ```bash # 查看队列统计 curl http://localhost:8000/api/v1/tasks/queue/stats ``` ## ⚠️ 注意事项 ### 1. 系统要求 - Python 3.8+ - Node.js 14+ - 足够的内存和CPU资源 - 稳定的网络连接 ### 2. 性能考虑 - 任务队列最大并发数: 3个 - 轮询间隔: 2秒 - 任务超时: 无限制(建议监控长时间任务) ### 3. 错误处理 - 网络异常: 自动重试轮询 - 任务失败: 显示错误信息 - 系统异常: 记录详细日志 ## 🚀 扩展功能 ### 1. 可扩展功能 - WebSocket实时推送 - 任务优先级管理 - 分布式任务队列 - 任务结果缓存 - 批量任务处理 ### 2. 性能优化 - 数据库连接池优化 - 静态文件CDN加速 - 图片压缩和缓存 - API响应缓存 ## 📞 技术支持 如遇到问题,请检查: 1. 后端服务是否正常启动 2. 任务队列服务是否运行 3. 数据库连接是否正常 4. 网络连接是否稳定 5. 浏览器控制台是否有错误 --- **总结**: 本异步任务系统确保了在执行AI换脸换装任务时,用户可以正常使用其他页面功能,提供了良好的用户体验和系统响应性。