175 lines
6.4 KiB
Python
175 lines
6.4 KiB
Python
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)
|