Back to the catalog

Tipos de cálculo

Bundle OKF 0.1 · 22 conceitos · franklinbaldo/sisprev

Open source Repository Open in the app JSON README (API)

About

# Tipos de cálculo

Um `type: TipoCalculo` por fórmula juridicamente distinta usada para apurar o
valor inicial de um benefício: a base, o que a proporcionaliza, os limites e
a fundamentação normativa de cada etapa. Cada fórmula materialmente diferente
constitui um tipo distinto — mesmos dados relevantes, submetidos à mesma
operação, produzindo o mesmo resultado, pertencem ao mesmo tipo; mudança
material na base, no método da média, na proporcionalização, nos limites ou
na ordem das operações cria outro.

Este bundle substitui a antiga divisão entre `FormaCalculo` (a fórmula
jurídica) e `TipoCalculo` (o rótulo do enum `TIPO_CALCULO` do Sisprev). As
duas entidades canônicas paralelas geravam confusão sem servir a uma
distinção que o domínio precisasse: o rótulo do Sisprev não é a identidade
da fórmula, é a sua **origem legada** — `origem_legada.tipo_calculo`, dentro
de cada documento. Um mesmo valor legado pode ser a origem de vários tipos
canônicos distintos (é o caso de `Proporcionali

Details

Kind
OKF bundles
Topic
No topic detected
Publisher
franklinbaldo
Origin
okf_github
Category
dados
Version
0.1
Open pull requests
10
Last push
2026-09-04T22:12:15Z
Repository state
ativo
Language
HTML
Added
2026-09-09 12:03:57
Updated
2026-09-09 12:03:57
Origin id
franklinbaldo/sisprev:okf/tipos-calculo/index.md

README

# sisprev

Auditoria e validação das regras de aposentadoria e pensão por morte do
Sisprev — o sistema de regime próprio de previdência de Rondônia — para que
cada regra possa ser aplicada no sistema com segurança jurídica.

## Objetivo

O Sisprev decide qual regra de aposentadoria ou pensão por morte se aplica a
cada servidor com base numa tabela de regras: cada uma define elegibilidade
(datas de admissão e de aquisição do direito, sexo), forma de cálculo dos
proventos (integral, por média, proporcional) e a fundamentação legal
correspondente. O número de regras não é fixo — cresce e muda conforme
legislação nova é editada e regras antigas são revistas; o que é estrutural
é o próprio modelo: cada regra tem um `TIPO DE BENEFICIO`, um
`CICLO DE VALIDAÇÃO` (a ordem em que deve ser revisada) e dois sinalizadores
de validação jurídica, `VALIDADO PGE` e `VALIDADO PRESIDENCIA`.

Na última atualização da planilha (`data/raw/regras-sisprev.csv`), todas as
regras então cadastradas já estavam ativas no sistema
(`ATUALMENTE NO SISTEMA = TRUE`) mas nenhuma tinha concluído o ciclo de
validação jurídica (`VALIDADO PGE` e `VALIDADO PRESIDENCIA` ambos `FALSE`
em toda a tabela). Isso é o estado de um momento específico, não uma
característica do sistema — a proporção validada deve mudar à medida que
regras forem revisadas; **não assuma esses números sem reconferir a
planilha atual.**

Este repositório existe para fechar essa lacuna de validação: transformar a
planilha de regras em algo que dê para **revisar regra por regra** —
conferir se a fundamentação legal citada está correta e atualizada, se a
janela de elegibilidade bate com a legislação, se o método de cálculo é o
exigido — e registrar o resultado dessa revisão de forma auditável (quem
revisou, o quê mudou, quando), até que cada regra tenha sido de fato
validada pela PGE e pela Presidência.

## Por que um bundle OKF, e não só a planilha

A planilha original (`data/raw/regras-sisprev.csv`) é a baseline congelada da
importação, não a fonte de verdade corrente — o registro vivo e autoritativo
após o bootstrap é o bundle `okf/regras-sisprev/`. Ela também não é um bom
formato para auditoria: dezenas de linhas × 27 colunas em uma única tabela
larga, sem histórico linha-a-linha, sem como comentar uma regra específica.

Este repo mantém a mesma informação também como um bundle [Open Knowledge
Format (OKF) v0.1][okf-spec] — um arquivo markdown por regra. Toda a regra
(as 27 colunas do Sisprev, fundamentação legal inclusa) vive no **frontmatter**
— o frontmatter *é* a regra deployável, só com os campos que o Sisprev já tem.
O **corpo do markdown fica livre para a nossa análise da regra** (reconciliação,
dúvidas, notas de auditoria), nunca uma coluna do CSV. Isso dá:

- **Diff e histórico por regra**: cada alteração numa regra (e cada
  validação) vira um commit em `okf/regras-sisprev/regras/regra-NNNN.md`,
  revisável em Pull Request.
- **Revisão em paralelo**: cada regra é um arquivo — dá para distribuir a
  revisão entre pessoas/ciclos sem conflito, não importa quantas regras
  existam no momento.
- **Comentário e citação por regra**: PRs comentam a fundamentação de uma
  regra específica, linkam para o texto legal, sem afetar as demais.

**`data/raw/regras-sisprev.csv` é a importação original, congelada — nunca é
sobrescrita.** `derivar.py` recusa com erro se alguém apontar a saída para lá,
e o CI confere que cada arquivo congelado tem exatamente um commit na história:
o da importação. Ela existe como a linha de base da auditoria — o estado exato
em que as regras foram recebidas, preservado para sempre.

A partir da importação inicial, **o bundle OKF é o registro vivo**: correções
de auditoria (fundamentação, datas, status de validação) são feitas
diretamente nos `regra-NNNN.md`, não na planilha. O export plano do estado
atual do bundle, para consumo pelo Sisprev, é gerado por `derivar.py` em
`data/regras-sisprev.csv` — fora de `data/raw/`, nunca substituindo o
original.

## Estrutura

```
data/raw/regras-sisprev.csv     # importação original — SOMENTE LEITURA, nunca sobrescrita
data/regras-sisprev.csv         # export plano do estado ATUAL do bundle — commitado, conferido pelo CI a cada mudança
okf/regras-sisprev/
├── index.md                    # listagem raiz do bundle
├── regras-sisprev.md           # doc "Dataset": schema das 27 colunas + metadados
└── regras/
    ├── index.md                # listagem de todas as regras
    └── regra-0001.md ...       # uma regra por arquivo (frontmatter = a regra; corpo = análise) — registro vivo, editado durante a auditoria
scripts/
├── derivar.py                   # bundle OKF -> CSV derivado + índices + snapshot do site
└── gerar_relatorio_pdf.py       # site/dist/ -> relatório da PGE em PDF
```

Cada `regra-NNNN.md` traz no frontmatter **todas** as colunas do Sisprev:
tipo de benefício, ciclo de validação, status de validação (PGE/Presidência),
elegibilidade (datas, sexo), paridade, forma de cálculo e a fundamentação
legal proporcional, integral e geral — o frontmatter é a regra deployável. O
corpo do markdown fica livre para a análise da regra durante a auditoria
(conferência da fundamentação contra a legislação, notas, dúvidas).

## Cronograma de validacao

O plano operacional de cinco regras por dia esta em [docs/cronograma-validacao.md](docs/cronograma-validacao.md).

## Fluxo de trabalho de auditoria

**Mudanças são sempre feitas no `.md` da regra — nunca editando um CSV à
mão.** O CSV derivado (`data/regras-sisprev.csv`) é gerado por script a
partir do bundle, nunca o contrário.

1. Abra as regras de um ciclo (`CICLO DE VALIDAÇÃO`) em
   `okf/regras-sisprev/regras/` — comece pelo `1º`.
2. Para cada regra: confira a fundamentação legal citada contra o texto
   vigente da lei/emenda, confira se as datas de elegibilidade e o método
   de cálculo (`TIPO_CALCULO`) fazem sentido com essa fundamentação.
3. Registre o resultado da revisão (correções na fundamentação, ajuste de
   datas, ou confirmação) como uma alteração direta no `regra-NNNN.md`
   correspondente.
4. Rode `uv run scripts/derivar.py` — isso regenera
   `data/regras-sisprev.csv` **e os `index.md`** a partir do bundle
   atualizado. Commite o `.md` alterado **junto com** os artefatos derivados
   no mesmo PR. O CI confere que esses derivados batem exatamente com o
   conteúdo atual das regras — falha se alguém commitar só o `.md` e esquecer
   de regenerar, ou vice-versa.
5. Quando uma regra estiver de fato aprovada pela PGE/Presidência fora
   deste repo, atualize `validado_pge` / `validado_presidencia` para
   `'TRUE'` no `regra-NNNN.md` correspondente (e regenere o CSV, passo 4).

## Comandos

```bash
# a cada edição de regra ou achado: regenera CSV derivado, índices e snapshot
uv run scripts/derivar.py

# conformidade OKF, um bundle por vez
uv run okf-parser check okf/regras-sisprev
```

## Antes de commitar

```bash
uv run ruff format --check && uv run ruff check
uv run mdformat --check --number okf docs README.md CLAUDE.md
uv run scripts/derivar.py
```

Veja `CLAUDE.md` para detalhes de arquitetura e as regras de manter CSV e
bundle sincronizados.

[okf-spec]: https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md

More