import json import logging from fastapi import APIRouter, HTTPException from app.schemas.design import DesignModel, DesignProgressModel, ModelProgressModel from app.schemas.response_template import ResponseModel from app.service.design.model_process_service import model_transpose from app.service.design.service import generate from app.service.design.utils.redis_utils import Redis router = APIRouter() logger = logging.getLogger() @router.post("/design") def design(request_data: DesignModel): """ 创建一个具有以下参数的请求体: 示例参数: { "objects": [ { "basic": { "body_point_test": { "waistband_right": [ 336, 264 ], "hand_point_right": [ 350, 303 ], "waistband_left": [ 245, 274 ], "hand_point_left": [ 219, 315 ], "shoulder_left": [ 227, 155 ], "shoulder_right": [ 338, 149 ] }, "layer_order": false, "scale_bag": 0.7, "scale_earrings": 0.16, "self_template": true, "single_overall": "overall", "switch_category": "" }, "items": [ { "color": "229 214 200", "icon": "none", "image_id": 110205, "offset": [ 1, 1 ], "path": "aida-sys-image/images/female/trousers/0916000217.jpg", "print": { "IfSingle": false, "print_path_list": [] }, "resize_scale": [ 1.0, 1.0 ], "type": "Trousers" }, { "businessId": 493825, "color": "209 125 29", "elementId": 493825, "icon": "none", "image_id": 107101, "offset": [ 1, 1 ], "path": "aida-users/31/sketchboard/female/Blouse/de8f5656-d7ae-4642-bc90-f7f9d85da09b.jpg", "print": { "IfSingle": false, "print_path_list": [] }, "resize_scale": [ 1.0, 1.0 ], "type": "Blouse" }, { "body_path": "aida-users/31/models/female/845046c7-4f62-4f54-a4a9-c26d49c6969335b5b3a9-d335-4871-a46c-3cc3caf07da259629dfd1f1f555a2e2a9def7e719366.png", "image_id": 82966, "offset": [ 1, 1 ], "resize_scale": [ 1.0, 1.0 ], "type": "Body" } ] } ], "process_id": "6878547032381675" } """ try: logger.info(f"design request item is : @@@@@@:{request_data.dict()}") data = generate(request_data=request_data) logger.info(f"design response @@@@@@:{json.dumps(data, indent=4)}") except Exception as e: logger.warning(f"design Run Exception @@@@@@:{e}") raise HTTPException(status_code=404, detail=str(e)) return ResponseModel(data=data) @router.post('/get_progress') def get_progress(request_data: DesignProgressModel): """ 获取design 进度 创建一个具有以下参数的请求体: - **process_id**: 进度id 示例参数: { "process_id": "6878547032381675" } """ try: logger.info(f"get_progress request item is : @@@@@@:{request_data.dict()}") process_id = request_data.process_id r = Redis() data = r.read(key=process_id) if data is None: raise ValueError(f"No progress ID: {process_id}") logging.info(f"get_progress process_id @@@@@@ : {process_id} , progress : {data}") except Exception as e: logger.warning(f"get_progress Run Exception @@@@@@:{e}") raise HTTPException(status_code=404, detail=str(e)) return ResponseModel(data=data) @router.post('/model_process') def model_process(request_data: ModelProgressModel): """ 获取模特图片预处理 创建一个具有以下参数的请求体: - **model_path**: 模特图片的minio或s3 url地址 示例参数: { "model_path": "aida-users/10/models/female/9c788f5b-b8c7-424c-b149-025aeb0bda51model.jpg" } """ try: logger.info(f"model_process request item is : @@@@@@:{request_data.dict()}") data = model_transpose(image_path=request_data.model_path) logger.info(f"model_process response @@@@@@:{json.dumps(data, indent=4)}") except Exception as e: logger.warning(f"model_process Run Exception @@@@@@:{e}") raise HTTPException(status_code=404, detail=str(e)) return ResponseModel(data=data)