Appearance
@fc/calculos-rpps
Regras de negócio do RPPS — Regime Próprio de Previdência Social para servidores do Poder Judiciário da União. Estende @fc/calculos-previdenciarios, o núcleo comum aos dois regimes previdenciários, e depende ainda de @fc/comum, @fc/utils e @fc/parsers.
Depende também de @fc/calculos-rgps, em um ponto só: a contagem recíproca (art. 201, § 9º, da CF, e Lei 9.796/1999). O servidor traz tempo do regime geral, provado por CTC do INSS, CNIS ou dossiê do PrevJud, e ler esses documentos é capacidade do RGPS. O tempo importado não é calculado com regra do RGPS — vira período próprio marcado rgps: true. Uma cerca de lint garante que só contagem-reciproca/ e documentos/importacao/ alcancem aquele pacote.
Diferença entre RPPS e RGPS
| Aspecto | RGPS (calculos-rgps) | RPPS (calculos-rpps) |
|---|---|---|
| Público | Trabalhadores da iniciativa privada, MEI, autônomos | Servidores públicos do Judiciário Federal |
| Regime | INSS / Previdência Social | Regime Próprio de cada órgão |
| Regra de aposentadoria | RPS, EC 103/2019, Temas STF | EC 41/2003, EC 47/2005, EC 103/2019 |
| Cálculo da RMI | Média dos salários-de-contribuição | Última remuneração ou média das remunerações |
Módulos
| Módulo | Conteúdo |
|---|---|
entidades | Entidades do domínio RPPS: HistoricoRpps, DadosServidor, PeriodoRpps, Afastamento |
parametros | Parâmetros de domínio do RPPS, um por pasta: TipoAposentadoriaRpps, TipoServicoPublico, MetodoCalculoDias, TipoAfastamento, ComputadoPara, FundamentoRpps… |
analise-beneficios | Determinação dos benefícios aplicáveis ao servidor (AnaliseBeneficiosRpps) |
calculo-tc | Cálculo do tempo de contribuição para o RPPS |
requisitos | Verificação dos requisitos de aposentadoria (EC 103/2019) |
documentos/plugins | Plugins para o analisador de @fc/parsers específicos para documentos do RPPS (PluginCtcInss, PluginFrequenciaMumps, PluginSistemaRh), um subdiretório por documento |
documentos/importacao | TipoDocumentoRpps e registroDocumentosRpps — compõe os documentos que os dois regimes leem (CNIS, PrevJud, TC simples) com os próprios do RPPS, e entrega ao importador genérico de @fc/parsers. Os demais tipos previdenciários entram declarados vazios: a calculadora não os oferece |
contagem-reciproca | ATRIBUTOS_CONTAGEM_RECIPROCA e converterPeriodoRgpsParaRpps — o que um tempo de RGPS assume ao entrar na contagem do RPPS |
persistencia | Tipos do .calc do RPPS, a cadeia de migradores (migradoresRpps, migrador02), o validador validarArquivoRpps e parametros-legados/ (vocabulário antigo dos parâmetros) |
O PluginSistemaRh reconhece o formato atual do JSON de RH da SJSP e do TRF3, com nomes de campo em camelCase. A leitura abrange os dados do servidor e os indicadores de cômputo dos afastamentos e das averbações.
Como consumir
O pacote não tem barrel: nem src/index.ts de raiz nem index.ts de pasta. O exports publica cada pasta de src/ por wildcard (@fc/calculos-rpps/<pasta>/*), e o consumidor importa o arquivo que declara o símbolo:
ts
import { AnaliseBeneficiosRpps } from '@fc/calculos-rpps/analise-beneficios/AnaliseBeneficiosRpps'
import { HistoricoRpps } from '@fc/calculos-rpps/entidades/HistoricoRpps'
import { TipoAposentadoriaRpps } from '@fc/calculos-rpps/parametros/tipo-aposentadoria-rpps/TipoAposentadoriaRpps'
import { migradoresRpps } from '@fc/calculos-rpps/persistencia/migradoresRpps'O import pela raiz (from '@fc/calculos-rpps') não resolve e é barrado pela cerca fc/cerca-pacotes-sem-barrel-raiz de @fc/eslint-config. Testes de arquitetura (tests/arquitetura/) travam a ausência de index.ts, de enum e de namespace em src/.
Parâmetros de domínio
Cada parâmetro é um dicionário as const com tipo homônimo, em pasta própria nomeada em kebab-case (parametros/<parametro>/<Parametro>.ts), com chaves em CAPITAL_CASE e valor igual ao nome — TipoAposentadoriaRpps.VOLUNTARIA_POR_TEMPO === 'VOLUNTARIA_POR_TEMPO', TipoServicoPublico.CARGO_PUBLICO, MetodoCalculoDias.DIAS_365. As funções auxiliares são livres, uma por arquivo: obterOpcoes<Nome>, obterRotulo<Nome>, eh<Nome>Valido (a validação de valor solto; não há mapa reverso), mais as específicas (obterExplicacaoMetodoCalculoDias, obterSiglaComputadoPara, obterTipoAfastamentoPorCodigo, obterOpcoesTipoAposentadoriaRppsDisponiveis…) e as constantes de grupo (TIPOS_APOSENTADORIA_RPPS_PCD, FUNDAMENTOS_RPPS_REGRAS_PROGRESSIVAS_EC103).
Duas exceções ao "valor igual ao nome": TipoAfastamento vale o código da Fábrica ('1'…'99'), que é o tipoFabricaCalculo do JSON do sistema de RH e o codigoFabrica da tabela de frequência Mumps — mudam só as chaves (TipoAfastamento.DOENCA_PESSOA_DA_FAMILIA === '1'); e FundamentoRpps é o fundamento legal do benefício analisado, e o resultado (BeneficioAnalisadoRpps.fundamento) carrega a chave — a citação em prosa é só de exibição (obterRotuloFundamentoRpps).
Persistência
Os .calc do RPPS gravam parametrosGerais.tipoAposentadoria, periodos.*.servicoPublico, periodos.*.metodoCalculoDias e periodos.*.metodoDiasServicoPublico — até o prev-rpps 1.2.38 com o texto antigo ('voluntariasRegrasGerais', 'Cargo_Publico', 'Data a Data'). persistencia/parametros-legados/ guarda a tabela congelada desses textos (VALORES_LEGADOS_RPPS) e os mapeadores migrarPeriodoRppsLegado e migrarParametrosRppsLegados, que reaproveitam o migrarParametroLegado de @fc/calculos-previdenciarios; o migrador02 (1.2.38 → atual) aplica-os junto com a tradução dos ordinais do RGPS e das chaves de competência. afastamentos.*.tipo não muda (é o código).
Instalação (monorepo)
jsonc
// package.json
{ "dependencies": { "@fc/calculos-rpps": "workspace:*" } }