from __future__ import annotations

from fastapi import HTTPException

from app.core.postgres import PostgresClient
from app.models.schemas import DossierReviewSessionRecord
from app.modules.core.application.workflow_persistence_service import WorkflowPersistenceService


def _build_postgres_client() -> PostgresClient:
    """Lấy PostgresClient, ưu tiên alias ở routes để test patch đúng chỗ."""
    from app.api import routes as legacy_routes

    return legacy_routes.PostgresClient()


def _build_workflow_persistence_service() -> WorkflowPersistenceService:
    """Lấy service, ưu tiên alias ở routes để test patch đúng chỗ."""
    from app.api import routes as legacy_routes

    return legacy_routes.WorkflowPersistenceService()


def _get_review_or_404(
    postgres_client: PostgresClient, review_id: str
) -> DossierReviewSessionRecord:
    """Return one refreshed review session or raise 404."""
    sessions = postgres_client.fetch_dossier_review_sessions(review_id=review_id)
    if not sessions:
        raise HTTPException(
            status_code=404,
            detail=f"Không tìm thấy review session với review_id={review_id}.",
        )
    return DossierReviewSessionRecord(**sessions[0])
