# leoparreira21/ctresb-leis architecture

> Architecture diagram of the GitHub repository leoparreira21/ctresb-leis, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/leoparreira21/ctresb-leis
- Repository: https://github.com/leoparreira21/ctresb-leis

## Overview

This repository publishes a Markdown corpus of Brazilian legislation, collected from official sources and converted with structured metadata. The main workflow is source-specific collection, text extraction/conversion, then storage as legal texts; audit tools check identity and completeness. Separate branches cover federal, municipal, SAPL, treaties, and jurisprudence. The README documents the corpus and progress reporting; source-index references support several internal calls. Unsampled implementations are represented only where the README or index establishes their role, so uncertain runtime links are omitted.

Main entry points: [`federal`](https://github.com/leoparreira21/ctresb-leis/tree/main/federal) (Markdown corpus), [`scripts/baixar_organicas_sapl.py`](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_organicas_sapl.py) (SAPL collector), [`scripts/baixar_federal.py`](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_federal.py) (Federal collector), [`scripts/baixar_municipal.py`](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_municipal.py) (Municipal collector)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_collection["Collection"]
  node_federal_collector["Federal collector<br/>[baixar_federal.py]"]
  node_municipal_collector["Municipal collector"]
  node_sapl_collector["SAPL collector"]
  node_jurisprudence_collector["Jurisprudence collector"]
  node_treaties_collector["Treaty collector<br/>[baixar_tratados.py]"]
end

subgraph group_processing["Text processing"]
  node_municipal_diaries["Diary extractor"]
  node_html_converter["HTML to Markdown<br/>[html2md.py]"]
  node_shared_utilities["Collection utilities<br/>[comum.py]"]
  node_fortaleza_converter["Fortaleza converter"]
end

subgraph group_quality["Quality checks"]
  node_sapl_text_audits["SAPL text audits"]
  node_sapl_granularity["SAPL granularity"]
  node_municipal_audit["Municipal audit"]
  node_general_audit["General audit<br/>[auditar.py]"]
  node_annex_integrity["Annex integrity"]
end

subgraph group_corpus["Corpus and tracking"]
  node_published_corpus[("Markdown corpus")]
  node_scope_plan["Coverage plan<br/>[plano.py]"]
  node_progress_report["Progress report<br/>[progresso.py]"]
  node_statistics["Corpus statistics<br/>[estatisticas.py]"]
  node_repository_history["Git history builder"]
  node_signatories["Signatory extraction<br/>[signatarios.py]"]
end

node_official_sources(("Official sources"))

node_official_sources -->|"provides texts"| node_federal_collector
node_official_sources -->|"provides diaries"| node_municipal_collector
node_official_sources -->|"provides laws"| node_sapl_collector
node_official_sources -->|"provides decisions"| node_jurisprudence_collector
node_official_sources -->|"provides treaties"| node_treaties_collector
node_federal_collector -->|"uses"| node_shared_utilities
node_federal_collector -->|"converts with"| node_html_converter
node_municipal_collector -->|"uses"| node_shared_utilities
node_municipal_collector -->|"extracts with"| node_municipal_diaries
node_sapl_collector -->|"uses"| node_shared_utilities
node_sapl_collector -->|"checks"| node_sapl_granularity
node_sapl_collector -->|"converts with"| node_fortaleza_converter
node_sapl_collector -->|"converts with"| node_html_converter
node_treaties_collector -->|"uses"| node_shared_utilities
node_treaties_collector -->|"converts with"| node_html_converter
node_federal_collector -->|"checks annexes"| node_annex_integrity
node_federal_collector -->|"writes texts"| node_published_corpus
node_municipal_collector -->|"writes texts"| node_published_corpus
node_sapl_collector -->|"writes texts"| node_published_corpus
node_jurisprudence_collector -->|"adds decisions"| node_published_corpus
node_treaties_collector -->|"adds treaties"| node_published_corpus
node_sapl_text_audits -->|"uses"| node_municipal_audit
node_municipal_audit -->|"uses"| node_general_audit
node_scope_plan -->|"defines coverage"| node_progress_report
node_progress_report -->|"measures"| node_published_corpus
node_published_corpus -->|"summarized by"| node_statistics
node_published_corpus -->|"forms timeline"| node_repository_history
node_repository_history -->|"extracts authors"| node_signatories

click node_federal_collector "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_federal.py"
click node_municipal_collector "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_municipal.py"
click node_sapl_collector "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_organicas_sapl.py"
click node_jurisprudence_collector "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_jurisprudencia.py"
click node_treaties_collector "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_tratados.py"
click node_municipal_diaries "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/extrair_diario_municipal.py"
click node_html_converter "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/html2md.py"
click node_shared_utilities "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/comum.py"
click node_fortaleza_converter "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/converter_organica_fortaleza.py"
click node_sapl_text_audits "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/auditar_textos_articulados_sapl_v4.py"
click node_sapl_granularity "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/granularidade_sapl.py"
click node_municipal_audit "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/auditar_municipal.py"
click node_general_audit "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/auditar.py"
click node_annex_integrity "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/integridade_anexos_decreto.py"
click node_published_corpus "https://github.com/leoparreira21/ctresb-leis/tree/main/federal"
click node_scope_plan "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/plano.py"
click node_progress_report "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/progresso.py"
click node_statistics "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/estatisticas.py"
click node_repository_history "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/montar_repositorio.py"
click node_signatories "https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/signatarios.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_federal_collector,node_municipal_collector,node_sapl_collector,node_jurisprudence_collector,node_treaties_collector toneBlue
class node_municipal_diaries,node_html_converter,node_shared_utilities,node_fortaleza_converter toneAmber
class node_sapl_text_audits,node_sapl_granularity,node_municipal_audit,node_general_audit,node_annex_integrity toneMint
class node_published_corpus,node_scope_plan,node_progress_report,node_statistics,node_repository_history,node_signatories toneRose
class node_official_sources toneIndigo
```

## Components

### Collection

- [Federal collector](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_federal.py): `scripts/baixar_federal.py`
- [Municipal collector](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_municipal.py): `scripts/baixar_municipal.py`
- [SAPL collector](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_organicas_sapl.py): `scripts/baixar_organicas_sapl.py`
- [Jurisprudence collector](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_jurisprudencia.py): `scripts/baixar_jurisprudencia.py`
- [Treaty collector](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/baixar_tratados.py): `scripts/baixar_tratados.py`

### Text processing

- [Diary extractor](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/extrair_diario_municipal.py): `scripts/extrair_diario_municipal.py`
- [HTML to Markdown](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/html2md.py): `scripts/html2md.py`
- [Collection utilities](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/comum.py): `scripts/comum.py`
- [Fortaleza converter](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/converter_organica_fortaleza.py): `scripts/converter_organica_fortaleza.py`

### Quality checks

- [SAPL text audits](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/auditar_textos_articulados_sapl_v4.py): `scripts/auditar_textos_articulados_sapl_v4.py`
- [SAPL granularity](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/granularidade_sapl.py): `scripts/granularidade_sapl.py`
- [Municipal audit](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/auditar_municipal.py): `scripts/auditar_municipal.py`
- [General audit](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/auditar.py): `scripts/auditar.py`
- [Annex integrity](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/integridade_anexos_decreto.py): `scripts/integridade_anexos_decreto.py`

### Corpus and tracking

- [Markdown corpus](https://github.com/leoparreira21/ctresb-leis/tree/main/federal): `federal`
- [Coverage plan](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/plano.py): `scripts/plano.py`
- [Progress report](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/progresso.py): `scripts/progresso.py`
- [Corpus statistics](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/estatisticas.py): `scripts/estatisticas.py`
- [Git history builder](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/montar_repositorio.py): `scripts/montar_repositorio.py`
- [Signatory extraction](https://github.com/leoparreira21/ctresb-leis/blob/main/scripts/signatarios.py): `scripts/signatarios.py`

### Other components

- **Official sources**

## Connections

- Official sources → Federal collector: provides texts (evidence: `scripts/baixar_federal.py`)
- Official sources → Municipal collector: provides diaries (evidence: `scripts/baixar_municipal.py`)
- Official sources → SAPL collector: provides laws (evidence: `scripts/baixar_organicas_sapl.py`)
- Official sources → Jurisprudence collector: provides decisions (evidence: `README.md`)
- Official sources → Treaty collector: provides treaties (evidence: `README.md`)
- Federal collector → Collection utilities: uses (evidence: `scripts/baixar_federal.py`)
- Federal collector → HTML to Markdown: converts with (evidence: `scripts/baixar_federal.py`)
- Municipal collector → Collection utilities: uses (evidence: `scripts/baixar_municipal.py`)
- Municipal collector → Diary extractor: extracts with (evidence: `scripts/baixar_municipal.py`)
- SAPL collector → Collection utilities: uses (evidence: `scripts/baixar_organicas_sapl.py`)
- SAPL collector → SAPL granularity: checks (evidence: `scripts/baixar_organicas_sapl.py`)
- SAPL collector → Fortaleza converter: converts with (evidence: `scripts/baixar_textos_articulados_sapl.py`)
- SAPL collector → HTML to Markdown: converts with
- Treaty collector → Collection utilities: uses (evidence: `scripts/baixar_tratados.py`)
- Treaty collector → HTML to Markdown: converts with (evidence: `scripts/baixar_tratados.py`)
- Federal collector → Annex integrity: checks annexes (evidence: `scripts/baixar_federal.py`)
- Federal collector → Markdown corpus: writes texts (evidence: `README.md`)
- Municipal collector → Markdown corpus: writes texts (evidence: `README.md`)
- SAPL collector → Markdown corpus: writes texts (evidence: `README.md`)
- Jurisprudence collector → Markdown corpus: adds decisions (evidence: `README.md`)
- Treaty collector → Markdown corpus: adds treaties (evidence: `README.md`)
- SAPL text audits → Municipal audit: uses (evidence: `scripts/auditar_textos_articulados_sapl_v4.py`)
- Municipal audit → General audit: uses (evidence: `scripts/auditar_municipal.py`)
- Coverage plan → Progress report: defines coverage (evidence: `README.md`)
- Progress report → Markdown corpus: measures (evidence: `README.md`)
- Markdown corpus → Corpus statistics: summarized by (evidence: `README.md`)
- Markdown corpus → Git history builder: forms timeline (evidence: `README.md`)
- Git history builder → Signatory extraction: extracts authors (evidence: `README.md`)
