""" Invoice Error Finder frontend views. """ import logging from typing import Any, Dict from fastapi import APIRouter, Depends, Request from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates from app.core.auth_dependencies import require_permission from app.core.database import execute_query logger = logging.getLogger(__name__) router = APIRouter() templates = Jinja2Templates(directory="app") def _fetch_assignment_users() -> list: return execute_query( """ SELECT user_id, COALESCE(full_name, username) AS display_name FROM users ORDER BY display_name """, (), ) or [] def _fetch_customers() -> list: return execute_query( """ SELECT id, name FROM customers WHERE deleted_at IS NULL ORDER BY name """, (), ) or [] @router.get("/invoice-error-finder", response_class=HTMLResponse) async def dashboard( request: Request, current_user: dict = Depends(require_permission("invoice_error_finder.view")), ): return templates.TemplateResponse( "modules/invoice_error_finder/templates/dashboard.html", { "request": request, }, ) @router.get("/invoice-error-finder/issues", response_class=HTMLResponse) async def issues_list( request: Request, current_user: dict = Depends(require_permission("invoice_error_finder.view")), ): return templates.TemplateResponse( "modules/invoice_error_finder/templates/issues.html", { "request": request, "users": _fetch_assignment_users(), "customers": _fetch_customers(), }, )