All checks were successful
git commit AiDA python develop 分支构建部署 / scheduled_deploy (push) Has been skipped
105 lines
3.5 KiB
Python
105 lines
3.5 KiB
Python
import json
|
||
import logging
|
||
|
||
from fastapi import APIRouter, HTTPException
|
||
|
||
from app.schemas.response_template import ResponseModel
|
||
from app.schemas.sketch_to_garment_schemas import SketchToGarmentModel
|
||
from app.service.sketch2garment.server import submit_sketch_to_garment_task
|
||
|
||
logger = logging.getLogger()
|
||
router = APIRouter()
|
||
|
||
|
||
@router.post("/sketch_to_garment")
|
||
def sketch_to_garment_api(request_item: SketchToGarmentModel):
|
||
"""
|
||
### 接口说明:
|
||
将图片转换为3D模型(异步处理)。接口接收请求后立即返回任务ID,后台通过 Celery 处理,处理完成后结果会通过 RabbitMQ 发送。
|
||
|
||
### 参数说明:
|
||
- **input_image_path**: 输入图片路径
|
||
- **bucket_name**: bucket name
|
||
- **user_id**: 用户id
|
||
- **callback_url**: 回调url
|
||
- **task_id**: 任务id
|
||
- **model**: 转换模式 文本和图片 ,默认只有图片
|
||
|
||
### 请求体示例:
|
||
**单张图片模式:**
|
||
```json
|
||
{
|
||
"input_image_path": "test/53d38bd5-f77b-4034-ada2-45f1e2ebe00c.png",
|
||
"bucket_name": "test",
|
||
"user_id": "string-456",
|
||
"callback_url": "http://18.167.251.121:10015/api/image/webhook/img-to-3d",
|
||
"task_id": "string12",
|
||
"model": "picture"
|
||
}
|
||
```
|
||
|
||
|
||
### 输出示例:
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "OK!",
|
||
"data": {
|
||
"state": "success",
|
||
"task_id": "string12",
|
||
"message": "任务已成功提交,正在后台处理..."
|
||
}
|
||
}
|
||
```
|
||
### 错误输出
|
||
参考文档: https://platform.tripo3d.ai/docs/error-handling
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"message": "You don’t have enough credit to create this task",
|
||
"data": {
|
||
"status": "fail",
|
||
"task_id": "123",
|
||
"message": "You don’t have enough credit to create this task",
|
||
"error": str(e)
|
||
}
|
||
}
|
||
```
|
||
|
||
回调请求参数例子:
|
||
```json
|
||
{
|
||
"task_id": "string12",
|
||
"status": "success",
|
||
"result": {
|
||
"pattern": "test/string-456/pattern_making/now_string-456_pattern.png",
|
||
"texture": "test/string-456/pattern_making/now_string-456_texture.png",
|
||
"glb": "test/string-456/pattern_making/now_string-456_sim.glb",
|
||
"texture_fabric": "test/string-456/pattern_making/now_string-456_texture_fabric.png"
|
||
}
|
||
}
|
||
```
|
||
"""
|
||
try:
|
||
logger.info(f"sketch_to_garment request item is : @@@@@@:{json.dumps(request_item.model_dump(), indent=4)}")
|
||
result = submit_sketch_to_garment_task(
|
||
task_id=request_item.task_id,
|
||
callback_url=request_item.callback_url,
|
||
bucket_name=request_item.bucket_name,
|
||
input_image_path=request_item.input_image_path,
|
||
user_id=request_item.user_id,
|
||
model=request_item.model
|
||
)
|
||
result = {
|
||
"state": "success",
|
||
"task_id": request_item.task_id,
|
||
"message": "任务已成功提交,正在后台处理...",
|
||
}
|
||
state_code = 200
|
||
return ResponseModel(data=result, code=state_code)
|
||
|
||
except Exception as e:
|
||
logger.warning(f"super_resolution Run Exception @@@@@@:{e}")
|
||
raise HTTPException(status_code=404, detail=str(e))
|