后端新增《蚕茧识别V2》模块

This commit is contained in:
BBIT-Kai
2025-11-10 18:08:50 +08:00
parent 9527cc2f1c
commit 625d185f69
15 changed files with 559 additions and 809 deletions
+51 -23
View File
@@ -7,7 +7,11 @@ from config.security import get_user_id_from_token
from llm.ticketLLM import *
from models.BaseResponse import BaseResponse
from models.ImageRequest import ImageRequest
from service.vision import process_ticket_image, process_license_image
from service.vision import (
process_ticket_image,
process_license_image,
process_silkworm_cocoon_image,
)
from utils import MyUtils
visionRouter = APIRouter()
@@ -25,6 +29,8 @@ def cocoonTicket(data: ImageRequest, user_id: UUID = Depends(get_user_id_from_to
return BaseResponse(status=False, message="unknown error", data=None)
# ————————————————————————————————仪评指标联识别任务————————————————————————————————————————————————
# 一代
@visionRouter.post("/createTicketImageTask")
async def createTicketImageTask(
file: UploadFile = File(...),
@@ -44,13 +50,7 @@ async def createTicketImageTask(
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
@visionRouter.get("/getTicketImageList")
def cocoonTicket(user_id: UUID = Depends(get_user_id_from_token)):
if not user_id:
return {"error": "userId is required"}
return BaseResponse(data=pg.get_ticket_image_list(user_id))
# 二代
@visionRouter.post("/createTicketImageTaskV2")
async def createTicketImageTask(
file: UploadFile = File(...),
@@ -70,24 +70,15 @@ async def createTicketImageTask(
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
@visionRouter.post("/createTicketImageTaskV2")
async def createTicketImageTask(
file: UploadFile = File(...),
projectName: str = Form(...),
user_id: UUID = Depends(get_user_id_from_token),
):
# 获取仪评指标联识别任务列表
@visionRouter.get("/getTicketImageList")
def cocoonTicket(user_id: UUID = Depends(get_user_id_from_token)):
if not user_id:
return {"error": "userId is required"}
try:
contents = await file.read()
json_data = await MyUtils.async_task(
process_ticket_image, 2, True, contents, file.filename, projectName, user_id
)
return BaseResponse(data=json_data)
except Exception as e:
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
return BaseResponse(data=pg.get_ticket_image_list(user_id))
# ————————————————————————————————证件照片识别任务————————————————————————————————————————————————
@visionRouter.post("/createLicenseImageTask")
async def createLicenseImageTask(
file: UploadFile = File(...),
@@ -107,7 +98,7 @@ async def createLicenseImageTask(
@visionRouter.get("/getLicenseImageList")
def cocoonLicense(
def getLicenseImageList(
user_id: UUID = Depends(get_user_id_from_token),
page: int = Query(1, ge=1),
page_size: int = Query(10, ge=1, le=100),
@@ -121,3 +112,40 @@ def cocoonLicense(
"items": items,
}
)
# ————————————————————————————————蚕茧识别任务————————————————————————————————————————————————
@visionRouter.post("/createSilkwormCocoonAnalysisTask")
async def createSilkwormCocoonAnalysisTask(
file: UploadFile = File(...),
projectName: str = Form(...),
user_id: UUID = Depends(get_user_id_from_token),
):
if not user_id:
return {"error": "userId is required"}
try:
contents = await file.read()
await MyUtils.async_task(
process_silkworm_cocoon_image, contents, file.filename, projectName, user_id
)
return BaseResponse(data=None)
except Exception as e:
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
@visionRouter.get("/getSilkwormCocoonAnalysisTasks")
def getSilkwormCocoonAnalysisTasks(
user_id: UUID = Depends(get_user_id_from_token),
name: str = "",
page: int = Query(1, ge=1),
page_size: int = Query(10, ge=1, le=100),
):
if not user_id:
return {"error": "userId is required"}
total, items = pg.get_sca_image_list(user_id, name, page=page, page_size=page_size)
return BaseResponse(
data={
"total": total,
"items": items,
}
)