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))
|