"""只读先进先出建议;不强行阻断会议要求的多批次混用。""" from typing import Annotated from fastapi import Query, Request, Response from sqlalchemy.ext.asyncio import AsyncSession from common.aspect.db_seesion import DBSessionDependency from common.aspect.interface_auth import UserInterfaceAuthDependency from common.aspect.pre_auth import CurrentUserDependency, PreAuthDependency from common.router import APIRouterPro from common.vo import DataResponseModel from module_admin.entity.vo.user_vo import CurrentUserModel from module_business.dependency.test_batch_dependency import TestBatchScopeDependency from module_business.domain.test_batch_scope import TestBatchScope from module_business.entity.vo.usage_fifo_vo import UsageFifoQueueModel, UsageFifoRecommendationModel from module_business.service.usage_fifo_service import UsageFifoService from utils.response_util import ResponseUtil usage_fifo_controller = APIRouterPro( prefix='/business/usage-fifo', tags=['业务管理-客户现场使用'], dependencies=[PreAuthDependency()], ) @usage_fifo_controller.get( '/recommendation', response_model=DataResponseModel[UsageFifoRecommendationModel], dependencies=[UserInterfaceAuthDependency('business:usage:query')], ) async def get_usage_fifo_recommendation( request: Request, qr_token: Annotated[str, Query(alias='qrToken', min_length=1, max_length=128, pattern=r'\S')], query_db: Annotated[AsyncSession, DBSessionDependency()], current_user: Annotated[CurrentUserModel, CurrentUserDependency()], test_scope: Annotated[TestBatchScope, TestBatchScopeDependency()], tunnel_id: Annotated[int | None, Query(alias='tunnelId', gt=0)] = None, ) -> Response: result = await UsageFifoService.recommendation( query_db, qr_token, current_user, test_scope, tunnel_id=tunnel_id, ) return ResponseUtil.success(data=result) @usage_fifo_controller.get( '/queue', response_model=DataResponseModel[UsageFifoQueueModel], dependencies=[UserInterfaceAuthDependency('business:usage:query')], ) async def get_usage_fifo_queue( request: Request, site_id: Annotated[int, Query(alias='siteId', gt=0, description='客户现场ID')], query_db: Annotated[AsyncSession, DBSessionDependency()], current_user: Annotated[CurrentUserModel, CurrentUserDependency()], test_scope: Annotated[TestBatchScope, TestBatchScopeDependency()], ) -> Response: result = await UsageFifoService.queue(query_db, site_id, current_user, test_scope) return ResponseUtil.success(data=result)