From 00179cfca9777601a629af2eb9d05bd4d86142d3 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Tue, 15 Sep 2026 09:02:43 -0300 Subject: [PATCH] =?UTF-8?q?feat(C163):=20partido=20na=20lista=20de=20lider?= =?UTF-8?q?an=C3=A7as=20da=20cidade?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agents/skills/relatorio-cidade/SKILL.md | 2 +- docs/changelog/2026-09-15-c163-liderancas-partido.md | 1 + scripts/lib/cityReportBlocks.mjs | 2 ++ scripts/lib/cityReportResearch.mjs | 1 + tests/unit/cityReportBlocks.unit.spec.ts | 2 ++ 5 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 docs/changelog/2026-09-15-c163-liderancas-partido.md diff --git a/.agents/skills/relatorio-cidade/SKILL.md b/.agents/skills/relatorio-cidade/SKILL.md index 2726727e..3e18387d 100644 --- a/.agents/skills/relatorio-cidade/SKILL.md +++ b/.agents/skills/relatorio-cidade/SKILL.md @@ -103,7 +103,7 @@ URL por item) e emendas lidas da fonte oficial **em tempo de geração**. Págin ], "leaders": [ // últimos prefeitos/vices, vereadores mais votados { - "name": "…", "role": "Ex-prefeito", "period": "2017–2024", + "name": "…", "role": "Ex-prefeito", "party": "PSDB", "period": "2017–2024", "sourceUrl": "https://…", "sourceDate": "2024-08-14" } ], diff --git a/docs/changelog/2026-09-15-c163-liderancas-partido.md b/docs/changelog/2026-09-15-c163-liderancas-partido.md new file mode 100644 index 00000000..3c8383ae --- /dev/null +++ b/docs/changelog/2026-09-15-c163-liderancas-partido.md @@ -0,0 +1 @@ +**C163 — partido na lista de lideranças da cidade (2026-09-15):** a tabela "Lideranças da cidade (pesquisa)" ganhou a coluna **Partido** (nome, papel, partido, período, fonte); o campo `party` entrou no contrato do `research.json` (`leaders`) e na skill. Os seis líderes de Itamaraju ficaram com partido da própria fonte do item (Angênica/Jorge Almeida/Rose/Galego — PSDB; Lê da LR — PL; Evalcy — Solidariedade). Unit 3117/3117, `tsc` verde; PDF regerado. diff --git a/scripts/lib/cityReportBlocks.mjs b/scripts/lib/cityReportBlocks.mjs index e2acda33..6368071c 100644 --- a/scripts/lib/cityReportBlocks.mjs +++ b/scripts/lib/cityReportBlocks.mjs @@ -528,12 +528,14 @@ const buildNetworkSection = ({ snapshot, research }) => { columns: [ { key: 'name', label: 'Nome' }, { key: 'role', label: 'Papel' }, + { key: 'party', label: 'Partido' }, { key: 'period', label: 'Período' }, { key: 'source', label: 'Fonte' }, ], rows: cityLeaders.map((leader) => ({ name: leader.name, role: leader.role, + party: leader.party ?? '—', period: leader.period ?? '—', source: formatDateBr(leader.sourceDate), })), diff --git a/scripts/lib/cityReportResearch.mjs b/scripts/lib/cityReportResearch.mjs index 316ac816..4a875ed3 100644 --- a/scripts/lib/cityReportResearch.mjs +++ b/scripts/lib/cityReportResearch.mjs @@ -259,6 +259,7 @@ export const normalizeResearchInput = (raw, { now = new Date() } = {}) => { leaders.push({ name, role, + party: isNonEmptyString(entry.party) ? entry.party.trim() : null, period: isNonEmptyString(entry.period) ? entry.period.trim() : null, note: isNonEmptyString(entry.note) ? entry.note.trim() : null, sourceUrl, diff --git a/tests/unit/cityReportBlocks.unit.spec.ts b/tests/unit/cityReportBlocks.unit.spec.ts index 672f3294..e9efb0ed 100644 --- a/tests/unit/cityReportBlocks.unit.spec.ts +++ b/tests/unit/cityReportBlocks.unit.spec.ts @@ -64,6 +64,7 @@ const research = normalizeResearchInput( { name: 'Ex-Prefeito', role: 'Prefeito', + party: 'PSDB', period: '2017–2024', sourceUrl: 'https://exemplo.test/lideranca', sourceDate: '2026-03-05', @@ -353,6 +354,7 @@ describe('buildCityReport', () => { )! const rows = leadersBlock.rows as unknown as TableRow[] expect(rows[0].name).toBe('Ex-Prefeito') + expect(rows[0].party).toBe('PSDB') expect(rows[0].period).toBe('2017–2024') expect(leadersBlock.sources![0]).toEqual( expect.objectContaining({ url: 'https://exemplo.test/lideranca' }),