ai_service/接口文档.md
Wang Xiuqiang 20802db28a 重构run_pipeline和generate_layout
将辅助函数移动整合到utils.py当中
2025-07-03 11:47:48 +08:00

2.9 KiB

AI海报生成系统 API文档

系统架构

前端 → FastAPI(8000) → ComfyUI(101.201.50.90:8188)
                ↓
           Vue代码 + PSD文件

API端点

1. 健康检查

GET /health

{
  "status": "healthy", 
  "timestamp": "2025-01-02T20:30:00"
}

2. 生成海报

POST /api/generate-poster

请求:

{
  "user_input": "端午节海报,传统风格",
  "session_id": "可选"
}

响应:

{
  "status": "success",
  "message": "海报生成完成",
  "data": {
    "vue_code": "完整Vue组件代码",
    "suggestions": {
      "layer5_logo_content": {
        "text": "主办方",
        "color": "#000000"
      },
      "layer6_title_content": {
        "content": "端午安康",
        "font_name": "SimHei",
        "color": "#7E0C6E"
      },
      "layer7_subtitle_content": {
        "content": "粽叶飘香,龙舟竞渡",
        "font_name": "Microsoft YaHei",
        "color": "#000000"
      }
    },
    "analysis_result": {
      "main_theme": "端午节祝福",
      "width": 1080,
      "height": 1920,
      "keywords": ["端午节", "传统", "荷花"]
    },
    "file_size_mb": 5.93,
    "generated_images": 2
  },
  "session_id": "会话ID"
}

3. 文件下载

GET /api/download/{file_type}?session_id={session_id}

参数: file_type = vue | psd | json

4. 会话状态

GET /api/status/{session_id}

{
  "session_id": "会话ID",
  "files": {
    "vue_file": true,
    "psd_file": true,
    "content_file": true
  },
  "folder": "会话文件夹路径"
}

使用示例

JavaScript

const response = await fetch('http://localhost:8000/api/generate-poster', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ user_input: "春节海报,红色背景" })
});

const result = await response.json();
if (result.status === 'success') {
  // 下载文件
  const url = `http://localhost:8000/api/download/psd?session_id=${result.session_id}`;
  window.open(url);
}

Python

import requests

response = requests.post('http://localhost:8000/api/generate-poster', 
                        json={"user_input": "端午节海报,传统风格"})
result = response.json()

if result["status"] == "success":
    session_id = result["session_id"]
    # 下载PSD文件
    psd_url = f"http://localhost:8000/api/download/psd?session_id={session_id}"
    psd_response = requests.get(psd_url)
    with open("poster.psd", "wb") as f:
        f.write(psd_response.content)

错误处理

{
  "status": "error",
  "message": "错误描述",
  "data": null
}

常见错误码:

  • 400: 请求参数错误
  • 404: 资源不存在
  • 500: 服务器内部错误

部署

开发环境

cd scripts
python run_pipeline.py  # 选择2

生产环境

uvicorn scripts.run_pipeline:app --host 0.0.0.0 --port 8000