44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
"""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)
|