analytical_force / src /agent /report_generator.py
ViniciusKhan's picture
Analytical-Force: API + Docker
8445ed4
Raw
History Blame Contribute Delete
1.66 kB
"""Geração do relatório diário em Markdown.
Orquestra a camada de modelos: monta o prompt, pede a interpretação ao
provider configurado (com fallback para template) e renderiza o Markdown
final a partir do JSON de métricas.
Garantia: os números do relatório vêm SEMPRE do template (Python). A IA
apenas substitui a narrativa do Resumo Executivo, quando disponível.
"""
from __future__ import annotations
from typing import Any
from ..config.settings import ModelSettings
from ..models.model_router import ModelRouter
from ..models.template_client import renderizar_relatorio
from ..utils.logger import get_logger
from .prompt_builder import construir_prompt, obter_system_prompt
logger = get_logger("agent.report_generator")
def gerar_relatorio(
payload: dict[str, Any], model_settings: ModelSettings
) -> tuple[str, str]:
"""Gera o relatório Markdown do dia.
Args:
payload: JSON estruturado com métricas, alertas e qualidade de dados.
model_settings: Configurações do provider de modelo.
Returns:
Tupla ``(markdown, provider_efetivo)``. ``provider_efetivo`` indica se
a interpretação veio de ``ollama``, ``transformers`` ou ``template``.
"""
narrativa: str | None = None
provider = "template"
if model_settings.usa_ia:
prompt = construir_prompt(payload)
router = ModelRouter(model_settings)
narrativa, provider = router.interpretar(prompt, system=obter_system_prompt())
markdown = renderizar_relatorio(payload, narrativa_ia=narrativa)
logger.info("Relatório gerado (provider efetivo=%s).", provider)
return markdown, provider