199 lines
7.8 KiB
Python
199 lines
7.8 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": [
|
|
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)
|