Calculadora ICMS ST¶
1. Visão Geral¶
- Slug:
calculadora-icms-st - Grupo: Geral
- Página (rota):
/calculadora-icms-st - API base: N/A
- Permissão RBAC:
tool:calculadora-icms-stoutool:*(ADMIN acessa)
Ferramenta Calculadora ICMS ST no portal, com fluxo autenticado e controle de acesso por RBAC.
2. Objetivo Operacional¶
- Automatiza uma rotina operacional para reduzir trabalho manual e padronizar saída.
- Uso recomendado quando há alto volume, risco de erro manual ou necessidade de padronização de entrega.
3. Arquivos Relacionados (Verificados)¶
- Página HTML:
public/calculadora-icms-st.html - Script JS da ferramenta:
public/js/calculadora-icms-st.js - Router Node: não identificado
- Service Node: não identificado
- Arquivos Python relacionados: não foi identificado arquivo Python específico para este slug
4. Rotas e Endpoints¶
- Rota de página:
/calculadora-icms-st;
Troubleshooting¶
Sintoma¶
- No servidor Linux/VPS, a página pode falhar ao abrir com
Cannot GET /calculadora-icms-stou carregar sem o JavaScript da ferramenta.
Causa provavel¶
- Os arquivos da ferramenta estavam com letras maiúsculas no nome (
calculadora-ICMS-ST), enquanto links e referências do portal já usavam slug minúsculo em parte da navegação. Em Windows isso pode passar despercebido, mas no Ubuntu a diferença de maiúsculas/minúsculas quebra rota e asset.
Solucao¶
- Padronizar slug, rota e nomes de arquivos da ferramenta em minúsculo (
calculadora-icms-st) e manter compatibilidade da rota dinâmica para acessos antigos. - A exportacao XLSX tambem passou a usar bundle local em
/vendor/xlsx.full.min.js, eliminando a dependencia de CDN externo.
Sintoma¶
- A exportacao XLSX pode parar com a mensagem
Biblioteca XLSX nao carregada.
Causa provavel¶
- O front dependia de um bundle carregado via CDN externo, que nao estava disponivel de forma confiavel no portal.
Solucao¶
- Servir o bundle do
xlsxa partir do proprio portal em/vendor/xlsx.full.min.jse apontar a pagina para esse arquivo local. - Base de API esperada: sem API dedicada no catálogo;
- Endpoints no router: não foi possível extrair endpoints específicos (arquivo ausente ou dinâmica indireta).
5. Fluxo Técnico (Página -> Node -> Python/Serviço)¶
- Front-end coleta parâmetros/arquivos e chama APIs internas (preferência por
AuthClient.authFetch). - Router valida entrada, aplica segurança (CSRF em mutações quando aplicável) e orquestra o processamento.
- Service concentra regra de negócio, integração com armazenamento e chamadas a serviços externos/Python.
- Retorno padronizado em JSON e/ou arquivo para download.
6. Segurança e Governança¶
- Exige autenticação ativa no portal.
- RBAC por ferramenta (
tool:<slug>,tool:*, ADMIN). - Em mutações, usar token CSRF via header
x-csrf-token(exceto login). auditLogdeve registrar evento sem interromper a requisição em falhas de auditoria.
7. Entradas e Saídas Esperadas¶
- Entradas: parâmetros de formulário e/ou upload conforme UI da ferramenta.
- Saídas: resposta em tela e, quando aplicável, artefatos (ZIP/PDF/XLSX/CSV/JSON).
- Observação: validar encoding, formato e tamanho dos arquivos para evitar erro 400/422.
8. Troubleshooting Rápido¶
- 401/403: conferir sessão do usuário e permissão RBAC.
- 404 em endpoint: validar rota no
routere base URL consumida no JS. - 422/400: revisar campos obrigatórios e estrutura do arquivo enviado.
- 500: inspecionar logs do Node e, quando existir, logs do processamento Python.
9. Observações de Manutenção¶
- Ao alterar nomes de arquivo/rota, manter compatibilidade (alias/redirect) para não quebrar links legados.
- Se incluir nova API/fluxo, atualizar este documento e
src/core/tool-catalog.json.