-
-
Notifications
You must be signed in to change notification settings - Fork 2
Add deep-inspection analysis: multi-stakeholder SWOT, economic dashboards, newsworthiness scoring #914
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add deep-inspection analysis: multi-stakeholder SWOT, economic dashboards, newsworthiness scoring #914
Changes from 4 commits
56c30c5
f09a8e5
5ba775a
a62319c
721d3f1
1f7ef7f
32c9060
c5f8320
671f395
9c2630a
eceea2c
0fd2b6f
313a154
a68b47b
38f1b7f
9ca6a1b
ec97e78
7a09060
fb687ea
471e4b6
978c86c
e2f89ad
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -6,7 +6,7 @@ on: | |||||
| workflow_dispatch: | ||||||
| inputs: | ||||||
| article_types: | ||||||
| description: Comma-separated article types (week-ahead,month-ahead,weekly-review,monthly-review,committee-reports,propositions,motions,breaking). Leave empty for day-of-week schedule. | ||||||
| description: Comma-separated article types (week-ahead,month-ahead,weekly-review,monthly-review,committee-reports,propositions,motions,breaking,deep-inspection). Leave empty for day-of-week schedule. | ||||||
| required: false | ||||||
| force_generation: | ||||||
| description: Force generation even if recent articles exist | ||||||
|
|
@@ -17,6 +17,15 @@ on: | |||||
| description: 'Languages to generate (en,sv | nordic | eu-core | all | custom comma-separated)' | ||||||
| required: false | ||||||
| default: all | ||||||
| document_ids: | ||||||
| description: 'Comma-separated Riksdag document IDs for deep-inspection analysis (e.g. H901FiU1,H901JuU25)' | ||||||
| required: false | ||||||
| document_urls: | ||||||
| description: 'Comma-separated URLs to specific documents, press releases, or events for deep analysis' | ||||||
|
||||||
| description: 'Comma-separated URLs to specific documents, press releases, or events for deep analysis' | |
| description: 'Comma-separated URLs to specific Riksdag documents for deep analysis' |
Copilot
AI
Mar 7, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The deep-inspection workflow instructions mention using document_ids, document_urls, and focus_topic (Rule 5), but Rule 6 only mentions passing --document-ids and --focus-topic to the script. This leaves out --document-urls and may cause users to think URLs are unsupported even though config parsing was added. Update the instructions to include --document-urls (and keep flag formatting consistent with the script’s --flag=value parsing).
| 6. For `deep-inspection` type: pass `--document-ids` and `--focus-topic` flags to the generation script. | |
| 6. For `deep-inspection` type: pass `--document-ids=<value>`, `--document-urls=<value>`, and `--focus-topic=<value>` flags to the generation script. |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,287 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * @module data-transformers/content-generators/economic-dashboard-section | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * @description Generates an embeddable economic dashboard section powered by | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * World Bank data indicators. Automatically selects relevant indicators based | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * on detected policy domains in the article content, creating Chart.js | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * dashboards with Nordic country comparisons. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * Used by agentic workflows and deep inspection analysis to add economic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * context dashboards to articles when policy areas match World Bank indicators. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * @author Hack23 AB | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * @license Apache-2.0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import { escapeHtml } from '../../html-utils.js'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import type { Language } from '../../types/language.js'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import type { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TemplateSection, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DashboardChartConfig, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DashboardTableConfig, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } from '../../types/article.js'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| type EconomicIndicatorContext, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| findRelevantIndicators, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| getEconomicHeading, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NORDIC_COMPARISON, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } from '../../world-bank-context.js'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import { generateDashboardSection } from './dashboard-section.js'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // --------------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // --------------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** A World Bank data point for dashboard rendering */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| export interface EconomicDataPoint { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Country code (e.g. 'SWE', 'DNK') */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| countryCode: string; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Country name */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| countryName: string; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Indicator ID */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| indicatorId: string; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Year or date string */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| date: string; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Numeric value */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| value: number; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Options for the economic dashboard section generator */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| export interface EconomicDashboardOptions { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Policy domains detected in the article (e.g. ['fiscal', 'defence']) */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| policyDomains: string[]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Optional pre-fetched World Bank data points */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dataPoints?: EconomicDataPoint[]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Target language */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| lang: Language | string; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Custom title override */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| title?: string; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Optional narrative summary */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| summary?: string; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // --------------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Helpers | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // --------------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** Sanitize an indicator ID into a safe HTML element id */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| function sanitizeChartId(indicatorId: string): string { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return indicatorId.replace(/[^a-zA-Z0-9]/g, '-').toLowerCase(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const COUNTRY_COLORS: Readonly<Record<string, string>> = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SWE: '#00d9ff', // Cyan (primary) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DNK: '#ff006e', // Magenta | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NOR: '#ffbe0b', // Yellow | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| FIN: '#83cf39', // Green | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DEU: '#9d4edd', // Purple | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const COUNTRY_BORDER_COLORS: Readonly<Record<string, string>> = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SWE: '#00b8d4', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DNK: '#d4004e', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NOR: '#d4a00b', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| FIN: '#6daf2d', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DEU: '#7d3ebd', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // --------------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Helper functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // --------------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * Find relevant World Bank indicators for a set of policy domains. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| export function findIndicatorsForDomains(domains: string[]): EconomicIndicatorContext[] { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const seen = new Set<string>(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const result: EconomicIndicatorContext[] = []; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for (const domain of domains) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for (const indicator of findRelevantIndicators(domain)) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if (!seen.has(indicator.indicatorId)) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| seen.add(indicator.indicatorId); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| result.push(indicator); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return result; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * Build Chart.js chart configurations from economic data points. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * Groups data by indicator and creates bar charts comparing Nordic countries. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| export function buildEconomicCharts( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| indicators: EconomicIndicatorContext[], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dataPoints: EconomicDataPoint[], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ): DashboardChartConfig[] { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const charts: DashboardChartConfig[] = []; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for (const indicator of indicators) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const points = dataPoints.filter(p => p.indicatorId === indicator.indicatorId); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if (points.length === 0) continue; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Group by country for comparison chart | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const byCountry = new Map<string, EconomicDataPoint[]>(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for (const p of points) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if (!byCountry.has(p.countryCode)) byCountry.set(p.countryCode, []); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| byCountry.get(p.countryCode)!.push(p); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Get latest year's data for comparison bar chart | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const latestYear = points.reduce((max, p) => p.date > max ? p.date : max, ''); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const latestPoints = points.filter(p => p.date === latestYear); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if (latestPoints.length > 0) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const labels = latestPoints.map(p => | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NORDIC_COMPARISON.countryNames[p.countryCode] ?? p.countryName | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const data = latestPoints.map(p => p.value); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const bgColors = latestPoints.map(p => COUNTRY_COLORS[p.countryCode] ?? '#888'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const borderColors = latestPoints.map(p => COUNTRY_BORDER_COLORS[p.countryCode] ?? '#666'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| const labels = latestPoints.map(p => | |
| NORDIC_COMPARISON.countryNames[p.countryCode] ?? p.countryName | |
| ); | |
| const data = latestPoints.map(p => p.value); | |
| const bgColors = latestPoints.map(p => COUNTRY_COLORS[p.countryCode] ?? '#888'); | |
| const borderColors = latestPoints.map(p => COUNTRY_BORDER_COLORS[p.countryCode] ?? '#666'); | |
| // Sort latest points into a stable order for consistent chart rendering | |
| const sortedLatestPoints = [...latestPoints].sort((a, b) => { | |
| const order = NORDIC_COMPARISON.countries; | |
| const indexA = order.indexOf(a.countryCode); | |
| const indexB = order.indexOf(b.countryCode); | |
| const aInOrder = indexA !== -1; | |
| const bInOrder = indexB !== -1; | |
| if (aInOrder && bInOrder) { | |
| return indexA - indexB; | |
| } | |
| if (aInOrder && !bInOrder) { | |
| return -1; | |
| } | |
| if (!aInOrder && bInOrder) { | |
| return 1; | |
| } | |
| return a.countryName.localeCompare(b.countryName); | |
| }); | |
| const labels = sortedLatestPoints.map(p => | |
| NORDIC_COMPARISON.countryNames[p.countryCode] ?? p.countryName | |
| ); | |
| const data = sortedLatestPoints.map(p => p.value); | |
| const bgColors = sortedLatestPoints.map(p => COUNTRY_COLORS[p.countryCode] ?? '#888'); | |
| const borderColors = sortedLatestPoints.map(p => COUNTRY_BORDER_COLORS[p.countryCode] ?? '#666'); |
Copilot
AI
Mar 7, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
buildEconomicTables() hard-codes English column headers ('Country', 'Unit'). When generating non-English articles, the accessibility table fallback will remain English, which undermines the module’s stated 14-language support. Consider localizing these headers (e.g., via L(lang, ...) with new label keys) or otherwise deriving translated header labels based on lang.
Copilot
AI
Mar 7, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The tables use latestPoints in input order as well, which can produce inconsistent row ordering across runs. Sort latestPoints into a stable order (e.g. NORDIC_COMPARISON.countries or localized country name) before mapping to rows so the table is predictable and easier to scan.
Copilot
AI
Mar 7, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
generateEconomicDashboardSection() returns different TemplateSection.id/className depending on whether dataPoints are provided: placeholder mode returns economic-dashboard / economic-dashboard-section, but data mode delegates to generateDashboardSection() which returns article-dashboard / article-dashboard-section. This makes the API surprising and can cause DOM id collisions or styling/anchor inconsistencies. Consider normalizing the returned section metadata (e.g., wrap or clone the delegated section and override id/className consistently for the economic dashboard).
Copilot
AI
Mar 7, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The placeholder section renders policyImplications heading text inside a <p> (e.g. just “Policy Implications”), which reads like a dangling label rather than explanatory text. Consider replacing it with a short localized explanatory sentence (or render it as a subheading) so the placeholder is meaningful to readers.
| <p>${escapeHtml(policyLabel)}</p> | |
| <h3>${escapeHtml(policyLabel)}</h3> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -12,6 +12,9 @@ | |
| * - **month-ahead** — generateMonthAheadContent | ||
| * - **swot-section** — generateSwotSection (embeddable SWOT analysis) | ||
| * - **dashboard-section** — generateDashboardSection (embeddable Chart.js dashboard) | ||
| * - **stakeholder-swot-section** — generateStakeholderSwotSection (multi-stakeholder SWOT) | ||
| * - **economic-dashboard-section** — generateEconomicDashboardSection (World Bank dashboards) | ||
| * - **newsworthiness** — scoreNewsworthiness (strategic content detection) | ||
| * | ||
| * @author Hack23 AB | ||
| * @license Apache-2.0 | ||
|
|
@@ -30,3 +33,9 @@ export { generateSwotSection } from './swot-section.js'; | |
| export type { SwotSectionOptions } from './swot-section.js'; | ||
| export { generateDashboardSection } from './dashboard-section.js'; | ||
| export type { DashboardSectionOptions } from './dashboard-section.js'; | ||
| export { generateStakeholderSwotSection } from './stakeholder-swot-section.js'; | ||
| export type { StakeholderSwotSectionOptions, StakeholderSwot } from './stakeholder-swot-section.js'; | ||
| export { generateEconomicDashboardSection, findIndicatorsForDomains, buildEconomicCharts, buildEconomicTables } from './economic-dashboard-section.js'; | ||
| export type { EconomicDashboardOptions, EconomicDataPoint } from './economic-dashboard-section.js'; | ||
| export { scoreNewsworthiness } from './newsworthiness.js'; | ||
| export type { NewsworthinessScore, NewsworthinessDimension } from './newsworthiness.js'; | ||
|
Comment on lines
+36
to
+41
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The workflow input description now includes
deep-inspection, but the later “Valid article types …” line still omitsdeep-inspection(it currently lists only week-ahead/month-ahead/weekly-review/monthly-review/committee-reports/propositions/motions/breaking). This makes the workflow doc internally inconsistent—please update that later list to includedeep-inspectionas well (to matchscripts/generate-news-enhanced/config.ts:VALID_ARTICLE_TYPES).