From 543b1171c7385d2df3f802efbc48644ee4646f9e Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 2 Oct 2026 10:07:41 -0300 Subject: [PATCH] =?UTF-8?q?Inclus=C3=A3o=20relat=C3=B3rio=20cont=C3=A1bil?= =?UTF-8?q?=20Diretoria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 11 +- README.md | 1 + config/urls.py | 1 + plano.md | 22 + portal_api/admin.py | 19 + portal_api/catalogo.py | 9 + portal_api/dashboard_contabil/CHANGELOG.md | 14 + portal_api/dashboard_contabil/CLAUDE.md | 33 +- portal_api/dashboard_contabil/README.md | 5 +- portal_api/management/commands/seed_portal.py | 6 + .../0090_relatorio_contabil_de_paula.py | 202 ++++ portal_api/models.py | 310 ++++-- portal_api/serializers.py | 77 ++ portal_api/urls.py | 19 + portal_api/views.py | 332 +++--- prd.md | 1 + static/js/dashboard-contabil.js | 75 +- static/js/profiles.js | 19 +- templates/acessos-gerais.html | 11 + templates/calendario-individual.html | 11 + templates/conciliacao-fornecedores.html | 11 + templates/custo-contratacao.html | 11 + templates/dashboard-contabil-de-paula.html | 949 ++++++++++++++++++ templates/dashboard-contabil-relatorio.html | 6 +- templates/dashboard-contabil.html | 11 + .../importacao-plano-saude-de-paula.html | 11 + templates/importacao-plano-saude.html | 11 + templates/indicador-desempenho.html | 11 + templates/links-ferramentas.html | 11 + templates/nao-conformidades.html | 11 + templates/perfis-acesso.html | 11 + templates/portal.html | 11 + templates/ramais.html | 11 + templates/usuarios.html | 11 + 34 files changed, 2046 insertions(+), 219 deletions(-) create mode 100644 portal_api/migrations/0090_relatorio_contabil_de_paula.py create mode 100644 templates/dashboard-contabil-de-paula.html diff --git a/CLAUDE.md b/CLAUDE.md index 6b440a4..61e468d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -97,7 +97,7 @@ Ver `docs/identidade-visual/identidade-visual.md` para o inventário de cada arq ### Backend serve o frontend (mesma origem) -`config/urls.py` registra `path("api/", include("portal_api.urls"))` e, para cada uma das **15 páginas HTML** do frontend (`index.html` mais os 14 shells — ver a tabela em "Páginas" abaixo), uma rota `TemplateView` que resolve o arquivo em `templates/`. Dois templates não têm rota própria: `dashboard-contabil-relatorio.html` e `conciliacao-fornecedores-relatorio.html` são renderizados por uma view da aplicação correspondente (`/api/contabil-apuracoes/{id}/dashboard/` e `/api/conciliacoes-fornecedores/{id}/relatorio/`), não navegáveis pela URL de página. Os estáticos (`static/css`, `static/js`, `static/img`) são servidos por `django.contrib.staticfiles` automaticamente em `DEBUG` (via `STATICFILES_DIRS`) — não há mais nenhum `re_path`/`static_serve` manual em `urls.py`. Cada template usa `{% load static %}` + `{% static 'css/tokens.css' %}` (nunca um caminho hardcoded tipo `assets/css/...`, que não existe mais). Essa escolha (Django servindo o próprio frontend) existe para evitar CORS/cookie cross-origin: autenticação é por **sessão/cookie do Django**, então frontend e API precisam estar na mesma origem. +`config/urls.py` registra `path("api/", include("portal_api.urls"))` e, para cada uma das **16 páginas HTML** do frontend (`index.html` mais os 15 shells — ver a tabela em "Páginas" abaixo), uma rota `TemplateView` que resolve o arquivo em `templates/`. Dois templates não têm rota própria: `dashboard-contabil-relatorio.html` e `conciliacao-fornecedores-relatorio.html` são renderizados por uma view da aplicação correspondente (`/api/contabil-apuracoes/{id}/dashboard/` e `/api/conciliacoes-fornecedores/{id}/relatorio/`), não navegáveis pela URL de página. Os estáticos (`static/css`, `static/js`, `static/img`) são servidos por `django.contrib.staticfiles` automaticamente em `DEBUG` (via `STATICFILES_DIRS`) — não há mais nenhum `re_path`/`static_serve` manual em `urls.py`. Cada template usa `{% load static %}` + `{% static 'css/tokens.css' %}` (nunca um caminho hardcoded tipo `assets/css/...`, que não existe mais). Essa escolha (Django servindo o próprio frontend) existe para evitar CORS/cookie cross-origin: autenticação é por **sessão/cookie do Django**, então frontend e API precisam estar na mesma origem. Em produção, rodar `python manage.py collectstatic` (junta tudo em `STATIC_ROOT = BASE_DIR / "staticfiles"`) e servir esse diretório via whitenoise/nginx — `django.contrib.staticfiles` só serve automaticamente quando `DEBUG=True`. Uploads de usuário (ícones de `LinkFerramenta`) são um mecanismo separado: `MEDIA_URL`/`MEDIA_ROOT` em `settings.py`, servidos por `config/urls.py` via `static()` só quando `DEBUG=True` (em produção, servir `media/` também por whitenoise/nginx, igual ao `STATIC_ROOT`). @@ -185,6 +185,7 @@ Pacotes Python puros (sem ORM), um por ferramenta — cada um com seu próprio ` | `nao-conformidades.html` | Aplicação de Relatórios > Qualidade: gestão contínua das ocorrências/ações do Sigsistem, com dashboard e status interno de tratativa da Qualidade (ver `portal_api/nao_conformidades/CLAUDE.md`). | | `conciliacao-fornecedores.html` | Ferramenta de Utilitários: histórico + nova conciliação (código da empresa com nome buscado no Questor + razão de fornecedores .xlsx/.csv) + detalhe com cards de alerta e tabela de fornecedores expansível, vínculo manual, validação e exportação XLSX (ver `portal_api/conciliacao_fornecedores/CLAUDE.md`). | | `dashboard-contabil.html` | Aplicação de Relatórios > Contabilidade ("Relatório Contábil" na UI): histórico de análises + nova análise (upload do PDF de Balancete + DRE) + revisão de achados de auditoria (com observações por conta) + botão "Gerar Relatório" (relatório HTML autocontido, ver `portal_api/dashboard_contabil/CLAUDE.md`). | +| `dashboard-contabil-de-paula.html` | Aplicação da seção Diretoria ("Relatório Contábil - De Paula"): a mesma tela de `dashboard-contabil.html`, para as empresas do próprio escritório, com tabelas, endpoints e permissão próprios. Mesmo JS/CSS, parametrizados por `window.PID_DC_CONFIG` (ver "Relatório Contábil - De Paula" em `portal_api/dashboard_contabil/CLAUDE.md`). | O item "Calendário De Paula" no menu **não é uma página local** — é um `` (continua favoritável, já que ainda é um `` — ver `docs/favoritos/favoritos.md`) cujo clique é interceptado em `sidebar.js` (`PID_CALENDARIO_DEPAULA_URL`) pra abrir `https://depaula-tvcorporativa.lovable.app/calendario` num modal com ` + + + + + + + + + + + + + + + + + + + + diff --git a/templates/dashboard-contabil-relatorio.html b/templates/dashboard-contabil-relatorio.html index 39f63db..ea764ac 100644 --- a/templates/dashboard-contabil-relatorio.html +++ b/templates/dashboard-contabil-relatorio.html @@ -738,7 +738,7 @@

Balancete - + Exportar XLSX @@ -837,7 +837,7 @@

D.R.E. — Demonstração do Resultado do Exercício - + Exportar XLSX @@ -991,7 +991,7 @@