from uuid import UUID from fastapi import APIRouter, File, Form, Depends, Query import db.postgres as pg 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 utils import MyUtils visionRouter = APIRouter() # 测试接口,已经可以实现 @visionRouter.post("/cocoonTicket") def cocoonTicket(data: ImageRequest, user_id: UUID = Depends(get_user_id_from_token)): if not user_id: return {"error": "userId is required"} try: json = get_ticket_response(data.image) return BaseResponse(data=json) except: return BaseResponse(status=False, message="unknown error", data=None) @visionRouter.post("/createTicketImageTask") async def createTicketImageTask( 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() json_data = await MyUtils.async_task( process_ticket_image, 1, True, contents, file.filename, projectName, user_id ) return BaseResponse(data=json_data) except Exception as e: print(str(e)) 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(...), 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_ticket_image, 2, True, contents, file.filename, projectName, user_id ) return BaseResponse(data=None) except Exception as e: print(str(e)) 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), ): 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) @visionRouter.post("/createLicenseImageTask") async def createLicenseImageTask( 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_license_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("/getLicenseImageList") def cocoonLicense( user_id: UUID = Depends(get_user_id_from_token), 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_license_image_list(user_id, page=page, page_size=page_size) return BaseResponse( data={ "total": total, "items": items, } )