2025-03-17 11:14:54 +08:00
|
|
|
|
import json
|
|
|
|
|
|
import logging
|
|
|
|
|
|
|
2025-11-03 11:52:39 +08:00
|
|
|
|
import requests
|
2025-03-17 11:14:54 +08:00
|
|
|
|
from fastapi import APIRouter, BackgroundTasks, HTTPException
|
|
|
|
|
|
|
2025-11-03 11:52:39 +08:00
|
|
|
|
from app.core.config import COMFYUI_SERVER_ADDRESS
|
2025-03-17 11:14:54 +08:00
|
|
|
|
from app.schemas.pose_transform import PoseTransformModel
|
|
|
|
|
|
from app.schemas.response_template import ResponseModel
|
2025-11-03 11:52:39 +08:00
|
|
|
|
from app.service.comfyui_I2V.server import ComfyUIServerI2V
|
2025-03-17 11:14:54 +08:00
|
|
|
|
from app.service.generate_image.service_pose_transform import PoseTransformService, infer_cancel as pose_transform_infer_cancel
|
|
|
|
|
|
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
logger = logging.getLogger()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/pose_transform")
|
|
|
|
|
|
def pose_transform(request_item: PoseTransformModel, background_tasks: BackgroundTasks):
|
|
|
|
|
|
"""
|
|
|
|
|
|
创建一个具有以下参数的请求体:
|
|
|
|
|
|
- **tasks_id**: 任务id 用于取消生成任务和获取生成结果
|
|
|
|
|
|
- **image_url**: 被生成图片的S3或minio url地址
|
|
|
|
|
|
- **pose_id**: 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
示例参数:
|
|
|
|
|
|
{
|
|
|
|
|
|
"tasks_id": "123-89",
|
|
|
|
|
|
"image_url": "aida-results/result_0000b606-1902-11ef-9424-0242ac180002.png",
|
2025-03-20 10:41:36 +08:00
|
|
|
|
"pose_id": "1"
|
2025-03-17 11:14:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
"""
|
|
|
|
|
|
try:
|
|
|
|
|
|
logger.info(f"pose_transform request item is : @@@@@@:{json.dumps(request_item.dict())}")
|
|
|
|
|
|
service = PoseTransformService(request_item)
|
|
|
|
|
|
background_tasks.add_task(service.get_result)
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"pose_transform Run Exception @@@@@@:{e}")
|
|
|
|
|
|
raise HTTPException(status_code=404, detail=str(e))
|
|
|
|
|
|
return ResponseModel()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/pose_transform_cancel/{tasks_id}")
|
|
|
|
|
|
def pose_transform_cancel(tasks_id: str):
|
|
|
|
|
|
try:
|
|
|
|
|
|
logger.info(f"pose_transform_cancel request item is : @@@@@@:{tasks_id}")
|
|
|
|
|
|
data = pose_transform_infer_cancel(tasks_id)
|
|
|
|
|
|
logger.info(f"pose_transform_cancel response @@@@@@:{data}")
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"pose_transform_cancel Run Exception @@@@@@:{e}")
|
|
|
|
|
|
raise HTTPException(status_code=404, detail=str(e))
|
|
|
|
|
|
return ResponseModel(data=data['data'])
|
2025-11-03 11:52:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/comfyui_pose_transform")
|
|
|
|
|
|
def comfyui_pose_transform(request_item: PoseTransformModel, background_tasks: BackgroundTasks):
|
|
|
|
|
|
"""
|
|
|
|
|
|
创建一个具有以下参数的请求体:
|
|
|
|
|
|
- **tasks_id**: 任务id 用于取消生成任务和获取生成结果
|
|
|
|
|
|
- **image_url**: 被生成图片的S3或minio url地址
|
|
|
|
|
|
- **pose_id**: 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
示例参数:
|
|
|
|
|
|
{
|
|
|
|
|
|
"tasks_id": "123-89",
|
|
|
|
|
|
"image_url": "aida-results/result_0000b606-1902-11ef-9424-0242ac180002.png",
|
|
|
|
|
|
"pose_id": "1"
|
|
|
|
|
|
}
|
|
|
|
|
|
"""
|
|
|
|
|
|
try:
|
|
|
|
|
|
logger.info(f"pose_transform request item is : @@@@@@:{json.dumps(request_item.dict())}")
|
|
|
|
|
|
service = ComfyUIServerI2V(request_item)
|
|
|
|
|
|
background_tasks.add_task(service.get_result)
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"pose_transform Run Exception @@@@@@:{e}")
|
|
|
|
|
|
raise HTTPException(status_code=404, detail=str(e))
|
|
|
|
|
|
return ResponseModel()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/comfyui_pose_transform_cancel/{tasks_id}")
|
|
|
|
|
|
def pose_transform_cancel(tasks_id: str):
|
|
|
|
|
|
try:
|
|
|
|
|
|
logger.info(f"pose_transform_cancel request item is : @@@@@@:{tasks_id}")
|
|
|
|
|
|
response = requests.post(
|
|
|
|
|
|
f"http://{COMFYUI_SERVER_ADDRESS}/interrupt",
|
|
|
|
|
|
json={"prompt_id": tasks_id}
|
|
|
|
|
|
)
|
|
|
|
|
|
data = {}
|
|
|
|
|
|
if response.status_code == 200:
|
|
|
|
|
|
data['data']['message'] = "任务已成功中断"
|
|
|
|
|
|
else:
|
|
|
|
|
|
data['data']['message'] = f"中断失败:{response.text}"
|
|
|
|
|
|
logger.info(f"pose_transform_cancel response @@@@@@:{data}")
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.warning(f"pose_transform_cancel Run Exception @@@@@@:{e}")
|
|
|
|
|
|
raise HTTPException(status_code=404, detail=str(e))
|
|
|
|
|
|
return ResponseModel(data=data['data'])
|