Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
8652d5d
Initial plan
Copilot Mar 13, 2026
aacd59e
feat: add dedicated interpellations content generator with accountabi…
Copilot Mar 13, 2026
a07ce1f
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 14, 2026
6ea42be
fix: address all 7 PR review comments for interpellations generator
Copilot Mar 14, 2026
2979929
fix: address review round 2 — filter "Unknown" author, type mottagare…
Copilot Mar 14, 2026
b0479c6
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 14, 2026
ffe1b62
fix: address review round 3 — compound minister regex, pillar transit…
Copilot Mar 14, 2026
39975b6
fix: address review round 4 — data.documents fallback with length che…
Copilot Mar 14, 2026
d7418cb
fix: address review round 5 — remove misleading 'ip' doktyp, expand m…
Copilot Mar 15, 2026
2ab8ceb
feat: add interpellation-specific 'ip' type key to getDomainSpecificA…
Copilot Mar 15, 2026
c2e0bf8
fix: simplify redundant Swedish phrasing in ip generic fallback
Copilot Mar 15, 2026
0b2b7d8
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 15, 2026
f2cec98
fix: Unicode-aware minister regex and Example 3 party/date field
Copilot Mar 15, 2026
7b5a079
fix: correct test description for försvarsministern Unicode test
Copilot Mar 15, 2026
cc9bded
fix: resolve merge conflicts with main branch - unify interpellations…
Copilot Mar 15, 2026
dc370a4
fix: resolve merge conflicts with main branch (6 files) — unify inter…
Copilot Mar 15, 2026
d053fd7
Merge branch 'main' into copilot/enhance-content-generators-pipeline …
Copilot Mar 15, 2026
1bac3e0
fix: resolve merge conflicts with main — adopt main's interpellations…
Copilot Mar 15, 2026
62f241d
Merge branch 'main' into copilot/enhance-content-generators-pipeline …
Copilot Mar 15, 2026
d5bdcba
Merge branch 'main' into copilot/enhance-content-generators-pipeline
Copilot Mar 15, 2026
19302d7
fix: remove duplicate mottagare type definition re-introduced by merge
Copilot Mar 15, 2026
d3a1763
test: improve interpellations tests with positive assertions for head…
Copilot Mar 15, 2026
43ac876
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 15, 2026
8baa862
fix: localize ip fallback text for all 14 languages in generatePolicy…
Copilot Mar 15, 2026
cf0efda
style: rename test variables deDe/frFr to deContent/frContent per cod…
Copilot Mar 15, 2026
767ec54
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 15, 2026
08ee3c1
fix: correct da/no/fi ipFallback to reference Swedish Riksdag, not ot…
Copilot Mar 15, 2026
ca4de6a
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 15, 2026
2f59a74
fix: remove duplicate interpellations JSDoc bullet and fix Finnish ip…
Copilot Mar 15, 2026
ad4ab83
refactor: hoist IP_FALLBACK to module-level, update JSDoc, consolidat…
Copilot Mar 15, 2026
eb1c5d4
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 16, 2026
5aa4b33
fix: replace weak toContain('3') assertion with specific '3 interpell…
Copilot Mar 16, 2026
2202173
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 16, 2026
4b63e85
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 16, 2026
2997ec7
Merge branch 'main' into copilot/enhance-content-generators-pipeline
pethers Mar 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions scripts/data-transformers/constants/content-labels-part1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,15 @@ export const CONTENT_LABELS_PART1: Partial<Record<string, ContentLabelSet>> = {
propsBreakdown: (n: number): string => `The government has submitted ${n} new propositions, signalling its policy priorities and the pace of its legislative agenda. Each proposition must navigate committee review and chamber debate, providing insight into the coalition's strategic direction and its ability to build cross-party support.`,
motionsBreakdown: (n: number): string => `Opposition MPs have filed ${n} new motions, mapping the political fault lines in the current Riksdag. These motions reveal not just policy disagreements but the strategic positioning of parties as they prepare for the next electoral contest.`
,
noInterpellations: 'No interpellations available at this time.',
interpellationDefault: 'Parliamentary interpellation addressed to a minister.',
interpellationsBreakdown: (n: number): string => `Opposition MPs have filed ${n} interpellations demanding ministerial accountability. Interpellations are formal parliamentary questions that ministers must answer in chamber debate, making them a key tool of parliamentary scrutiny.`,
debateDynamics: 'Debate Dynamics & Accountability',
ministerAccountability: 'Minister Response',
accountabilityAnalysis: 'Accountability Analysis',
readFullInterpellation: 'Read the full interpellation',
interpellationBy: 'Interpellation by',

committeeCountContext: (n: number): string => `${n} reports from this committee signal intensive legislative work within its portfolio.`,
committeeActivityTakeaway: (committees: string, extra: number): string => extra > 0 ? `Parliamentary committees have been active across ${committees} and ${extra} further policy domains.` : `Parliamentary committees have been active across ${committees}.`,
committeeMomentumTakeaway: (n: number): string => `A total of ${n} reports demonstrates sustained legislative momentum and ongoing policy prioritisation.`,
Expand Down Expand Up @@ -170,6 +179,15 @@ export const CONTENT_LABELS_PART1: Partial<Record<string, ContentLabelSet>> = {
propsBreakdown: (n: number): string => `Regeringen har överlämnat ${n} nya propositioner, som signalerar dess politiska prioriteringar och takten i den lagstiftande agendan.`,
motionsBreakdown: (n: number): string => `Oppositionsledamöter har lämnat in ${n} nya motioner som kartlägger de politiska skiljelinjerna i nuvarande riksdag.`
,
noInterpellations: 'Inga interpellationer tillgängliga för tillfället.',
interpellationDefault: 'Riksdagsinterpellation till en minister.',
interpellationsBreakdown: (n: number): string => `Oppositionsledamöter har lämnat in ${n} interpellationer som kräver ministeransvar. Interpellationer är formella parlamentariska frågor som ministrar måste besvara i kammaren, vilket gör dem till ett viktigt verktyg för parlamentarisk granskning.`,
debateDynamics: 'Debattdynamik och ansvarsutkrävande',
ministerAccountability: 'Ministersvar',
accountabilityAnalysis: 'Ansvarsutkrävande',
readFullInterpellation: 'Läs hela interpellationen',
interpellationBy: 'Interpellation av',

committeeCountContext: (n: number): string => `${n} betänkanden från detta utskott signalerar intensivt lagstiftningsarbete inom dess ansvarsområde.`,
committeeActivityTakeaway: (committees: string, extra: number): string => extra > 0 ? `Riksdagens utskott har varit aktiva inom ${committees} och ${extra} ytterligare områden.` : `Riksdagens utskott har varit aktiva inom ${committees}.`,
committeeMomentumTakeaway: (n: number): string => `Totalt ${n} betänkanden visar lagstiftande momentum och pågående politisk prioritering.`,
Expand Down Expand Up @@ -271,6 +289,15 @@ export const CONTENT_LABELS_PART1: Partial<Record<string, ContentLabelSet>> = {
propsBreakdown: (n: number): string => `Regeringen har fremsat ${n} nye lovforslag.`,
motionsBreakdown: (n: number): string => `Oppositionsmedlemmer har indgivet ${n} nye forslag.`
,
noInterpellations: 'Ingen interpellationer tilgængelige på nuværende tidspunkt.',
interpellationDefault: 'Parlamentarisk interpellation til en minister.',
interpellationsBreakdown: (n: number): string => `Oppositionsmedlemmer har indgivet ${n} interpellationer, der kræver ministeransvar.`,
debateDynamics: 'Debatdynamik og ansvarlighed',
ministerAccountability: 'Ministersvar',
accountabilityAnalysis: 'Ansvarlighed',
readFullInterpellation: 'Læs den fulde interpellation',
interpellationBy: 'Interpellation af',

committeeCountContext: (n: number): string => `${n} betænkninger fra dette udvalg signalerer intensivt lovgivningsarbejde.`,
committeeActivityTakeaway: (committees: string, extra: number): string => extra > 0 ? `Parlamentets udvalg har været aktive inden for ${committees} og ${extra} yderligere politikområder.` : `Parlamentets udvalg har været aktive inden for ${committees}.`,
committeeMomentumTakeaway: (n: number): string => `I alt ${n} betænkninger viser vedvarende lovgivningsmæssig fremdrift.`,
Expand Down Expand Up @@ -372,6 +399,15 @@ export const CONTENT_LABELS_PART1: Partial<Record<string, ContentLabelSet>> = {
propsBreakdown: (n: number): string => `Regjeringen har fremmet ${n} nye proposisjoner.`,
motionsBreakdown: (n: number): string => `Opposisjonsmedlemmer har innsendt ${n} nye forslag.`
,
noInterpellations: 'Ingen interpellasjoner tilgjengelige for øyeblikket.',
interpellationDefault: 'Parlamentarisk interpellasjon til en statsråd.',
interpellationsBreakdown: (n: number): string => `Opposisjonsmedlemmer har innsendt ${n} interpellasjoner som krever statsrådets ansvar.`,
debateDynamics: 'Debattdynamikk og ansvarlighet',
ministerAccountability: 'Statsrådssvar',
accountabilityAnalysis: 'Ansvarlighetsanalyse',
readFullInterpellation: 'Les hele interpellasjonen',
interpellationBy: 'Interpellasjon av',

committeeCountContext: (n: number): string => `${n} innstillinger fra denne komiteen signaliserer intensivt lovgivningsarbeid.`,
committeeActivityTakeaway: (committees: string, extra: number): string => extra > 0 ? `Stortingets komiteer har vært aktive innen ${committees} og ${extra} ytterligere politikkområder.` : `Stortingets komiteer har vært aktive innen ${committees}.`,
committeeMomentumTakeaway: (n: number): string => `Totalt ${n} innstillinger viser vedvarende lovgivende fremdrift.`,
Expand Down Expand Up @@ -473,6 +509,15 @@ export const CONTENT_LABELS_PART1: Partial<Record<string, ContentLabelSet>> = {
propsBreakdown: (n: number): string => `Hallitus on jättänyt ${n} uutta esitystä.`,
motionsBreakdown: (n: number): string => `Oppositiokansanedustajat ovat jättäneet ${n} uutta aloitetta.`
,
noInterpellations: 'Ei välikysymyksiä saatavilla tällä hetkellä.',
interpellationDefault: 'Parlamentaarinen välikysymys ministerille.',
interpellationsBreakdown: (n: number): string => `Oppositiokansanedustajat ovat jättäneet ${n} välikysymystä ministereiden vastuullisuuden vaatimiseksi.`,
debateDynamics: 'Väittelyn dynamiikka ja vastuullisuus',
ministerAccountability: 'Ministerin vastaus',
accountabilityAnalysis: 'Vastuullisuusanalyysi',
readFullInterpellation: 'Lue koko välikysymys',
interpellationBy: 'Välikysymys esittäjältä',

committeeCountContext: (n: number): string => `${n} mietintöä tästä valiokunnasta osoittavat intensiivistä lainsäädäntötyötä.`,
committeeActivityTakeaway: (committees: string, extra: number): string => extra > 0 ? `Eduskunnan valiokunnat ovat olleet aktiivisia aloilla ${committees} ja ${extra} muulla politiikka-alueella.` : `Eduskunnan valiokunnat ovat olleet aktiivisia aloilla ${committees}.`,
committeeMomentumTakeaway: (n: number): string => `Yhteensä ${n} mietintöä osoittaa jatkuvaa lainsäädännöllistä vauhtia.`,
Expand Down Expand Up @@ -574,6 +619,15 @@ export const CONTENT_LABELS_PART1: Partial<Record<string, ContentLabelSet>> = {
propsBreakdown: (n: number): string => `Die Regierung hat ${n} neue Vorlagen eingebracht.`,
motionsBreakdown: (n: number): string => `Oppositionsabgeordnete haben ${n} neue Anträge eingereicht.`
,
noInterpellations: 'Derzeit keine Interpellationen verfügbar.',
interpellationDefault: 'Parlamentarische Interpellation an einen Minister.',
interpellationsBreakdown: (n: number): string => `Oppositionsabgeordnete haben ${n} Interpellationen eingereicht, um Ministerverantwortung einzufordern.`,
debateDynamics: 'Debattendynamik und Verantwortlichkeit',
ministerAccountability: 'Ministerantwort',
accountabilityAnalysis: 'Verantwortlichkeitsanalyse',
readFullInterpellation: 'Vollständige Interpellation lesen',
interpellationBy: 'Interpellation von',

committeeCountContext: (n: number): string => `${n} Berichte dieses Ausschusses signalisieren intensive Gesetzgebungsarbeit.`,
committeeActivityTakeaway: (committees: string, extra: number): string => extra > 0 ? `Die Parlamentsausschüsse waren in den Bereichen ${committees} und ${extra} weiteren Politikfeldern aktiv.` : `Die Parlamentsausschüsse waren in den Bereichen ${committees} aktiv.`,
committeeMomentumTakeaway: (n: number): string => `Insgesamt ${n} Berichte zeugen von anhaltendem Gesetzgebungsmomentum.`,
Expand Down Expand Up @@ -675,6 +729,15 @@ export const CONTENT_LABELS_PART1: Partial<Record<string, ContentLabelSet>> = {
propsBreakdown: (n: number): string => `Le gouvernement a soumis ${n} nouvelles propositions.`,
motionsBreakdown: (n: number): string => `Les députés de l'opposition ont déposé ${n} nouvelles motions.`
,
noInterpellations: 'Aucune interpellation disponible pour le moment.',
interpellationDefault: 'Interpellation parlementaire adressée à un ministre.',
interpellationsBreakdown: (n: number): string => `Les députés de l'opposition ont déposé ${n} interpellations exigeant la responsabilité ministérielle.`,
debateDynamics: 'Dynamique du débat et responsabilité',
ministerAccountability: 'Réponse du ministre',
accountabilityAnalysis: 'Analyse de la responsabilité',
readFullInterpellation: 'Lire l\'interpellation complète',
interpellationBy: 'Interpellation par',

committeeCountContext: (n: number): string => `${n} rapports de cette commission témoignent d'un travail législatif intensif.`,
committeeActivityTakeaway: (committees: string, extra: number): string => extra > 0 ? `Les commissions parlementaires ont été actives dans les domaines ${committees} et ${extra} autres domaines politiques.` : `Les commissions parlementaires ont été actives dans les domaines ${committees}.`,
committeeMomentumTakeaway: (n: number): string => `Un total de ${n} rapports démontre un élan législatif soutenu.`,
Expand Down
Loading
Loading