mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 06:43:06 +00:00
feat(C163): partido na lista de lideranças da cidade
This commit is contained in:
parent
d88bc56ddb
commit
00179cfca9
5 changed files with 7 additions and 1 deletions
|
|
@ -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"
|
||||
}
|
||||
],
|
||||
|
|
|
|||
1
docs/changelog/2026-09-15-c163-liderancas-partido.md
Normal file
1
docs/changelog/2026-09-15-c163-liderancas-partido.md
Normal file
|
|
@ -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.
|
||||
|
|
@ -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),
|
||||
})),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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' }),
|
||||
|
|
|
|||
Loading…
Reference in a new issue