"""Review routes.""" from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from app.api.schemas.revision import ConfirmRevisionRequest, ConfirmRevisionResponse from app.api.schemas.review import PendingReviewResponse, SubmitReviewRequest, SubmitReviewResponse from app.application.services.review_service import ReviewService from app.infra.db.session import get_db_session router = APIRouter(prefix="/reviews", tags=["reviews"]) review_service = ReviewService() @router.get("/pending", response_model=list[PendingReviewResponse]) async def list_pending_reviews( session: AsyncSession = Depends(get_db_session), ) -> list[PendingReviewResponse]: """List review tasks waiting for manual input.""" return await review_service.list_pending_reviews(session) @router.post("/{order_id}/submit", response_model=SubmitReviewResponse) async def submit_review( order_id: int, payload: SubmitReviewRequest, session: AsyncSession = Depends(get_db_session), ) -> SubmitReviewResponse: """Submit a review decision for a workflow.""" return await review_service.submit_review(session, order_id, payload) @router.post("/{order_id}/confirm-revision", response_model=ConfirmRevisionResponse) async def confirm_revision( order_id: int, payload: ConfirmRevisionRequest, session: AsyncSession = Depends(get_db_session), ) -> ConfirmRevisionResponse: """Confirm a manual revision and resume the workflow.""" return await review_service.confirm_revision_continue(session, order_id, payload)