# AI海报生成系统 - 简化部署方案 ## 🎯 核心架构 ``` 前端 → API服务器(8000端口) → ComfyUI服务器(101.201.50.90:8188) ``` ## 🚀 简化API设计 ### 主要接口(只需要这一个) **POST** `/api/generate-poster` **请求:** ```json { "user_input": "端午节海报,传统风格,包含荷花和龙舟" } ``` **响应:** ```json { "status": "success", "message": "海报生成完成", "data": { "vue_code": "完整的Vue组件代码", "suggestions": { "layer6_title_content": {"content": "端午节安康", "font_name": "SimHei"}, "layer7_subtitle_content": {"content": "粽叶飘香,龙舟竞渡"} }, "psd_file_path": "生成的PSD文件路径", "file_size_mb": 5.93, "generated_images": 2 }, "session_id": "会话ID用于下载文件" } ``` ### 文件下载接口 **GET** `/api/download/{file_type}?session_id={session_id}` - `file_type`: `vue` | `psd` | `json` ## 🔧 本地开发部署 ### 1. 启动API服务器 ```bash cd E:\砚生\ai_service\scripts python run_pipeline.py # 选择: 2 (API服务器模式) ``` 服务器启动在: `http://localhost:8000` ### 2. 前端调用示例 ```javascript // 一键生成海报 async function generatePoster(userInput) { try { const response = await fetch('http://localhost:8000/api/generate-poster', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ user_input: userInput }) }); const result = await response.json(); if (result.status === 'success') { console.log('Vue代码:', result.data.vue_code); console.log('PSD文件大小:', result.data.file_size_mb, 'MB'); // 下载Vue文件 downloadFile(result.session_id, 'vue'); // 下载PSD文件 downloadFile(result.session_id, 'psd'); return result; } } catch (error) { console.error('生成失败:', error); } } // 下载文件 function downloadFile(sessionId, fileType) { const url = `http://localhost:8000/api/download/${fileType}?session_id=${sessionId}`; const a = document.createElement('a'); a.href = url; a.download = ''; document.body.appendChild(a); a.click(); document.body.removeChild(a); } // 使用示例 generatePoster("春节海报,红色背景,包含灯笼"); ``` ## 🌐 生产环境部署 ### 方案1: 单服务器部署(推荐) ```bash # 1. 安装依赖 pip install -r requirements.txt # 2. 配置环境变量 cp .env.example .env # 编辑.env文件,设置API密钥 # 3. 启动服务 python run_pipeline.py # 选择: 2 (API服务器模式) # 4. 使用PM2管理进程(可选) npm install -g pm2 pm2 start "python run_pipeline.py --mode=api" --name="poster-api" ``` ### 方案2: Docker部署 ```dockerfile # Dockerfile FROM python:3.11 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8000 CMD ["python", "scripts/run_pipeline.py", "--mode=api"] ``` ```bash # 构建和运行 docker build -t poster-api . docker run -p 8000:8000 poster-api ``` ### 方案3: 云服务器部署 ```bash # 在云服务器上 git clone <你的仓库> cd ai_service pip install -r requirements.txt # 配置防火墙开放8000端口 sudo ufw allow 8000 # 启动服务 python scripts/run_pipeline.py ``` ## 🔒 生产环境配置 ### 1. 修改CORS设置 ```python # 在run_pipeline.py中修改 app.add_middleware( CORSMiddleware, allow_origins=["https://your-frontend-domain.com"], # 改为你的前端域名 allow_credentials=True, allow_methods=["GET", "POST"], allow_headers=["*"], ) ``` ### 2. 添加API认证(可选) ```python from fastapi.security import HTTPBearer security = HTTPBearer() @app.post("/api/generate-poster") async def generate_poster_api(request: PosterRequest, token: str = Depends(security)): # 验证token if not verify_token(token.credentials): raise HTTPException(status_code=401, detail="Invalid token") # ...existing code... ``` ### 3. 配置HTTPS(Nginx反向代理) ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ## 📊 性能监控 ### 健康检查 ```bash curl http://localhost:8000/health ``` ### 状态监控 ```javascript // 检查生成状态 async function checkStatus(sessionId) { const response = await fetch(`http://localhost:8000/api/status/${sessionId}`); return await response.json(); } ``` ## 🎯 为什么使用单一API? 1. **简化前端调用** - 一次请求获得所有结果 2. **减少网络延迟** - 避免多次HTTP请求 3. **统一错误处理** - 所有错误在一个地方处理 4. **会话管理** - 自动管理文件和状态 5. **部署简单** - 只需要一个服务端点 ## 🔄 工作流程 1. **前端发送请求** → `POST /api/generate-poster` 2. **API自动执行**: - 调用DeepSeek分析用户输入 - 调用ComfyUI(101.201.50.90:8188)生成图片 - 调用Kimi生成文案 - 生成Vue代码 - 创建PSD文件(使用手动模板) 3. **返回完整结果** → 前端获得所有内容 4. **前端按需下载** → 使用session_id下载文件 这样设计的好处是前端只需要调用一个接口,等待完成后就能获得Vue代码和下载PSD文件,非常简单高效!