# P28 — Legislativo completo: proposições, comissões, votações e cotas

| Campo | Valor |
|---|---|
| Programa | F7+ — operação, estrutura e conteúdo |
| Status | `planejado` (condicionado a `structure_type=camara`) |
| Depende de | P10, P18, P24 |
| Habilita | P29 |
| Tamanho | **G** (5–7 sessões) |
| ADRs | ADR-054 (VIAP/cotas), ADR-001/002/009/010, ADR-017/019, ADR-026/027, ADR-033/035, ADR-043 |

## 1. Objetivo

Fechar os critérios do **Poder Legislativo** que P18 não cobre: projetos e tramitação, pauta de
comissões, votações nominais, contas do Executivo, cotas/verba indenizatória e relatório de
atividades. P18 publica sessões, pauta do plenário, vereadores e atas; P28 publica o processo
legislativo.

**Resultado observável:** o cidadão acompanha um projeto do protocolo à votação, vê a pauta da
comissão, a lista nominal de votos, as contas do prefeito apreciadas e as cotas do vereador, sem
duplicar P18/P17.

## 2. Escopo fechado

### S1 — Proposições e tramitação (20.3)

- `proposicoes`, `proposicao_tramitacoes`, `proposicao_anexos` conforme backlog `20-legislativo`
  §2.
- `/proposicoes` e detalhe com linha do tempo (ementa, anexos, situação, autor/relator).
- Filtros tipo/ano/autor/situação; CSV; 3 anos; 30 dias; `Atualizado em`.
- Tramitação imutável; correção = novo evento.

### S2 — Comissões e pautas (20.5)

- `comissoes`, `comissao_membros`, `comissao_pautas`, `comissao_pauta_itens`.
- `/comissoes` e detalhe com pauta; filtro por comissão/ano; CSV/PDF pesquisável; 3 anos.
- Pauta vinculada à comissão e à sessão quando houver.

### S3 — Votações nominais (20.7)

- `votacoes` + `votos`; `UNIQUE (votacao_id, vereador_id)`.
- `/votacoes` e detalhe; lista nominal; se unânime, registrar `unanime=true` (lista dispensada).
- Filtros ano/proposição; CSV; 3 anos; sem voto de eleitor.

### S4 — Contas do Executivo + cotas/atividades (20.8, 20.10, 20.11)

- 20.8: página da Câmara com ato, teor (ata/resumo), resultado e link para `planejamento` (P24);
  sem duplicar o documento.
- 20.10: **D19:** dono único `Transparencia/Viap` (P17); P28 apenas lê/apresenta (sem tabela
  `Legislativo/Cotas`). Regulamentação + valores/beneficiários; filtros; CSV; 3 anos.
- 20.11: relatório por parlamentar derivado de proposições, relatorias, presença, votos,
  comissões e requerimentos; página + CSV; agregação SQL; 3 anos.

### S5 — Integração e fechamento

- Cross-links: proposição ↔ votação ↔ sessão/pauta ↔ ata (P18); vereador ↔ atividades.
- Grupo `Legislativo` ativável (ADR-034); portal executivo não quebra.
- E2E: proposição/tramitação, comissão/pauta, votação, contas, cotas, atividades; CSV; 4 locales.
- `make check` 2× + `E2E=1`; cobertura ≥90%; query count.

## 3. Fora de escopo

- Processo legislativo em tempo real, assinatura digital (P13).
- Player embutido de vídeo (ADR-002); link only.
- Multi-tenant/regional; consórcios/estatais.
- Duplicar P18/P17/P24.

## 4. Fatias de sessão

| Sessão | Entrega | Prova | Depende |
|---|---|---|---|
| **P28.S1** | proposições + tramitação | linha do tempo; filtros; CSV | P10/P18 |
| **P28.S2** | comissões + pautas | pauta/comissão; PDF/CSV | S1 |
| **P28.S3** | votações nominais | unique; unânime; CSV | S1/P18 |
| **P28.S4** | contas + cotas + atividades | sem duplicar; agregação; CSV | S1–S3/P17/P24 |
| **P28.S5** | integração + E2E/docs | grupo ativável; a11y; 2× check | S1–S4 |

## 5. Contratos e dados

- **Módulos:** `Legislativo/{Proposicoes,Comissoes,Votacoes,ContasExecutivo,Atividades}`;
  `Transparencia/Viap` (P17) como dono de cotas.
- **Tabelas:** `proposicoes`, `proposicao_tramitacoes`, `proposicao_anexos`, `comissoes`,
  `comissao_membros`, `comissao_pautas`, `comissao_pauta_itens`, `votacoes`, `votos`,
  `contas_executivo`.
- **Rotas:** `legislativo.proposicoes.*`, `legislativo.comissoes.*`, `legislativo.votacoes.*`,
  `legislativo.contas.*`, `legislativo.atividades.*`.
- **Portas:** `SitemapSource`, `SearchSource`, `DatasetSource`; export via `Services\OpenData` (P5.5).
- **Eventos:** `legislativo.{proposicao,comissao,votacao,contas}_*`.

## 6. DoD

- [ ] 20.3 proposição com ementa/anexos/situação/autor/relator e tramitação.
- [ ] 20.5 comissões + pautas; 20.7 votação nominal/unânime.
- [ ] 20.8 ato + teor + resultado; 20.10 cotas/VIAP; 20.11 atividades.
- [ ] Sem duplicar P18/P17/P24; dono único.
- [ ] HTML, sem login, CSV, `Atualizado em`, 3 anos, 4 locales, axe.
- [ ] `make check` 2× + `E2E=1`; cobertura ≥90%; query count.

## Fechamento — ficha de revisão

> **Obrigatório antes de fechar:** criar `_to_revision/P28-legislativo-completo.md` e seguir
> `_to_revision/README.md` + `_to_revision/PROTOCOLO.md` (v2.0). A ficha não é gate de build; é a
> entrada da fila de revisão profunda.

- Cabeçalho: fase, `kd` épico/tasks/slices, âncoras (este arquivo, ADRs e código) e status
  `⬜ pendente` → `🟡 em revisão` → `✅ revisado` / `🔧 com correções`.
- Conteúdo: o que foi implementado, arquivos/superfícies a revisar, checklist D1–D14 aplicável,
  riscos e observações.
- Fechamento: preencher “Notas da revisão” com data/revisor/resultado e achados (`kd write
  --anchor`), atualizar a fila em `_to_revision/README.md` e `_to_revision/_inventario.md`.
- Achado com correção exige teste vermelho→verde; a fase só é `closed` no `kd` com a ficha
  registrada.

## 7. Riscos

| Risco | Mitigação |
|---|---|
| Duplicar P18/P17 | referenciar ids; dono único |
| Tramitação sobrescrita | eventos imutáveis |
| Voto nominal com PII | só parlamentar |
| Relatório N+1 | agregação SQL; query count |
| Perfil Câmara contaminar Executivo | gate + grupo ativável |
| Cotas em duas tabelas | P17 é dono; P28 linka |

## 8. Retomada

```bash
kd prime
kd ask "PNTP legislativo proposições comissões votações cotas atividades"
kd task list --ready
```

Ler: `wiki/backlog/pntp-2026/20-legislativo.md` → `PNTP.md` §4 (dim. 20) → P10/P18/P24.
