# Changelog do Projeto - Módulo de Relatórios

| Data | História | Alteração realizada | Responsável | Evidências |
|---|---|---|---|---|
| 2026-08-20 | FIN-CASH-ACCOUNT-001 | Início da segregação operacional entre `caixa físico` e `conta bancária`, com regra central de compatibilidade por forma de liquidação, defaults operacionais para contas `CAIXA`, abertura de sessão do `PDV` restrita a `CAIXA`, checkout do `PDV` validando conta por pagamento, endurecimento de pagamentos manuais, recebimentos e baixa de contas a pagar, além de ajuste inicial da UI do `PDV` e do modal de pagamento manual | Assistente | Alterações em `apps/admin/src/lib/liquidation-accounts.ts`, `apps/admin/src/app/api/bank-accounts/route.ts`, `apps/admin/src/app/api/pdv/cash-session/route.ts`, `apps/admin/src/app/api/pdv/checkout/route.ts`, `apps/admin/src/app/actions/financial.ts`, `apps/admin/src/app/api/accounts-receivable/[id]/receive/route.ts`, `apps/admin/src/app/api/accounts-payable/route.ts`, `apps/admin/src/app/dashboard/pdv/page.tsx` e `apps/admin/src/components/orders/payment-modal.tsx`; `npx tsc --noEmit` em `apps/admin` com `exit code 0`; `npx eslint src/app/api/pdv/checkout/route.ts src/app/actions/financial.ts src/app/api/accounts-receivable/[id]/receive/route.ts src/app/api/accounts-payable/route.ts src/app/dashboard/pdv/page.tsx src/components/orders/payment-modal.tsx` com `exit code 0` |
| 2026-08-20 | FIN-BANK-ADMIN-001 | Endurecimento crítico de `Contas Bancárias` no `admin`, com permissão exclusiva para `owner/admin`, nova rota de ajuste auditável de saldo via `cash_flow`, exclusão segura com bloqueio por dependências, correção do reset total financeiro e exposição final dos CTAs críticos apenas para operador autorizado | Assistente | Alterações em `apps/admin/src/lib/company-context.ts`, `apps/admin/src/lib/bank-account-admin.ts`, `apps/admin/src/app/api/bank-accounts/route.ts`, `apps/admin/src/app/api/bank-accounts/[id]/adjust-balance/route.ts`, `apps/admin/src/app/api/system/reset/route.ts`, `apps/admin/src/app/dashboard/financial/bank-accounts/bank-accounts-client.tsx`, `apps/admin/src/app/dashboard/settings/page.tsx` e `apps/admin/src/db/migrations/105_add_bank_account_admin_controls.sql`; `npx tsc --noEmit` em `apps/admin` com `exit code 0`; `npx eslint src/lib/company-context.ts src/lib/bank-account-admin.ts src/app/api/bank-accounts/route.ts src/app/api/bank-accounts/[id]/adjust-balance/route.ts src/app/api/system/reset/route.ts src/app/dashboard/financial/bank-accounts/bank-accounts-client.tsx` com `exit code 0`; browser validou criação da conta temporária `QA TEMP DELETE`, exclusão segura bem-sucedida sem vínculos, ajuste auditável na conta `Grafeno` para `R$ 3.216,85` e abertura da `Zona de Perigo` com `Contas bancárias` disponível ao operador crítico |
| 2026-08-19 | CAT-PORTAL-ADDR-003 | Ajuste fino do detalhamento do pedido no portal: remoção do selo visual do provedor de frete e correção de `Dados de entrega` para exibir o endereço completo efetivamente escolhido no pedido, com recebedor, contato e referência, em vez de dados cadastrais genéricos do cliente | Assistente | Alterações em `apps/public/src/lib/client-portal-order-details.ts` e `apps/public/src/components/client-portal/OrderDetailsStandalone.tsx`; `npx tsc --noEmit` em `apps/public` com `exit code 0`; `npx eslint src/lib/client-portal-order-details.ts src/components/client-portal/OrderDetailsStandalone.tsx` com `exit code 0`; validação real no browser confirmando `Dados de entrega` com endereço `Rua August Opdemon, 123 • Casa • Nossa Senhora Aparecida • Salgueiro / PE • CEP 56000-000`, contato `87988335642` e referência `teste` |
| 2026-08-19 | CAT-UI-ORDER-002 | Reorganização da página de pedido no `admin`, movendo `Endereço de entrega do catalogo` e `Rastreio da entrega` da sidebar para a coluna principal abaixo de `Produção`, além de refinamento visual dos blocos `Resumo comercial` e `Frete escolhido` no portal do cliente sem alterar o conteúdo exibido | Assistente | Alterações em `apps/admin/src/app/dashboard/orders/[id]/page.tsx` e `apps/public/src/components/client-portal/OrderDetailsStandalone.tsx`; `npx tsc --noEmit` em `apps/public` com `exit code 0`; `npx eslint src/components/client-portal/OrderDetailsStandalone.tsx` com `exit code 0`; `npx tsc --noEmit` em `apps/admin` com `exit code 0`; `npx eslint src/app/dashboard/orders/[id]/page.tsx` sem erros; validação visual no browser do reposicionamento no `admin` e do novo acabamento visual no portal |
| 2026-08-19 | CAT-LOG-TRACK-001 | Enriquecimento profissional do detalhamento do pedido no portal do cliente com `Resumo comercial` e `Frete escolhido`, mais card de rastreio manual no `admin` para pedidos originados no catálogo, persistido em `orders` por meio da migration `104_add_order_catalog_tracking_fields.sql` | Assistente | Alterações em `apps/public/src/lib/client-portal-order-details.ts`, `apps/public/src/components/client-portal/OrderDetailsStandalone.tsx`, `apps/admin/src/app/dashboard/orders/[id]/page.tsx`, `apps/admin/src/app/api/orders/[id]/tracking/route.ts`, `apps/admin/src/types/orders.ts` e `apps/admin/src/db/migrations/104_add_order_catalog_tracking_fields.sql`; `npx tsc --noEmit` em `apps/public` com `exit code 0`; `npx eslint src/lib/client-portal-order-details.ts src/components/client-portal/OrderDetailsStandalone.tsx` com `exit code 0`; `npx tsc --noEmit` em `apps/admin` com `exit code 0`; `npx eslint src/app/api/orders/[id]/tracking/route.ts` com `exit code 0`; validação real via browser do portal exibindo `Resumo comercial` e `Frete escolhido`; validação real via browser do `admin` exibindo o novo card de rastreio e retornando mensagem operacional controlada enquanto a migration `104` ainda nao estiver aplicada no banco |
| 2026-08-19 | Fechamento final do módulo | Reconciliação final do backlog histórico do módulo de `Relatórios` com a `ESPECIFICACAO_OFICIAL.md`, ampliação dos universos customizados para `Financeiro Caixa` e `Financeiro Carteira`, formalização dos metadados obrigatórios também em `CSV/XLSX`, implementação da trilha persistida de geração/exportação em `report_audit_logs` e endurecimento da rota `GET /api/reports/audit` para modo degradado controlado quando a migration `103_create_report_audit_logs.sql` ainda não existir no ambiente | Assistente | Alterações em `apps/admin/src/lib/reports/contracts.ts`, `apps/admin/src/lib/reports/service.ts`, `apps/admin/src/lib/reports/audit.ts`, `apps/admin/src/app/api/reports/route.ts`, `apps/admin/src/app/api/reports/export/route.ts`, `apps/admin/src/app/api/reports/audit/route.ts` e `apps/admin/src/db/migrations/103_create_report_audit_logs.sql`; `npm exec --workspace=apps/admin tsc --noEmit` com `exit code 0`; `npm run lint --workspace=apps/admin -- src/lib/reports/contracts.ts src/lib/reports/audit.ts src/lib/reports/service.ts src/app/api/reports/route.ts src/app/api/reports/export/route.ts src/app/api/reports/audit/route.ts src/components/reports/report-page-client.tsx` com `exit code 0`; validação real via browser autenticado das abas `Financeiro`, `Vendas`, `Produtos`, `Clientes` e `Personalizados`; `POST /api/reports` retornando `200` para os universos oficiais e customizados financeiros; exportações `CSV/XLSX` retornando `200` com metadados obrigatórios; `POST /api/reports/audit` para `pdf` e `print` retornando `200`; `GET /api/reports/audit` validado em modo degradado controlado no ambiente sem a migration aplicada |
| 2026-08-18 | CAT-ADDR-001 | Fechamento técnico do fluxo de múltiplos endereços do catálogo: tipagem do cliente do portal corrigida, snapshot explícito de `delivery_address` salvo em `catalog_orders.cart_payload`, leitura desse snapshot no `admin` para exibir o endereço de entrega do pedido e fallback seguro para pedidos antigos | Assistente | Alterações em `apps/public/src/app/api/catalog/checkout/route.ts`, `apps/public/src/lib/client-portal-addresses.ts`, `apps/public/src/app/[slug]/cliente/page.tsx` e `apps/admin/src/app/dashboard/orders/[id]/page.tsx`; `npm exec --workspace=apps/public tsc --noEmit` com `exit code 0`; `npm exec --workspace=apps/admin tsc --noEmit` com `exit code 0`; `npm run lint --workspace=apps/public -- src/app/api/catalog/checkout/route.ts src/lib/client-portal-addresses.ts src/app/[slug]/cliente/page.tsx` com `exit code 0`; `npm run lint --workspace=apps/admin -- src/app/dashboard/orders/[id]/page.tsx` com `exit code 0` e warnings preexistentes no arquivo |
| 2026-07-06 | REL-012 | Governança integral do domínio de `Relatórios Personalizados`, com `universo` explícito (`Vendas`, `Produtos`, `Clientes`), reuso direto das respostas oficiais das abas consolidadas, filtros coerentes por universo, seleção de métricas oficiais, presets reprodutíveis com filtros persistidos e paridade entre tela e exportações | Assistente | Alterações em `service.ts`, `contracts.ts` e `report-page-client.tsx`, `GetDiagnostics` sem erros, `npx tsc --noEmit` com `exit code 0`, `npx eslint` global com `exit code 1` por passivos preexistentes fora do escopo, `npx eslint src/lib/reports/service.ts src/lib/reports/contracts.ts src/components/reports/report-page-client.tsx` com `exit code 0`, `npm test` com `29/29` testes aprovados, `npm run build` com `exit code 0`, `VALIDACAO_REL_012.md` gerado |
| 2026-07-06 | REL-011 | Correção integral da camada analítica da aba `Clientes`, com cálculo oficial de `Novos clientes`, `Clientes ativos`, `Clientes inativos`, `Clientes recorrentes`, `Ticket médio por cliente`, recorrência, frequência, ranking por cliente oficial e exposição dos filtros de `Cliente`, `Vendedor` e `Canal`, preservando a mesma base para tela e exportações | Assistente | Alterações em `service.ts` e `report-page-client.tsx`, `GetDiagnostics` sem erros, `npx tsc --noEmit` com `exit code 0`, `npx eslint` global com `exit code 1` por passivos preexistentes fora do escopo, `npx eslint src/lib/reports/service.ts src/components/reports/report-page-client.tsx` com `exit code 0`, `npm test` com `29/29` testes aprovados, `npm run build` iniciado e observado sem erro final capturado, `VALIDACAO_REL_011.md` gerado |
| 2026-06-04 | Governança documental inicial | Criação da estrutura permanente `docs/relatorios` com os arquivos `ESPECIFICACAO_OFICIAL.md`, `MATRIZ_DE_VERDADE.md`, `BACKLOG_EXECUTIVO.md`, `PLANO_DE_CORRECAO.md`, `CASOS_DE_TESTE.md`, `PLANO_DE_EXECUCAO.md`, `STATUS.md`, `NEXT_TASK.md`, `CHANGELOG.md` e `DECISOES.md` | Assistente | Estrutura criada no repositório e arquivos preenchidos com o conteúdo já aprovado |
| 2026-06-04 | REL-001 | Correção dos KPIs financeiros na camada analítica da aba Financeiro, com ajuste mínimo de apresentação dos cards para aderência à especificação oficial | Assistente | Alterações em `service.ts` e `report-page-client.tsx`, diagnósticos sem erros, `eslint` com `exit code 0`, validação lógica dos cenários `CT-001`, `CT-002`, `CT-005`, `CT-008`, `CT-009` e `CT-015` |
| 2026-06-04 | REL-001A | Remoção da restrição por vencimento na composição da carteira aberta (`Contas a Receber`) e revalidação final da história | Assistente | Alteração pontual em `service.ts`, diagnósticos sem erros, `eslint` com `exit code 0`, `CT-009` corrigido, `CT-015` permaneceu reprovado, `VALIDACAO_FINAL_REL_001.md` gerado |
| 2026-06-04 | REL-001 | Encerramento formal da história após reclassificação do `CT-015` para a Sprint 2, com atualização do status oficial e geração do documento de encerramento | Assistente | `DECISAO_CT_015.md` aprovado pelo usuário, `ENCERRAMENTO_REL_001.md` gerado, `STATUS.md` atualizado com `REL-001` concluída e `REL-002` como próxima história autorizada |
| 2026-06-05 | REL-002 | Correção isolada dos gráficos da aba `Financeiro`, com novas séries oficiais para recebimentos, fluxo de caixa, distribuição por forma de pagamento e carteira por status, preservando a ordenação cronológica apenas no Financeiro | Assistente | Alterações em `service.ts`, `report-charts.tsx` e `report-page-client.tsx`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, validação lógica de `CT-002`, `CT-006`, `CT-007`, `CT-010` e `CT-014`, `VALIDACAO_REL_002.md` gerado |
| 2026-06-05 | REL-002A | Fechamento da `REL-002` com correção da comparação por período anterior via chave temporal equivalente e complementação dos metadados obrigatórios de `PDF/Print` | Assistente | Alterações em `report-page-client.tsx` e `report-charts.tsx`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, revalidação de `CT-014` e regressão lógica de `CT-002`, `CT-006`, `CT-007` e `CT-010`, `VALIDACAO_FINAL_REL_002.md` gerado |
| 2026-06-05 | REL-003 | Correção do catálogo financeiro, aplicação dos filtros por universo, unificação da tabela financeira por `Recebimento` + `Fluxo de caixa` + `Carteira` e fechamento da paridade com exportações pela mesma base analítica | Assistente | Alterações em `service.ts`, `contracts.ts` e `report-page-client.tsx`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, revalidação lógica de `CT-005`, `CT-008`, `CT-009`, `CT-010` e `CT-014`, `VALIDACAO_REL_003.md` gerado |
| 2026-06-05 | REL-004 | Formalização da trilha `payments -> cash_flow -> orders` com triggers e procedures oficiais, substituição da exclusão física principal por reversão compensatória auditável e unificação do cancelamento PDV na mesma política financeira | Assistente | Criação das migrations `71_formalize_payments_cash_flow_pipeline.sql` e `72_replace_delete_payment_cleanup_with_auditable_reversal.sql`, alterações em `pdv/checkout/route.ts` e `pdv/cancel-sale/route.ts`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, validação estrutural de `CT-002`, `CT-004` e `CT-010`, `VALIDACAO_REL_004.md` gerado |
| 2026-06-05 | REL-005 | Formalização da trilha `accounts_receivable -> receivable_receipts -> cash_flow`, endurecimento do ciclo de vida dos títulos, suporte oficial a recebimentos parciais/múltiplos e reabertura mínima do título no domínio de recebíveis | Assistente | Criação das migrations `73_formalize_receivable_receipts_cash_flow_pipeline.sql`, `74_harden_accounts_receivable_lifecycle.sql` e `75_add_minimal_receipt_reversal_support.sql`, alterações em `accounts-receivable/route.ts`, `accounts-receivable/[id]/receive/route.ts`, `cash-flow/route.ts` e `financial/receivables/page.tsx`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, validação estrutural de `CT-005`, `CT-006`, `CT-008` e `CT-009`, `VALIDACAO_REL_005.md` gerado |
| 2026-06-05 | REL-006 | Implementação da política universal de reversão auditável para `payments`, harmonização estrutural de `cash_flow` e `commission_events`, reversão operacional compensatória no `PDV` e correção controlada do KPI `Valor Recebido` para visão líquida oficial do `CT-015` | Assistente | Criação das migrations `76_replace_payment_delete_with_logical_reversal.sql`, `77_finalize_cash_flow_reversal_contract.sql` e `78_adapt_commission_engine_to_logical_payment_reversal.sql`, alterações em `financial.ts`, `financial-section.tsx`, `pdv/cancel-sale/route.ts`, `cash-flow/route.ts` e `service.ts`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, `vitest` com `6/6` testes aprovados, `next build` com `exit code 0`, `VALIDACAO_REL_006.md` gerado |
| 2026-07-01 | REL-007 | Formalização da definição central de `pedido comercial válido` na camada de relatórios, com reaplicação da base saneada em `Vendas`, `Produtos`, `Clientes` e `Personalizados`, sem antecipar regras das histórias `REL-008` e `REL-009` | Assistente | Alterações em `service.ts`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, `vitest` com `29/29` testes aprovados, `VALIDACAO_REL_007.md` gerado |
| 2026-07-01 | REL-008 | Consolidação oficial do `Faturamento Total`, `Ticket Médio`, `Ranking de Clientes` e da `Evolução de vendas` da aba `Vendas` sobre a base saneada da `REL-007`, preservando integralmente a lógica de conversão para a `REL-009` | Assistente | Alteração isolada em `service.ts`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, `vitest` com `29/29` testes aprovados, `next build` bloqueado por `ENOSPC` no ambiente, `VALIDACAO_REL_008.md` gerado |
| 2026-07-01 | REL-009 | Correção da `Taxa de conversão` e do gráfico de `Conversão de orçamentos` da aba `Vendas`, substituindo a lógica de aprovação por conversão real via vínculo oficial `orders.quote_id` e reaplicando a elegibilidade comercial da `REL-007` ao numerador | Assistente | Alteração isolada em `service.ts`, diagnósticos sem erros, `eslint` com `exit code 0`, `tsc --noEmit` com `exit code 0`, `vitest` com `29/29` testes aprovados, `next build` com `exit code 0`, `VALIDACAO_REL_009.md` gerado |
| 2026-07-02 | REL-010 | Saneamento da camada analítica da aba `Produtos`, com correção da composição do catálogo analítico, restauração da categoria oficial para produtos sem venda, segregação dos gráficos por quantidade e receita, desambiguação de produtos homônimos e ordenação padrão coerente sobre a base comercial oficial da `REL-007` | Assistente | Alteração isolada em `service.ts`, `GetDiagnostics` sem erros, `npx tsc --noEmit` com `exit code 0`, `npx eslint` global com `exit code 1` por passivos preexistentes fora do escopo, `npx eslint src/lib/reports/service.ts` com `exit code 0`, `npm test` com `29/29` testes aprovados, `npm run build` com `exit code 0`, `VALIDACAO_REL_010.md` gerado |
