# PNTP — Legislativo: proposições, comissões, votações, cotas e atividades

> **Critérios:** 20.1–20.11.
> **Fases:** [`P18`](../../implementation-phases/P18-camara.md) e
> [`P28`](../../implementation-phases/P28-legislativo-completo.md).
> **Estado atual:** P18 cobre 20.1, 20.4, 20.6 e 20.9; P10 cobre 20.2; 20.3, 20.5, 20.7,
> 20.8, 20.10 e 20.11 faltam.
> **Perfil:** só com `structure_type=camara`/contrato.

## 1. Cobertura atual

| # | Critério | Onde | Estado |
|---|---|---|---|
| 20.1 | Composição + biografia | P18 `vereadores` | OK |
| 20.2 | Leis e atos infralegais | P10 `legislacao` | OK |
| 20.3 | Projetos + tramitação | — | **NOVO** |
| 20.4 | Pauta do Plenário | P18 `pauta` | OK |
| 20.5 | Pauta das Comissões | — | **NOVO** |
| 20.6 | Atas + presença | P18 `atas`/`pontos_frequencia` | OK |
| 20.7 | Votações nominais | — | **NOVO** |
| 20.8 | Contas do Executivo | P24/P28 | **NOVO** |
| 20.9 | Transmissão | P18 `transmissoes` | OK |
| 20.10 | Cotas/verba indenizatória | P17 `viap` | **PARCIAL** |
| 20.11 | Atividades legislativas | — | **NOVO** |

## 2. Proposições e tramitação (20.3)

Modelo:

- `proposicoes`: `id`, `tipo` (`projeto_lei|projeto_resolucao|projeto_decreto|indicacao|outro`),
  `numero`, `ano`, `ementa` (AST), `autoria` text, `relator` text null, `situacao` enum
  (`apresentado|em_comissao|em_pauta|aprovado|rejeitado|arquivado`), `apresentado_em`, `slug`.
- `proposicao_tramitacoes`: `id`, `proposicao_id`, `data`, `orgao` (plenário/comissão),
  `descricao` AST, `situacao`, `documento_media_id` null.
- `proposicao_anexos`: `media_id`, `titulo`, `tipo` (`texto|parecer|emenda|ata|outro`), `position`.
- Portal `/proposicoes` e detalhe com linha do tempo; filtros por tipo/ano/autor/situação; CSV;
  3 anos; sitemap/busca.
- Regra: tramitação é imutável após publicada; correção = novo evento, nunca overwrite.

## 3. Comissões e pautas (20.5)

Modelo:

- `comissoes`: `id`, `slug`, `nome` jsonb, `tipo` (`permanente|temporaria|especial`), `active`.
- `comissao_membros`: `id`, `comissao_id`, `vereador_id`, `cargo` (`presidente|vice|relator|membro`),
  `inicio`, `fim` null.
- `comissao_pautas`: `id`, `comissao_id`, `data_hora`, `titulo` jsonb, `situacao`, timestamps;
  `comissao_pauta_itens`: `pauta_id`, `proposicao_id` null, `ordem`, `titulo` jsonb, `resultado`.
- Portal `/comissoes` e detalhe com pauta; filtro por comissão/ano; CSV/PDF pesquisável da pauta;
  3 anos; `Atualizado em`.

## 4. Votações nominais (20.7)

Modelo:

- `votacoes`: `id`, `sessao_id`, `proposicao_id` null, `titulo` jsonb, `data`, `resultado`
  (`aprovado|rejeitado|empate`), `unanime` bool.
- `votos`: `id`, `votacao_id`, `vereador_id`, `voto` (`sim|nao|abstencao|ausente`),
  `UNIQUE (votacao_id, vereador_id)`.
- Portal `/votacoes` e detalhe; lista nominal; se `unanime`, a lista pode ser dispensada, mas o
  registro da votação permanece; filtros por ano/proposição; CSV; 3 anos.
- Sem voto secreto nominal; se houver, o critério não se aplica.

## 5. Contas do Executivo (20.8)

- Reusar `P24` (`julgamento_legislativo`) como documento; P28 mostra a página da Câmara com o ato,
  o teor (ata/resumo) e o resultado.
- Se a Câmara tiver registro próprio, `contas_executivo`: `id`, `exercicio`, `ato` (decreto),
  `teor` (AST), `resultado` (`aprovado|rejeitado`), `data`, `anexo_media_id`; sem duplicar o
  documento de P24 — P28 referencia o id.

## 6. Cotas e verba indenizatória (20.10)

- Dono único: `P17` `viap` (se já existir) ou `P28` `cotas`; **não criar duas tabelas**.
- Campos: regulamentação (norma/Media), mês, parlamentar, categoria, fornecedor, documento,
  valor, descrição; filtros por mês/parlamentar/categoria; CSV; 3 anos; `Atualizado em`.
- Se o cliente não tiver cota/verba, não criar; declarar N/A.

## 7. Atividades legislativas (20.11)

- Relatório por parlamentar: autoria de proposições, relatorias, presença, votações, comissões,
  requerimentos; derivado por consulta agregada (sem tabela paralela).
- Página `/vereadores/{slug}/atividades` + CSV; atualização 30 dias; 3 anos.
- Cuidado com N+1: `whereIn`/agregação; teste de query count.

## 8. Evidência e testes

- [ ] 20.3 proposição com ementa, anexos, situação, autor/relator e tramitação.
- [ ] 20.5 comissões + pautas.
- [ ] 20.7 votação nominal (ou unanimidade registrada).
- [ ] 20.8 ato + teor + resultado.
- [ ] 20.10 cotas/VIAP com regulamentação e valores (dono único).
- [ ] 20.11 atividades por parlamentar.
- [ ] 3 anos, `Atualizado em`, CSV, HTML, sem login, axe, 4 locales.
- [ ] `make check` 2× + `E2E=1`; cobertura; query count.

## 9. Riscos

| Risco | Mitigação |
|---|---|
| Duplicar P18/P17 | P28 referencia os ids; dono único |
| Tramitação sobrescrita | eventos imutáveis; novo evento |
| Voto nominal com PII | só parlamentar; sem eleitor |
| Relatório N+1 | agregação SQL + teste |
| Perfil Câmara contaminar Executivo | gate + grupo ativável |
