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": [ 203, 249 ], "hand_point_right": [ 229, 343 ], "waistband_left": [ 119, 248 ], "hand_point_left": [ 97, 343 ], "shoulder_left": [ 108, 107 ], "shoulder_right": [ 212, 107 ] }, "layer_order": true, "scale_bag": 0.7, "scale_earrings": 0.16, "self_template": true, "single_overall": "overall", "switch_category": "" }, "items": [ { "businessId": 255303, "color": "139 148 156", "image_id": 95159, "offset": [ 0, 0 ], "path": "aida-users/89/sketch/c89d75f3-581f-4edd-9f8e-b08e84a2cbe7-3-89.png", "print": { "single": { "location": [ [ 200.0, 200.0 ] ], "print_angle_list": [ 0.0 ], "print_path_list": [ "aida-users/89/slogan_image/ce0b2423-9e5a-466f-9611-c254940a7819-1-89.png" ], "print_scale_list": [ 1.0 ] }, "overall": { "location": [ [ 512.0, 512.0 ] ], "print_angle_list": [ 0.0 ], "print_path_list": [ "aida-users/89/print/468643b4-bc2d-41b2-9a16-79766606a2db-3-89.png" ], "print_scale_list": [ 1.0 ] }, "element": { "element_angle_list": [ 0.0 ], "element_path_list": [ "aida-users/88/designelements/Embroidery/a4d9605a-675e-4606-93e0-77ca6baaf55f.png" ], "element_scale_list": [ 0.2731036750637755 ], "location": [ [ 228.63694825464364, 406.4843844199667 ] ] } }, "priority": 10, "resize_scale": [ 1.0, 1.0 ], "type": "Dress" }, { "body_path": "aida-sys-image/models/female/2e4815b9-1191-419d-94ed-5771239ca4a5.png", "image_id": 67277, "type": "Body" } ] } ], "process_id": "89" } """ logger.info(f"design request item is : @@@@@@:{json.dumps(request_data.dict())}") data = generate(request_data=request_data) logger.info(f"design response @@@@@@:{json.dumps(data)}") # try: # logger.info(f"design request item is : @@@@@@:{json.dumps(request_data.dict())}") # data = generate(request_data=request_data) # logger.info(f"design response @@@@@@:{json.dumps(data)}") # 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 : @@@@@@:{json.dumps(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 : {json.dumps(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 : @@@@@@:{json.dumps(request_data.dict())}") data = model_transpose(image_path=request_data.model_path) logger.info(f"model_process response @@@@@@:{json.dumps(data)}") except Exception as e: logger.warning(f"model_process Run Exception @@@@@@:{e}") raise HTTPException(status_code=404, detail=str(e)) return ResponseModel(data=data)