MVP 2 — AI Insights — Auditoria de Precisão¶
Atualizado: 2026-05-18 Status: decisão aprovada para backlog executável Owner operacional: api; apoio platform, web
Decisão¶
AI Insights passa a ter auditoria de precisão baseada em snapshot financeiro determinístico, evidence manifest e versão de template. O modelo de linguagem não calcula fatos, riscos, saúde financeira, metas, comparativos nem custos. A API calcula esses elementos, valida evidências e usa o GPT apenas para explicar o resultado em linguagem clara.
O insight continua sendo account-wide, mas cada item retornado declara sua
dimensão (transactions, budgets, goals, credit_cards, cashflow) para
que Dashboard, Transações, Orçamentos, Metas, Cartões e /insights renderizem
somente o contexto relevante de cada superfície.
Princípios¶
- A API é a fonte factual: totais, comparações, riscos, metas, compromissos, custos e qualidade dos dados devem ser calculados antes do prompt.
- O GPT explica, resume e prioriza; ele não soma linhas, não infere saúde financeira e não decide risco sem campos determinísticos no snapshot.
- Cada afirmação renderizável deve apontar para evidências existentes no snapshot ou no manifest persistido.
- Preview e dossiê de auditoria não chamam GPT para manter custo baixo.
- Prompt bruto não deve ser persistido como artefato de produto em produção. Auditoria usa snapshot sanitizado, resposta estruturada, manifest e versão de template.
- Snapshots auditáveis têm retenção curta, entram no registry LGPD e devem ser removidos na deleção total da conta.
Modelo de run¶
Criar AIInsightRun como store proprio de execucao, separado de AIInsight
(store exibivel) e LLMAuditLog (auditoria de custo/tokens).
Campos minimos:
| Campo | Uso |
|---|---|
id |
identificador do run/preview |
user_id |
dono do dado, registrado no registry LGPD |
ai_insight_id |
nullable no preview; preenchido quando gerar insight |
status |
previewed, generated, cached, rejected, blocked, failed, purged |
period_type, period_start, period_end, period_label |
recorte auditado |
snapshot_schema_version |
ex.: financial_insight_snapshot.v2 |
snapshot_hash |
hash do snapshot sanitizado usado na decisao |
previous_snapshot_hash |
hash estruturado anterior, quando existir |
prompt_template_version |
versao do template usado na geracao |
model |
modelo configurado quando houver chamada GPT |
tokens_in, tokens_out, tokens_total |
custo tecnico do LLM |
cost_usd |
custo estimado ou real da chamada |
data_quality |
flags de ausencia/baixa confiabilidade de dados |
rejection_reasons |
validacoes que impediram persistencia exibivel |
truncation_flags |
campos truncados antes de prompt/resposta |
created_at, expires_at, purged_at |
governanca de retencao |
O snapshot persistido deve ser sanitizado. Pode guardar valores financeiros,
datas, categorias, status e descricoes truncadas, mas nao deve guardar nome,
email, telefone, documento, external_id, ids internos reais desnecessarios nem
observacoes livres longas.
Evidence manifest¶
Cada run deve persistir um manifest de evidencias derivado do snapshot:
{
"snapshot_hash": "sha256:...",
"template_version": "financial-insight.v2.2026-05-18",
"evidence": {
"dimensions.transactions.current_period.paid.expense_total": {
"label": "Despesas pagas no periodo",
"value": "21125.00",
"currency": "BRL"
},
"dimensions.goals.car.required_monthly_pace": {
"label": "Ritmo mensal necessario da meta",
"value": "850.00",
"currency": "BRL"
}
},
"data_quality": {
"has_transactions": true,
"missing_comparison_periods": []
}
}
O validador deve rejeitar ou marcar como rejected respostas que citem fatos sem
evidencia compatível. Exemplo: um item de goals nao pode usar apenas
dimensions.transactions.current_period.paid.expense_total para afirmar que uma
meta esta em risco.
Preview sem GPT¶
Auditoria inicial sera backend-only por endpoint admin e CLI.
Endpoint alvo:
POST /admin/ai/insights/preview
Content-Type: application/json
{
"user_id": "uuid",
"period_type": "monthly",
"anchor_date": "2026-05-18"
}
Resposta esperada:
{
"run_id": "uuid",
"snapshot_hash": "sha256:...",
"snapshot": {},
"comparisons": {},
"risks": [],
"evidence_manifest": {},
"data_quality": {},
"llm_called": false,
"cost_usd": "0.00000000"
}
Regras:
- preview nao consome quota diaria;
- preview nao chama LLM;
- preview cria
AIInsightRuncomstatus=previewed; - usuario comum nao acessa endpoint admin;
- preview pode ser exportado em dossie JSON/HTML local via CLI.
Geracao com preview_run_id¶
Endpoint alvo:
POST /ai/insights/generate
Content-Type: application/json
{
"period_type": "monthly",
"anchor_date": "2026-05-18",
"preview_run_id": "uuid"
}
Se preview_run_id for informado, a geracao deve usar o mesmo
snapshot_hash. Se o snapshot atual divergir, a API deve bloquear ou recriar o
preview explicitamente para evitar auditar um conjunto de fatos e gerar outro.
Cache/idempotencia deve preferir snapshot_hash: se o snapshot e o template nao
mudaram, retornar insight existente sem nova chamada GPT.
Dossie de auditoria¶
CLI alvo:
flask ai export-insight-dossier \
--user-id <uuid> \
--period-type monthly \
--anchor-date 2026-05-18 \
--format json
O dossie deve conter:
- metadados do run;
- snapshot sanitizado;
- evidence manifest;
- riscos/saude/metas deterministicas;
- resposta estruturada do modelo quando houver;
- validacoes, rejeicoes e truncamentos;
- custo/tokens vinculados a
LLMAuditLog; - marcadores de retencao e expurgo.
HTML local e somente ferramenta operacional; nao e produto final. O Admin Front End fica como fase 2, bloqueado ate API/CLI provarem que a auditoria manual virou rotina.
Saude financeira, riscos e metas¶
Calcular deterministicamente na API:
- risco de orcamento por categoria e geral;
- risco de cartao por fatura, vencimento, fechamento e comprometimento;
- vencidos e pendentes separados de gastos pagos;
- saldo e compromissos futuros;
- metas com progresso total, prazo, valor restante, ritmo necessario e ritmo observado.
Regra de produto: recorte semanal ou mensal isolado nao pode afirmar que uma meta
esta boa ou ruim sem considerar progresso total, prazo e ritmo necessario. Quando
os dados nao sustentarem conclusao, data_quality deve sinalizar insuficiencia.
Governanca de custo¶
- Preview e dossie nao chamam GPT.
- Geracao respeita orcamento diario/mensal em USD configuravel.
- Circuit breaker bloqueia chamada GPT ao atingir orcamento, mas ainda permite preview/dossie.
LLMAuditLogou agregacao derivada e a fonte de verdade de custo.- Logs e metricas devem mostrar custo por run, tokens, cache hit, bloqueio por budget e custo acumulado por janela.
LGPD e retencao¶
AIInsightRun e snapshots auditaveis entram no registry LGPD como dados
financeiros derivados e artefatos de auditoria de IA.
Politica padrao:
- retencao de snapshots auditaveis por 30 dias;
- exportabilidade em pacote de dados do titular enquanto existirem;
- delecao total da conta remove runs, snapshots, manifests e dossies vinculados;
LLMAuditLogpode manter agregados tecnicos necessarios, desde que sem PII, sem prompt bruto e sem snapshot financeiro reidentificavel.
Observabilidade¶
Metricas minimas:
ai_insight_runs_total{status,period_type};ai_insight_cost_usd_total{model,period_type};ai_insight_tokens_total{model,period_type,direction};ai_insight_rejections_total{reason};ai_insight_truncations_total{field};ai_insight_data_quality_total{flag};ai_insight_purges_total{status};ai_insight_budget_block_total{window}.
Alertas minimos:
- custo diario/mensal acima do orcamento;
- rejeicao alta de respostas;
- truncamento frequente;
- falha de expurgo;
- degradacao de qualidade de dados.
Logs estruturados devem incluir run_id, snapshot_hash, periodo, status,
tokens e custo, sem PII e sem prompt bruto.
Backlog executavel¶
| Repo | Issue | Escopo |
|---|---|---|
| auraxis-platform | #695 | documentacao e backlog de auditoria |
| auraxis-api | #1310 | AIInsightRun e dossie auditavel com retencao LGPD |
| auraxis-api | #1311 | preview e export de dossie backend-only |
| auraxis-api | #1312 | saude financeira, riscos e metas deterministicas |
| auraxis-api | #1313 | governanca de custo e circuit breaker |
| auraxis-api | #1314 | observabilidade de runs, evidencias, rejeicoes e expurgo |
| auraxis-web | #884 | Admin Front End fase 2, bloqueado |