Appearance
Arquitetura Geral
A Fábrica de Cálculos é um monorepo organizado em duas dimensões: apps (interfaces web e APIs) e packages (lógica de domínio pura).
Diagrama geral
As setas partem do que é consumido para quem consome: a camada aponta para quem a estende e o package aponta para a app ou o package que o importa — a mesma convenção da hierarquia de camadas. Linhas sem seta indicam integração com sistemas externos.
graph TD
subgraph ext["Externo"]
BACEN[API SGS/BACEN]
IBGE[API SIDRA/IBGE]
CNJ[SSO institucional / OAuth2]
end
subgraph calc["Apps - Calculadoras"]
TC[prev-tc]
RVT[prev-rvt]
ATRASADOS[prev-atrasados]
RPPS[prev-rpps]
end
subgraph apis["Apps - APIs"]
PREVAPI[prev-api]
RMIAPI[rmi-api]
INDAPI[backoffice]
end
subgraph nuxt["Camadas Nuxt"]
BASE[base]
BASEUI[base-ui]
BASESERV[base-servicos]
BASEONLINE[base-online]
BASECALC[base-calculadora]
BASEPREV[base-prev]
end
subgraph pkgs["Packages de Dominio"]
CP[calculos-previdenciarios]
CR[calculos-rpps]
CJ[calculos-judiciais]
IND[indices]
PA[parsers]
CM[comum]
UT[utils]
end
BASE --> BASEUI
BASEUI --> BASESERV
BASESERV --> BASEONLINE
BASEONLINE --> BASECALC
BASECALC --> BASEPREV
BASEPREV --> TC & RVT & ATRASADOS & RPPS
BASESERV --> INDAPI
CP --> TC & RVT & ATRASADOS & RPPS
CR --> RPPS
CP --> PREVAPI & RMIAPI
IND --> INDAPI
UT --> CM --> IND --> CJ --> CP
CP --> CR
UT --> PA --> CP & CR & IND
BACEN --- INDAPI
IBGE --- INDAPI
CNJ --- BASESERV
Camadas Nuxt — composição via extends
As apps não duplicam configuração. Cada camada herda automaticamente componentes, composables, plugins e configurações da camada pai:
graph TD base --> base-ui["base-ui (Quasar · Pinia · VueUse · playground)"] base-ui --> base-servicos["base-servicos (JWT/JWK via nuxt-auth-utils · serviços internos)"] base-servicos --> backoffice["backoffice<br/>Painel admin + API de índices + persistência (Drizzle + Postgres)"] base-servicos --> pdpj["pdpj<br/>Integração PDPJ-br"] base-servicos --> base-online["base-online (arquivos online · sessão de cálculo)"] base-online --> arquivos-online["arquivos-online — central de arquivos"] base-online --> base-calculadora["base-calculadora (casco da calculadora · tabelas de índices)"] base-calculadora --> civeis["civeis — Cálculos cíveis"] base-calculadora --> base-prev["base-prev (cálculos previdenciários · playground)"] base-prev --> prev-rvt["prev-rvt — RVT (Tema 1.102/STF)"] base-prev --> prev-tc["prev-tc — TC / RMI (RGPS)"] base-prev --> prev-atrasados["prev-atrasados — Atrasados previdenciários"] base-prev --> prev-rpps["prev-rpps — RPPS (servidores da União)"]
Leia mais: Camadas Nuxt em detalhe
Packages — grafo de dependências
graph LR UT[utils] CM[comum] IND[indices] CJ[calculos-judiciais] CP[calculos-previdenciarios] CR[calculos-rpps] PA[parsers] CSGS[cliente-sgs] CSIDRA[cliente-sidra] UT --> CM --> IND --> CJ --> CP UT --> PA --> CP UT --> CSGS & CSIDRA CP --> CR
Leia mais: Pacotes em detalhe
Princípios
- Packages sem compilação: exportam TypeScript puro via
"main": "./src/index.ts". Nenhum step de build separado. - Português brasileiro no domínio: todos os identificadores, nomes de função e comentários de negócio são em PT-BR.
- Web Workers para cálculos pesados: a UI delega via
criarWorkerScope(@fc/utils) — a thread principal nunca bloqueia. - Catálogo de dependências centralizado: versões gerenciadas em
pnpm-workspace.yamlcom catálogos nomeados.