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": [ 200, 241 ], "hand_point_right": [ 223, 297 ], "waistband_left": [ 112, 241 ], "hand_point_left": [ 92, 305 ], "shoulder_left": [ 99, 116 ], "shoulder_right": [ 215, 116 ] }, "layer_order": true, "scale_bag": 0.7, "scale_earrings": 0.16, "self_template": true, "single_overall": "overall", "switch_category": "" }, "items": [ { "businessId": 270372, "color": "30 28 28", "image_id": 69780, "offset": [ 0, 0 ], "path": "aida-sys-image/images/female/trousers/0825000630.jpg", "seg_mask_url": "test/result.png", "print": { "element": { "element_angle_list": [], "element_path_list": [], "element_scale_list": [], "location": [] }, "overall": { "location": [], "print_angle_list": [], "print_path_list": [], "print_scale_list": [] }, "single": { "location": [], "print_angle_list": [], "print_path_list": [], "print_scale_list": [] } }, "priority": 10, "resize_scale": [ 1.0, 1.0 ], "type": "Trousers" }, { "businessId": 270373, "color": "30 28 28", "image_id": 98243, "offset": [ 0, 0 ], "path": "aida-sys-image/images/female/blouse/0902003811.jpg", "seg_mask_url": "test/result.png", "print": { "element": { "element_angle_list": [], "element_path_list": [], "element_scale_list": [], "location": [] }, "overall": { "location": [], "print_angle_list": [], "print_path_list": [], "print_scale_list": [] }, "single": { "location": [], "print_angle_list": [], "print_path_list": [], "print_scale_list": [] } }, "priority": 11, "resize_scale": [ 1.0, 1.0 ], "type": "Blouse" }, { "businessId": 270374, "color": "172 68 68", "image_id": 98244, "offset": [ 0, 0 ], "path": "aida-sys-image/images/female/outwear/0825000410.jpg", "seg_mask_url": "test/result.png", "print": { "element": { "element_angle_list": [], "element_path_list": [], "element_scale_list": [], "location": [] }, "overall": { "location": [], "print_angle_list": [], "print_path_list": [], "print_scale_list": [] }, "single": { "location": [], "print_angle_list": [], "print_path_list": [], "print_scale_list": [] } }, "priority": 12, "resize_scale": [ 1.0, 1.0 ], "type": "Outwear" }, { "body_path": "aida-sys-image/models/female/5bdfe7ca-64eb-44e4-b03d-8e517520c795.png", "image_id": 96090, "type": "Body" } ] } ], "process_id": "83" } """ 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)