riksdagsmonitor 0.8.15 → 0.8.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/dashboards/coalition-dashboard.d.ts.map +1 -1
- package/dist/lib/dashboards/coalition-dashboard.js +25 -9
- package/dist/lib/dashboards/coalition-dashboard.js.map +1 -1
- package/dist/lib/dashboards/coalition-loader.d.ts.map +1 -1
- package/dist/lib/dashboards/coalition-loader.js +68 -32
- package/dist/lib/dashboards/coalition-loader.js.map +1 -1
- package/dist/lib/shared/chart-factory.d.ts +9 -2
- package/dist/lib/shared/chart-factory.d.ts.map +1 -1
- package/dist/lib/shared/chart-factory.js +9 -2
- package/dist/lib/shared/chart-factory.js.map +1 -1
- package/dist/lib/shared/theme.d.ts +1 -18
- package/dist/lib/shared/theme.d.ts.map +1 -1
- package/dist/lib/shared/theme.js +1 -18
- package/dist/lib/shared/theme.js.map +1 -1
- package/dist/scripts/analysis-reader.d.ts +2 -1
- package/dist/scripts/analysis-reader.d.ts.map +1 -1
- package/dist/scripts/analysis-reader.js.map +1 -1
- package/dist/scripts/data-transformers/content-generators/index.d.ts +32 -4
- package/dist/scripts/data-transformers/content-generators/index.d.ts.map +1 -1
- package/dist/scripts/data-transformers/content-generators/index.js +4 -2
- package/dist/scripts/data-transformers/content-generators/index.js.map +1 -1
- package/dist/scripts/data-transformers/content-generators/shared.d.ts +44 -2
- package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +1 -1
- package/dist/scripts/data-transformers/content-generators/shared.js +9 -3
- package/dist/scripts/data-transformers/content-generators/shared.js.map +1 -1
- package/dist/scripts/generate-news-enhanced/config.d.ts +5 -4
- package/dist/scripts/generate-news-enhanced/config.d.ts.map +1 -1
- package/dist/scripts/generate-news-enhanced/config.js +3 -3
- package/dist/scripts/generate-news-enhanced/config.js.map +1 -1
- package/dist/scripts/generate-news-enhanced/generators.d.ts.map +1 -1
- package/dist/scripts/generate-news-enhanced/generators.js +38 -15
- package/dist/scripts/generate-news-enhanced/generators.js.map +1 -1
- package/dist/scripts/generate-news-enhanced/helpers.d.ts +1 -2
- package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +1 -1
- package/dist/scripts/generate-news-enhanced/helpers.js +31 -1
- package/dist/scripts/generate-news-enhanced/helpers.js.map +1 -1
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +12 -1
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +1 -1
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js +48 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +1 -1
- package/dist/scripts/news-types/breaking-news.d.ts.map +1 -1
- package/dist/scripts/news-types/breaking-news.js +5 -1
- package/dist/scripts/news-types/breaking-news.js.map +1 -1
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +64 -1
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +1 -1
- package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +1 -1
- package/dist/scripts/pre-article-analysis.d.ts.map +1 -1
- package/dist/scripts/pre-article-analysis.js +20 -7
- package/dist/scripts/pre-article-analysis.js.map +1 -1
- package/dist/scripts/types/article.d.ts +33 -3
- package/dist/scripts/types/article.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/scripts/ai-analysis/coalition-detector.d.ts +0 -28
- package/dist/scripts/ai-analysis/coalition-detector.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/coalition-detector.js +0 -242
- package/dist/scripts/ai-analysis/coalition-detector.js.map +0 -1
- package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts +0 -73
- package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/dashboard-analyzer.js +0 -511
- package/dist/scripts/ai-analysis/dashboard-analyzer.js.map +0 -1
- package/dist/scripts/ai-analysis/document-analyzer.d.ts +0 -196
- package/dist/scripts/ai-analysis/document-analyzer.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/document-analyzer.js +0 -1001
- package/dist/scripts/ai-analysis/document-analyzer.js.map +0 -1
- package/dist/scripts/ai-analysis/domains/index.d.ts +0 -15
- package/dist/scripts/ai-analysis/domains/index.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/domains/index.js +0 -494
- package/dist/scripts/ai-analysis/domains/index.js.map +0 -1
- package/dist/scripts/ai-analysis/helpers.d.ts +0 -43
- package/dist/scripts/ai-analysis/helpers.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/helpers.js +0 -79
- package/dist/scripts/ai-analysis/helpers.js.map +0 -1
- package/dist/scripts/ai-analysis/index.d.ts +0 -15
- package/dist/scripts/ai-analysis/index.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/index.js +0 -14
- package/dist/scripts/ai-analysis/index.js.map +0 -1
- package/dist/scripts/ai-analysis/pipeline.d.ts +0 -41
- package/dist/scripts/ai-analysis/pipeline.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/pipeline.js +0 -208
- package/dist/scripts/ai-analysis/pipeline.js.map +0 -1
- package/dist/scripts/ai-analysis/political-significance.d.ts +0 -63
- package/dist/scripts/ai-analysis/political-significance.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/political-significance.js +0 -227
- package/dist/scripts/ai-analysis/political-significance.js.map +0 -1
- package/dist/scripts/ai-analysis/quality-assessor.d.ts +0 -104
- package/dist/scripts/ai-analysis/quality-assessor.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/quality-assessor.js +0 -554
- package/dist/scripts/ai-analysis/quality-assessor.js.map +0 -1
- package/dist/scripts/ai-analysis/swot/index.d.ts +0 -56
- package/dist/scripts/ai-analysis/swot/index.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/swot/index.js +0 -360
- package/dist/scripts/ai-analysis/swot/index.js.map +0 -1
- package/dist/scripts/ai-analysis/swot/placeholders.d.ts +0 -30
- package/dist/scripts/ai-analysis/swot/placeholders.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/swot/placeholders.js +0 -381
- package/dist/scripts/ai-analysis/swot/placeholders.js.map +0 -1
- package/dist/scripts/ai-analysis/types.d.ts +0 -333
- package/dist/scripts/ai-analysis/types.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/types.js +0 -19
- package/dist/scripts/ai-analysis/types.js.map +0 -1
- package/dist/scripts/ai-analysis/visualisation/index.d.ts +0 -15
- package/dist/scripts/ai-analysis/visualisation/index.d.ts.map +0 -1
- package/dist/scripts/ai-analysis/visualisation/index.js +0 -179
- package/dist/scripts/ai-analysis/visualisation/index.js.map +0 -1
- package/dist/scripts/analysis-framework/cross-reference.d.ts +0 -35
- package/dist/scripts/analysis-framework/cross-reference.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/cross-reference.js +0 -290
- package/dist/scripts/analysis-framework/cross-reference.js.map +0 -1
- package/dist/scripts/analysis-framework/index.d.ts +0 -79
- package/dist/scripts/analysis-framework/index.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/index.js +0 -133
- package/dist/scripts/analysis-framework/index.js.map +0 -1
- package/dist/scripts/analysis-framework/lenses/citizen.d.ts +0 -29
- package/dist/scripts/analysis-framework/lenses/citizen.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/lenses/citizen.js +0 -220
- package/dist/scripts/analysis-framework/lenses/citizen.js.map +0 -1
- package/dist/scripts/analysis-framework/lenses/economic.d.ts +0 -29
- package/dist/scripts/analysis-framework/lenses/economic.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/lenses/economic.js +0 -227
- package/dist/scripts/analysis-framework/lenses/economic.js.map +0 -1
- package/dist/scripts/analysis-framework/lenses/government.d.ts +0 -32
- package/dist/scripts/analysis-framework/lenses/government.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/lenses/government.js +0 -265
- package/dist/scripts/analysis-framework/lenses/government.js.map +0 -1
- package/dist/scripts/analysis-framework/lenses/international.d.ts +0 -29
- package/dist/scripts/analysis-framework/lenses/international.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/lenses/international.js +0 -248
- package/dist/scripts/analysis-framework/lenses/international.js.map +0 -1
- package/dist/scripts/analysis-framework/lenses/media.d.ts +0 -29
- package/dist/scripts/analysis-framework/lenses/media.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/lenses/media.js +0 -211
- package/dist/scripts/analysis-framework/lenses/media.js.map +0 -1
- package/dist/scripts/analysis-framework/lenses/opposition.d.ts +0 -29
- package/dist/scripts/analysis-framework/lenses/opposition.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/lenses/opposition.js +0 -234
- package/dist/scripts/analysis-framework/lenses/opposition.js.map +0 -1
- package/dist/scripts/analysis-framework/methodology-types.d.ts +0 -309
- package/dist/scripts/analysis-framework/methodology-types.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/methodology-types.js +0 -38
- package/dist/scripts/analysis-framework/methodology-types.js.map +0 -1
- package/dist/scripts/analysis-framework/political-classification.d.ts +0 -58
- package/dist/scripts/analysis-framework/political-classification.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/political-classification.js +0 -414
- package/dist/scripts/analysis-framework/political-classification.js.map +0 -1
- package/dist/scripts/analysis-framework/political-risk-assessment.d.ts +0 -74
- package/dist/scripts/analysis-framework/political-risk-assessment.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/political-risk-assessment.js +0 -656
- package/dist/scripts/analysis-framework/political-risk-assessment.js.map +0 -1
- package/dist/scripts/analysis-framework/political-threat-analysis.d.ts +0 -65
- package/dist/scripts/analysis-framework/political-threat-analysis.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/political-threat-analysis.js +0 -553
- package/dist/scripts/analysis-framework/political-threat-analysis.js.map +0 -1
- package/dist/scripts/analysis-framework/significance-scorer.d.ts +0 -62
- package/dist/scripts/analysis-framework/significance-scorer.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/significance-scorer.js +0 -196
- package/dist/scripts/analysis-framework/significance-scorer.js.map +0 -1
- package/dist/scripts/analysis-framework/types.d.ts +0 -138
- package/dist/scripts/analysis-framework/types.d.ts.map +0 -1
- package/dist/scripts/analysis-framework/types.js +0 -12
- package/dist/scripts/analysis-framework/types.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts +0 -89
- package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js +0 -667
- package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts +0 -83
- package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js +0 -219
- package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js.map +0 -1
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module analysis-framework/lenses/government
|
|
3
|
-
* @description Government perspective lens for parliamentary document analysis.
|
|
4
|
-
*
|
|
5
|
-
* Evaluates every document from the government's vantage point:
|
|
6
|
-
* - Policy execution feasibility
|
|
7
|
-
* - Budget and resource implications
|
|
8
|
-
* - Coalition agreement alignment
|
|
9
|
-
* - International commitment compliance
|
|
10
|
-
*
|
|
11
|
-
* The lens produces a `PerspectiveAnalysis` with SWOT contributions,
|
|
12
|
-
* dashboard metrics, and mindmap nodes ready for downstream generators.
|
|
13
|
-
*
|
|
14
|
-
* @author Hack23 AB
|
|
15
|
-
* @license Apache-2.0
|
|
16
|
-
*/
|
|
17
|
-
import { detectPolicyDomains } from '../../data-transformers/policy-analysis.js';
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
// Internal keyword banks
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
21
|
-
/** Keywords that indicate a document involves coalition-critical decisions */
|
|
22
|
-
const COALITION_CRITICAL_KEYWORDS = [
|
|
23
|
-
'tidöavtal', 'tidöpartner', 'samarbetspartier', 'januariavtal',
|
|
24
|
-
'samarbetspartierna', 'sd-stöd', 'budgetram', 'budgetproposition',
|
|
25
|
-
'statsbudget', 'ramproposition', 'takpolitik',
|
|
26
|
-
];
|
|
27
|
-
/** Keywords signalling budget pressure or fiscal constraint */
|
|
28
|
-
const FISCAL_PRESSURE_KEYWORDS = [
|
|
29
|
-
'kostnadsökning', 'budgetbelastning', 'finansiering', 'finansiellt utrymme',
|
|
30
|
-
'anslagsökning', 'anslagnedskärning', 'nettoutgifter', 'statsskuld',
|
|
31
|
-
'lånebehov', 'underskott', 'surplus', 'deficit', 'fiscal gap',
|
|
32
|
-
'savings requirement', 'besparing',
|
|
33
|
-
];
|
|
34
|
-
/** High-influence committee codes for the government lens */
|
|
35
|
-
const GOV_HIGH_INFLUENCE_COMMITTEES = new Set(['FiU', 'KU', 'FöU', 'UU', 'JuU']);
|
|
36
|
-
// ---------------------------------------------------------------------------
|
|
37
|
-
// Localised lens labels
|
|
38
|
-
// ---------------------------------------------------------------------------
|
|
39
|
-
const LENS_LABELS = {
|
|
40
|
-
en: { lensName: 'Government Perspective', stakeholder: 'Government' },
|
|
41
|
-
sv: { lensName: 'Regeringsperspektiv', stakeholder: 'Regeringen' },
|
|
42
|
-
da: { lensName: 'Regeringsperspektiv', stakeholder: 'Regeringen' },
|
|
43
|
-
no: { lensName: 'Regjeringsperspektiv', stakeholder: 'Regjeringen' },
|
|
44
|
-
fi: { lensName: 'Hallituksen näkökulma', stakeholder: 'Hallitus' },
|
|
45
|
-
de: { lensName: 'Regierungsperspektive', stakeholder: 'Regierung' },
|
|
46
|
-
fr: { lensName: 'Perspective gouvernementale', stakeholder: 'Gouvernement' },
|
|
47
|
-
es: { lensName: 'Perspectiva gubernamental', stakeholder: 'Gobierno' },
|
|
48
|
-
nl: { lensName: 'Regeringsperspectief', stakeholder: 'Regering' },
|
|
49
|
-
ar: { lensName: 'منظور الحكومة', stakeholder: 'الحكومة' },
|
|
50
|
-
he: { lensName: 'פרספקטיבת הממשלה', stakeholder: 'הממשלה' },
|
|
51
|
-
ja: { lensName: '政府の視点', stakeholder: '政府' },
|
|
52
|
-
ko: { lensName: '정부 관점', stakeholder: '정부' },
|
|
53
|
-
zh: { lensName: '政府视角', stakeholder: '政府' },
|
|
54
|
-
};
|
|
55
|
-
function label(lang) {
|
|
56
|
-
return LENS_LABELS[lang] ?? LENS_LABELS['en'];
|
|
57
|
-
}
|
|
58
|
-
// ---------------------------------------------------------------------------
|
|
59
|
-
// Helper utilities
|
|
60
|
-
// ---------------------------------------------------------------------------
|
|
61
|
-
function containsAny(text, keywords) {
|
|
62
|
-
const lower = text.toLowerCase();
|
|
63
|
-
return keywords.some(kw => lower.includes(kw.toLowerCase()));
|
|
64
|
-
}
|
|
65
|
-
// ---------------------------------------------------------------------------
|
|
66
|
-
// Impact / Sentiment calculation
|
|
67
|
-
// ---------------------------------------------------------------------------
|
|
68
|
-
function computeImpact(doc, cia) {
|
|
69
|
-
const docType = doc.doktyp || doc.documentType || '';
|
|
70
|
-
const committee = doc.organ || doc.committee || '';
|
|
71
|
-
const isHighCommittee = GOV_HIGH_INFLUENCE_COMMITTEES.has(committee);
|
|
72
|
-
const isHighDocType = ['prop', 'bet', 'skr'].includes(docType);
|
|
73
|
-
// Propositions and committee reports on strategic committees are inherently high-impact
|
|
74
|
-
if (isHighDocType && isHighCommittee)
|
|
75
|
-
return 'high';
|
|
76
|
-
if (docType === 'prop')
|
|
77
|
-
return 'high';
|
|
78
|
-
// Thin majority amplifies impact for all government-sponsored documents
|
|
79
|
-
if (cia && cia.coalitionStability.majorityMargin <= 3)
|
|
80
|
-
return 'high';
|
|
81
|
-
if (isHighDocType || isHighCommittee)
|
|
82
|
-
return 'medium';
|
|
83
|
-
return 'low';
|
|
84
|
-
}
|
|
85
|
-
function computeSentiment(doc, cia) {
|
|
86
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
87
|
-
// Government-sponsored propositions are generally positive for the government
|
|
88
|
-
if (doc.doktyp === 'prop') {
|
|
89
|
-
// Unless they arrive during a coalition instability period
|
|
90
|
-
if (cia && cia.coalitionStability.stabilityScore < 40)
|
|
91
|
-
return 'neutral';
|
|
92
|
-
return 'positive';
|
|
93
|
-
}
|
|
94
|
-
// Fiscal pressure signals negative impact on government agenda
|
|
95
|
-
if (containsAny(allText, FISCAL_PRESSURE_KEYWORDS))
|
|
96
|
-
return 'negative';
|
|
97
|
-
// Coalition-critical documents are neutral (could go either way)
|
|
98
|
-
if (containsAny(allText, COALITION_CRITICAL_KEYWORDS))
|
|
99
|
-
return 'neutral';
|
|
100
|
-
// Default neutral for motions
|
|
101
|
-
if (doc.doktyp === 'mot')
|
|
102
|
-
return 'neutral';
|
|
103
|
-
return 'neutral';
|
|
104
|
-
}
|
|
105
|
-
// ---------------------------------------------------------------------------
|
|
106
|
-
// Summary generation
|
|
107
|
-
// ---------------------------------------------------------------------------
|
|
108
|
-
function buildSummary(doc, cia, _lang, domains) {
|
|
109
|
-
const title = doc.titel || doc.title || 'Untitled';
|
|
110
|
-
const docType = doc.doktyp || doc.documentType || 'document';
|
|
111
|
-
const domainPhrase = domains.length > 0 ? ` touching ${domains.slice(0, 2).join(' and ')}` : '';
|
|
112
|
-
const stabilityNote = cia && cia.coalitionStability.stabilityScore < 50
|
|
113
|
-
? ` Current coalition instability (stability score: ${cia.coalitionStability.stabilityScore}) increases execution risk.`
|
|
114
|
-
: '';
|
|
115
|
-
const coalitionNote = containsAny(title, COALITION_CRITICAL_KEYWORDS)
|
|
116
|
-
? ' Coalition agreement alignment must be verified before advancement.'
|
|
117
|
-
: '';
|
|
118
|
-
const fiscalNote = containsAny(title, FISCAL_PRESSURE_KEYWORDS)
|
|
119
|
-
? ' Fiscal feasibility assessment required; budget headroom may be constrained.'
|
|
120
|
-
: '';
|
|
121
|
-
return `From the government perspective, this ${docType}${domainPhrase} requires assessment of policy execution capacity and resource allocation.${stabilityNote}${coalitionNote}${fiscalNote}`.trim();
|
|
122
|
-
}
|
|
123
|
-
// ---------------------------------------------------------------------------
|
|
124
|
-
// SWOT contributions
|
|
125
|
-
// ---------------------------------------------------------------------------
|
|
126
|
-
function buildSwotContributions(doc, cia, lang, domains) {
|
|
127
|
-
const { stakeholder } = label(lang);
|
|
128
|
-
const contributions = [];
|
|
129
|
-
const docType = doc.doktyp || doc.documentType || '';
|
|
130
|
-
// Strength: government-initiated propositions reinforce policy mandate
|
|
131
|
-
if (docType === 'prop') {
|
|
132
|
-
contributions.push({
|
|
133
|
-
quadrant: 'strength',
|
|
134
|
-
forStakeholder: stakeholder,
|
|
135
|
-
text: 'Government-initiated legislation reinforces policy mandate and demonstrates programme delivery.',
|
|
136
|
-
impact: 'high',
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
// Opportunity: policy domain expansion
|
|
140
|
-
if (domains.length > 0) {
|
|
141
|
-
contributions.push({
|
|
142
|
-
quadrant: 'opportunity',
|
|
143
|
-
forStakeholder: stakeholder,
|
|
144
|
-
text: `Policy advancement opportunity in ${domains.slice(0, 2).join(' and ')} domain(s), aligned with coalition programme.`,
|
|
145
|
-
impact: 'medium',
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
// Weakness: coalition instability
|
|
149
|
-
if (cia && cia.coalitionStability.stabilityScore < 50) {
|
|
150
|
-
contributions.push({
|
|
151
|
-
quadrant: 'weakness',
|
|
152
|
-
forStakeholder: stakeholder,
|
|
153
|
-
text: `Coalition fragility (stability score ${cia.coalitionStability.stabilityScore}) risks legislative delays or defeats.`,
|
|
154
|
-
impact: 'high',
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
// Threat: thin majority
|
|
158
|
-
if (cia && cia.coalitionStability.majorityMargin <= 3) {
|
|
159
|
-
contributions.push({
|
|
160
|
-
quadrant: 'threat',
|
|
161
|
-
forStakeholder: stakeholder,
|
|
162
|
-
text: `Razor-thin majority (${cia.coalitionStability.majorityMargin} seat(s)) creates defeat risk on contested votes.`,
|
|
163
|
-
impact: 'high',
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
return contributions;
|
|
167
|
-
}
|
|
168
|
-
// ---------------------------------------------------------------------------
|
|
169
|
-
// Dashboard metrics
|
|
170
|
-
// ---------------------------------------------------------------------------
|
|
171
|
-
function buildDashboardMetrics(_doc, cia, domains) {
|
|
172
|
-
const metrics = [];
|
|
173
|
-
if (cia) {
|
|
174
|
-
metrics.push({
|
|
175
|
-
metricName: 'Coalition Stability',
|
|
176
|
-
value: cia.coalitionStability.stabilityScore,
|
|
177
|
-
unit: 'score',
|
|
178
|
-
});
|
|
179
|
-
metrics.push({
|
|
180
|
-
metricName: 'Majority Margin',
|
|
181
|
-
value: cia.coalitionStability.majorityMargin,
|
|
182
|
-
unit: 'seats',
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
metrics.push({
|
|
186
|
-
metricName: 'Policy Domains Affected',
|
|
187
|
-
value: domains.length,
|
|
188
|
-
unit: 'domains',
|
|
189
|
-
});
|
|
190
|
-
return metrics;
|
|
191
|
-
}
|
|
192
|
-
// ---------------------------------------------------------------------------
|
|
193
|
-
// Mindmap nodes
|
|
194
|
-
// ---------------------------------------------------------------------------
|
|
195
|
-
function buildMindmapNodes(doc, _lang, domains) {
|
|
196
|
-
const nodes = [];
|
|
197
|
-
const docType = doc.doktyp || doc.documentType || '';
|
|
198
|
-
nodes.push({
|
|
199
|
-
branch: 'Legislative Pipeline',
|
|
200
|
-
item: docType === 'prop' ? 'Government Bill' : docType === 'bet' ? 'Committee Report' : 'Parliamentary Document',
|
|
201
|
-
weight: docType === 'prop' ? 'critical' : 'significant',
|
|
202
|
-
});
|
|
203
|
-
for (const domain of domains.slice(0, 3)) {
|
|
204
|
-
nodes.push({
|
|
205
|
-
branch: 'Policy Domains',
|
|
206
|
-
item: domain,
|
|
207
|
-
weight: 'significant',
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
return nodes;
|
|
211
|
-
}
|
|
212
|
-
// ---------------------------------------------------------------------------
|
|
213
|
-
// Confidence scoring
|
|
214
|
-
// ---------------------------------------------------------------------------
|
|
215
|
-
function computeConfidence(doc, cia) {
|
|
216
|
-
let score = 40; // Base
|
|
217
|
-
if (doc.fullText || doc.fullContent)
|
|
218
|
-
score += 20;
|
|
219
|
-
if (doc.summary || doc.notis)
|
|
220
|
-
score += 10;
|
|
221
|
-
if (cia)
|
|
222
|
-
score += 20;
|
|
223
|
-
if (doc.speeches && doc.speeches.length > 0)
|
|
224
|
-
score += 10;
|
|
225
|
-
return Math.min(100, score);
|
|
226
|
-
}
|
|
227
|
-
// ---------------------------------------------------------------------------
|
|
228
|
-
// Public API
|
|
229
|
-
// ---------------------------------------------------------------------------
|
|
230
|
-
/**
|
|
231
|
-
* Apply the Government analysis lens to a single parliamentary document.
|
|
232
|
-
*
|
|
233
|
-
* Evaluates policy execution feasibility, budget implications, coalition
|
|
234
|
-
* alignment, and international commitment compliance.
|
|
235
|
-
*
|
|
236
|
-
* @param doc - The document to analyse
|
|
237
|
-
* @param cia - Optional CIA context for coalition stability data
|
|
238
|
-
* @param lang - Target language for all generated text
|
|
239
|
-
* @returns A `PerspectiveAnalysis` for the government lens
|
|
240
|
-
*/
|
|
241
|
-
export function analyzeGovernmentPerspective(doc, cia, lang, precomputedDomains) {
|
|
242
|
-
const keyActors = ['Prime Minister', 'Cabinet'];
|
|
243
|
-
if (cia) {
|
|
244
|
-
const govParties = (cia.partyPerformance ?? [])
|
|
245
|
-
.filter(p => p.metrics.seats > 0)
|
|
246
|
-
.slice(0, 3)
|
|
247
|
-
.map(p => p.partyName);
|
|
248
|
-
keyActors.push(...govParties);
|
|
249
|
-
}
|
|
250
|
-
const domains = precomputedDomains ?? detectPolicyDomains(doc, 'en');
|
|
251
|
-
const relatedPolicies = [...domains, 'Coalition Programme 2022-2026'].filter(Boolean);
|
|
252
|
-
return {
|
|
253
|
-
lens: 'government',
|
|
254
|
-
summary: buildSummary(doc, cia, lang, domains),
|
|
255
|
-
impact: computeImpact(doc, cia),
|
|
256
|
-
sentiment: computeSentiment(doc, cia),
|
|
257
|
-
keyActors: [...new Set(keyActors)].slice(0, 5),
|
|
258
|
-
relatedPolicies: relatedPolicies.slice(0, 5),
|
|
259
|
-
swotContribution: buildSwotContributions(doc, cia, lang, domains),
|
|
260
|
-
dashboardMetrics: buildDashboardMetrics(doc, cia, domains),
|
|
261
|
-
mindmapNodes: buildMindmapNodes(doc, lang, domains),
|
|
262
|
-
confidence: computeConfidence(doc, cia),
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
//# sourceMappingURL=government.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"government.js","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/government.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module analysis-framework/lenses/international
|
|
3
|
-
* @description International perspective lens for parliamentary document analysis.
|
|
4
|
-
*
|
|
5
|
-
* Evaluates every document from the international vantage point:
|
|
6
|
-
* - EU regulatory alignment
|
|
7
|
-
* - Nordic cooperation implications
|
|
8
|
-
* - Global treaty obligations
|
|
9
|
-
* - Diplomatic signal assessment
|
|
10
|
-
*
|
|
11
|
-
* @author Hack23 AB
|
|
12
|
-
* @license Apache-2.0
|
|
13
|
-
*/
|
|
14
|
-
import type { RawDocument, CIAContext } from '../../data-transformers/types.js';
|
|
15
|
-
import type { Language } from '../../types/language.js';
|
|
16
|
-
import type { PerspectiveAnalysis } from '../types.js';
|
|
17
|
-
/**
|
|
18
|
-
* Apply the International analysis lens to a single parliamentary document.
|
|
19
|
-
*
|
|
20
|
-
* Evaluates EU regulatory alignment, Nordic cooperation implications,
|
|
21
|
-
* global treaty obligations, and diplomatic signal assessment.
|
|
22
|
-
*
|
|
23
|
-
* @param doc - The document to analyse
|
|
24
|
-
* @param cia - Optional CIA context
|
|
25
|
-
* @param lang - Target language
|
|
26
|
-
* @returns A `PerspectiveAnalysis` for the international lens
|
|
27
|
-
*/
|
|
28
|
-
export declare function analyzeInternationalPerspective(doc: RawDocument, cia: CIAContext | undefined, lang: Language | string, precomputedDomains?: string[]): PerspectiveAnalysis;
|
|
29
|
-
//# sourceMappingURL=international.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"international.d.ts","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/international.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAA0E,MAAM,aAAa,CAAC;AAsO/H;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,mBAAmB,CAsBrB"}
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module analysis-framework/lenses/international
|
|
3
|
-
* @description International perspective lens for parliamentary document analysis.
|
|
4
|
-
*
|
|
5
|
-
* Evaluates every document from the international vantage point:
|
|
6
|
-
* - EU regulatory alignment
|
|
7
|
-
* - Nordic cooperation implications
|
|
8
|
-
* - Global treaty obligations
|
|
9
|
-
* - Diplomatic signal assessment
|
|
10
|
-
*
|
|
11
|
-
* @author Hack23 AB
|
|
12
|
-
* @license Apache-2.0
|
|
13
|
-
*/
|
|
14
|
-
import { detectPolicyDomains } from '../../data-transformers/policy-analysis.js';
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
// International keyword banks
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
|
-
/** EU-specific alignment keywords */
|
|
19
|
-
const EU_KEYWORDS = [
|
|
20
|
-
'eu-direktiv', 'eu directive', 'eu-förordning', 'eu regulation', 'europaparlamentet',
|
|
21
|
-
'eu-kommissionen', 'european commission', 'europeiska unionen', 'european union',
|
|
22
|
-
'schengen', 'euratom', 'eurozon', 'eurozone', 'eu-anpassning', 'eu alignment',
|
|
23
|
-
'eu-konform', 'eu-rätt', 'eu law', 'eu-implementering', 'eu implementation',
|
|
24
|
-
'inre marknaden', 'single market', 'fria rörligheten', 'free movement',
|
|
25
|
-
'statsstödsregler', 'state aid rules', 'konkurrensrätt', 'competition law',
|
|
26
|
-
];
|
|
27
|
-
/** Nordic cooperation keywords */
|
|
28
|
-
const NORDIC_KEYWORDS = [
|
|
29
|
-
'nordisk', 'nordic', 'norge', 'norway', 'finland', 'danmark', 'denmark',
|
|
30
|
-
'island', 'iceland', 'färöarna', 'faroe', 'nordisk råd', 'nordic council',
|
|
31
|
-
'nordiskt samarbete', 'nordic cooperation', 'norden', 'öresund', 'arktis', 'arctic',
|
|
32
|
-
];
|
|
33
|
-
/** NATO/defence treaty keywords */
|
|
34
|
-
const TREATY_KEYWORDS = [
|
|
35
|
-
'nato', 'förenta nationerna', 'united nations', 'fördrag', 'treaty',
|
|
36
|
-
'konvention', 'convention', 'protokoll', 'protocol', 'avtal', 'agreement',
|
|
37
|
-
'wto', 'imf', 'världsbanken', 'world bank', 'oecd', 'coe', 'europarådet',
|
|
38
|
-
'council of europe', 'mänskliga rättigheter', 'human rights',
|
|
39
|
-
'folkrätt', 'international law', 'haag', 'hague', 'internationell domstol',
|
|
40
|
-
];
|
|
41
|
-
/** Diplomatic signal keywords */
|
|
42
|
-
const DIPLOMATIC_KEYWORDS = [
|
|
43
|
-
'utrikespolitik', 'foreign policy', 'diplomatisk', 'diplomatic', 'ambassad', 'embassy',
|
|
44
|
-
'bilateralt', 'bilateral', 'multilateralt', 'multilateral', 'sanktion', 'sanction',
|
|
45
|
-
'handelsavtal', 'trade agreement', 'frihandelsavtal', 'free trade agreement',
|
|
46
|
-
'geopolitisk', 'geopolitical', 'säkerhetsråd', 'security council',
|
|
47
|
-
];
|
|
48
|
-
// ---------------------------------------------------------------------------
|
|
49
|
-
// Localised labels
|
|
50
|
-
// ---------------------------------------------------------------------------
|
|
51
|
-
const LENS_LABELS = {
|
|
52
|
-
en: { lensName: 'International Perspective', stakeholder: 'International Community' },
|
|
53
|
-
sv: { lensName: 'Internationellt perspektiv', stakeholder: 'Internationella samfundet' },
|
|
54
|
-
da: { lensName: 'Internationalt perspektiv', stakeholder: 'Det internationale samfund' },
|
|
55
|
-
no: { lensName: 'Internasjonalt perspektiv', stakeholder: 'Det internasjonale samfunnet' },
|
|
56
|
-
fi: { lensName: 'Kansainvälinen näkökulma', stakeholder: 'Kansainvälinen yhteisö' },
|
|
57
|
-
de: { lensName: 'Internationale Perspektive', stakeholder: 'Internationale Gemeinschaft' },
|
|
58
|
-
fr: { lensName: 'Perspective internationale', stakeholder: 'Communauté internationale' },
|
|
59
|
-
es: { lensName: 'Perspectiva internacional', stakeholder: 'Comunidad internacional' },
|
|
60
|
-
nl: { lensName: 'Internationaal perspectief', stakeholder: 'Internationale gemeenschap' },
|
|
61
|
-
ar: { lensName: 'المنظور الدولي', stakeholder: 'المجتمع الدولي' },
|
|
62
|
-
he: { lensName: 'פרספקטיבה בינלאומית', stakeholder: 'הקהילה הבינלאומית' },
|
|
63
|
-
ja: { lensName: '国際的視点', stakeholder: '国際社会' },
|
|
64
|
-
ko: { lensName: '국제적 관점', stakeholder: '국제 사회' },
|
|
65
|
-
zh: { lensName: '国际视角', stakeholder: '国际社会' },
|
|
66
|
-
};
|
|
67
|
-
function label(lang) {
|
|
68
|
-
return LENS_LABELS[lang] ?? LENS_LABELS['en'];
|
|
69
|
-
}
|
|
70
|
-
function containsAny(text, keywords) {
|
|
71
|
-
const lower = text.toLowerCase();
|
|
72
|
-
return keywords.some(kw => lower.includes(kw.toLowerCase()));
|
|
73
|
-
}
|
|
74
|
-
function countKeywords(text, keywords) {
|
|
75
|
-
const lower = text.toLowerCase();
|
|
76
|
-
return keywords.filter(kw => lower.includes(kw.toLowerCase())).length;
|
|
77
|
-
}
|
|
78
|
-
// ---------------------------------------------------------------------------
|
|
79
|
-
// Scoring helpers
|
|
80
|
-
// ---------------------------------------------------------------------------
|
|
81
|
-
function computeImpact(doc) {
|
|
82
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
83
|
-
const euSignals = countKeywords(allText, EU_KEYWORDS);
|
|
84
|
-
const treatySignals = countKeywords(allText, TREATY_KEYWORDS);
|
|
85
|
-
const nordicSignals = countKeywords(allText, NORDIC_KEYWORDS);
|
|
86
|
-
if (euSignals >= 2 || treatySignals >= 2)
|
|
87
|
-
return 'high';
|
|
88
|
-
if (euSignals >= 1 || treatySignals >= 1 || nordicSignals >= 1)
|
|
89
|
-
return 'medium';
|
|
90
|
-
const organ = doc.organ || doc.committee || '';
|
|
91
|
-
if (organ === 'UU')
|
|
92
|
-
return 'high'; // Foreign Affairs Committee
|
|
93
|
-
if (organ === 'FöU')
|
|
94
|
-
return 'medium'; // Defence Committee (NATO context)
|
|
95
|
-
return 'low';
|
|
96
|
-
}
|
|
97
|
-
function computeSentiment(doc) {
|
|
98
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
99
|
-
if (containsAny(allText, ['sanktion', 'sanction', 'protest', 'konflikt', 'conflict',
|
|
100
|
-
'spänning', 'tension', 'brott mot', 'violation'])) {
|
|
101
|
-
return 'negative';
|
|
102
|
-
}
|
|
103
|
-
if (containsAny(allText, ['samarbete', 'cooperation', 'avtal', 'agreement', 'partnerskap',
|
|
104
|
-
'partnership', 'integration', 'harmonisering', 'harmonisation', 'ratificering', 'ratification'])) {
|
|
105
|
-
return 'positive';
|
|
106
|
-
}
|
|
107
|
-
return 'neutral';
|
|
108
|
-
}
|
|
109
|
-
// ---------------------------------------------------------------------------
|
|
110
|
-
// Summary generation
|
|
111
|
-
// ---------------------------------------------------------------------------
|
|
112
|
-
function buildSummary(doc, _cia, _lang) {
|
|
113
|
-
const docType = doc.doktyp || doc.documentType || 'document';
|
|
114
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
115
|
-
const hasEU = containsAny(allText, EU_KEYWORDS);
|
|
116
|
-
const hasNordic = containsAny(allText, NORDIC_KEYWORDS);
|
|
117
|
-
const hasTreaty = containsAny(allText, TREATY_KEYWORDS);
|
|
118
|
-
const hasDiplomatic = containsAny(allText, DIPLOMATIC_KEYWORDS);
|
|
119
|
-
const notes = [];
|
|
120
|
-
if (hasEU)
|
|
121
|
-
notes.push('EU compliance and transposition requirements should be verified');
|
|
122
|
-
if (hasNordic)
|
|
123
|
-
notes.push('Nordic Council coordination implications warrant assessment');
|
|
124
|
-
if (hasTreaty)
|
|
125
|
-
notes.push('treaty obligation compatibility must be reviewed');
|
|
126
|
-
if (hasDiplomatic)
|
|
127
|
-
notes.push('diplomatic signalling effects should be considered');
|
|
128
|
-
const notePhrase = notes.length > 0 ? ` Key international dimensions: ${notes.join('; ')}.` : ' International context dimensions are limited for this document.';
|
|
129
|
-
return `From the international perspective, this ${docType} must be assessed for EU regulatory alignment and treaty obligations.${notePhrase}`.trim();
|
|
130
|
-
}
|
|
131
|
-
// ---------------------------------------------------------------------------
|
|
132
|
-
// SWOT contributions
|
|
133
|
-
// ---------------------------------------------------------------------------
|
|
134
|
-
function buildSwotContributions(doc, _cia, lang) {
|
|
135
|
-
const { stakeholder } = label(lang);
|
|
136
|
-
const contributions = [];
|
|
137
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
138
|
-
if (containsAny(allText, EU_KEYWORDS)) {
|
|
139
|
-
contributions.push({
|
|
140
|
-
quadrant: 'opportunity',
|
|
141
|
-
forStakeholder: stakeholder,
|
|
142
|
-
text: 'EU alignment opportunity: document may strengthen Sweden\'s position within EU regulatory framework.',
|
|
143
|
-
impact: 'high',
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
if (containsAny(allText, NORDIC_KEYWORDS)) {
|
|
147
|
-
contributions.push({
|
|
148
|
-
quadrant: 'strength',
|
|
149
|
-
forStakeholder: stakeholder,
|
|
150
|
-
text: 'Nordic cooperation dimension adds regional legitimacy and shared implementation potential.',
|
|
151
|
-
impact: 'medium',
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
if (containsAny(allText, ['sanktion', 'sanction', 'brott mot', 'violation', 'överträdelse'])) {
|
|
155
|
-
contributions.push({
|
|
156
|
-
quadrant: 'threat',
|
|
157
|
-
forStakeholder: stakeholder,
|
|
158
|
-
text: 'Risk of international treaty violation or sanctions exposure if document is implemented without alignment review.',
|
|
159
|
-
impact: 'high',
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
return contributions;
|
|
163
|
-
}
|
|
164
|
-
// ---------------------------------------------------------------------------
|
|
165
|
-
// Dashboard metrics
|
|
166
|
-
// ---------------------------------------------------------------------------
|
|
167
|
-
function buildDashboardMetrics(doc, _cia) {
|
|
168
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
169
|
-
return [
|
|
170
|
-
{ metricName: 'EU Alignment Signals', value: countKeywords(allText, EU_KEYWORDS), unit: 'hits' },
|
|
171
|
-
{ metricName: 'Treaty References', value: countKeywords(allText, TREATY_KEYWORDS), unit: 'hits' },
|
|
172
|
-
{ metricName: 'Nordic Cooperation Signals', value: countKeywords(allText, NORDIC_KEYWORDS), unit: 'hits' },
|
|
173
|
-
];
|
|
174
|
-
}
|
|
175
|
-
// ---------------------------------------------------------------------------
|
|
176
|
-
// Mindmap nodes
|
|
177
|
-
// ---------------------------------------------------------------------------
|
|
178
|
-
function buildMindmapNodes(doc, _lang) {
|
|
179
|
-
const nodes = [];
|
|
180
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
181
|
-
if (containsAny(allText, EU_KEYWORDS)) {
|
|
182
|
-
nodes.push({ branch: 'EU Context', item: 'Regulatory Alignment', weight: 'critical' });
|
|
183
|
-
}
|
|
184
|
-
if (containsAny(allText, NORDIC_KEYWORDS)) {
|
|
185
|
-
nodes.push({ branch: 'Nordic Context', item: 'Regional Cooperation', weight: 'significant' });
|
|
186
|
-
}
|
|
187
|
-
if (containsAny(allText, TREATY_KEYWORDS)) {
|
|
188
|
-
nodes.push({ branch: 'Treaty Obligations', item: 'International Law Compliance', weight: 'critical' });
|
|
189
|
-
}
|
|
190
|
-
if (containsAny(allText, DIPLOMATIC_KEYWORDS)) {
|
|
191
|
-
nodes.push({ branch: 'Diplomatic Signals', item: 'Foreign Policy Messaging', weight: 'moderate' });
|
|
192
|
-
}
|
|
193
|
-
return nodes;
|
|
194
|
-
}
|
|
195
|
-
// ---------------------------------------------------------------------------
|
|
196
|
-
// Confidence
|
|
197
|
-
// ---------------------------------------------------------------------------
|
|
198
|
-
function computeConfidence(doc, cia) {
|
|
199
|
-
let score = 35;
|
|
200
|
-
if (doc.fullText || doc.fullContent)
|
|
201
|
-
score += 25;
|
|
202
|
-
if (doc.summary || doc.notis)
|
|
203
|
-
score += 15;
|
|
204
|
-
if (cia)
|
|
205
|
-
score += 15;
|
|
206
|
-
if (doc.speeches && doc.speeches.length > 0)
|
|
207
|
-
score += 10;
|
|
208
|
-
return Math.min(100, score);
|
|
209
|
-
}
|
|
210
|
-
// ---------------------------------------------------------------------------
|
|
211
|
-
// Public API
|
|
212
|
-
// ---------------------------------------------------------------------------
|
|
213
|
-
/**
|
|
214
|
-
* Apply the International analysis lens to a single parliamentary document.
|
|
215
|
-
*
|
|
216
|
-
* Evaluates EU regulatory alignment, Nordic cooperation implications,
|
|
217
|
-
* global treaty obligations, and diplomatic signal assessment.
|
|
218
|
-
*
|
|
219
|
-
* @param doc - The document to analyse
|
|
220
|
-
* @param cia - Optional CIA context
|
|
221
|
-
* @param lang - Target language
|
|
222
|
-
* @returns A `PerspectiveAnalysis` for the international lens
|
|
223
|
-
*/
|
|
224
|
-
export function analyzeInternationalPerspective(doc, cia, lang, precomputedDomains) {
|
|
225
|
-
const keyActors = ['EU Commission', 'Foreign Ministry', 'NATO', 'Nordic Council', 'UN'];
|
|
226
|
-
const domains = precomputedDomains ?? detectPolicyDomains(doc, 'en');
|
|
227
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
228
|
-
const relatedPolicies = [...domains];
|
|
229
|
-
if (containsAny(allText, EU_KEYWORDS))
|
|
230
|
-
relatedPolicies.push('EU Single Market');
|
|
231
|
-
if (containsAny(allText, TREATY_KEYWORDS))
|
|
232
|
-
relatedPolicies.push('International Treaty Framework');
|
|
233
|
-
if (containsAny(allText, NORDIC_KEYWORDS))
|
|
234
|
-
relatedPolicies.push('Nordic Cooperation');
|
|
235
|
-
return {
|
|
236
|
-
lens: 'international',
|
|
237
|
-
summary: buildSummary(doc, cia, lang),
|
|
238
|
-
impact: computeImpact(doc),
|
|
239
|
-
sentiment: computeSentiment(doc),
|
|
240
|
-
keyActors: keyActors.slice(0, 5),
|
|
241
|
-
relatedPolicies: relatedPolicies.slice(0, 5),
|
|
242
|
-
swotContribution: buildSwotContributions(doc, cia, lang),
|
|
243
|
-
dashboardMetrics: buildDashboardMetrics(doc, cia),
|
|
244
|
-
mindmapNodes: buildMindmapNodes(doc, lang),
|
|
245
|
-
confidence: computeConfidence(doc, cia),
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
//# sourceMappingURL=international.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"international.js","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/international.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAEjF,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E,qCAAqC;AACrC,MAAM,WAAW,GAAsB;IACrC,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB;IACpF,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB;IAChF,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc;IAC7E,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB;IAC3E,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe;IACtE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB;CAC3E,CAAC;AAEF,kCAAkC;AAClC,MAAM,eAAe,GAAsB;IACzC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IACvE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB;IACzE,oBAAoB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;CACpF,CAAC;AAEF,mCAAmC;AACnC,MAAM,eAAe,GAAsB;IACzC,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ;IACnE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW;IACzE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa;IACxE,mBAAmB,EAAE,uBAAuB,EAAE,cAAc;IAC5D,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB;CAC3E,CAAC;AAEF,iCAAiC;AACjC,MAAM,mBAAmB,GAAsB;IAC7C,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS;IACtF,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU;IAClF,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,sBAAsB;IAC5E,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB;CAClE,CAAC;AAEF,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,WAAW,GAAwE;IACvF,EAAE,EAAE,EAAE,QAAQ,EAAE,2BAA2B,EAAE,WAAW,EAAE,yBAAyB,EAAE;IACrF,EAAE,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,WAAW,EAAE,2BAA2B,EAAE;IACxF,EAAE,EAAE,EAAE,QAAQ,EAAE,2BAA2B,EAAE,WAAW,EAAE,4BAA4B,EAAE;IACxF,EAAE,EAAE,EAAE,QAAQ,EAAE,2BAA2B,EAAE,WAAW,EAAE,8BAA8B,EAAE;IAC1F,EAAE,EAAE,EAAE,QAAQ,EAAE,0BAA0B,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACnF,EAAE,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC1F,EAAE,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,WAAW,EAAE,2BAA2B,EAAE;IACxF,EAAE,EAAE,EAAE,QAAQ,EAAE,2BAA2B,EAAE,WAAW,EAAE,yBAAyB,EAAE;IACrF,EAAE,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B,EAAE;IACzF,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE;IACjE,EAAE,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,mBAAmB,EAAE;IACzE,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;IAC9C,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;IAChD,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;CAC9C,CAAC;AAEF,SAAS,KAAK,CAAC,IAAuB;IACpC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAA2B;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,QAA2B;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACxE,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,GAAgB;IACrC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzF,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAE9D,IAAI,SAAS,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACxD,IAAI,SAAS,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEhF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;IAC/C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,CAAC,4BAA4B;IAC/D,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC,CAAC,mCAAmC;IAEzE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAgB;IACxC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzF,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;QACjF,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa;QACvF,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,YAAY,CAAC,GAAgB,EAAE,IAA4B,EAAE,KAAwB;IAC5F,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,IAAI,UAAU,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzF,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAEhE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IACzF,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACzF,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC9E,IAAI,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAEpF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kCAAkC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,kEAAkE,CAAC;IAEjK,OAAO,4CAA4C,OAAO,wEAAwE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;AACxJ,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,GAAgB,EAAE,IAA4B,EAAE,IAAuB;IACrG,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzF,IAAI,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;QACtC,aAAa,CAAC,IAAI,CAAC;YACjB,QAAQ,EAAE,aAAa;YACvB,cAAc,EAAE,WAAW;YAC3B,IAAI,EAAE,sGAAsG;YAC5G,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;QAC1C,aAAa,CAAC,IAAI,CAAC;YACjB,QAAQ,EAAE,UAAU;YACpB,cAAc,EAAE,WAAW;YAC3B,IAAI,EAAE,4FAA4F;YAClG,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC7F,aAAa,CAAC,IAAI,CAAC;YACjB,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,WAAW;YAC3B,IAAI,EAAE,mHAAmH;YACzH,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,qBAAqB,CAAC,GAAgB,EAAE,IAA4B;IAC3E,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,OAAO;QACL,EAAE,UAAU,EAAE,sBAAsB,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;QAChG,EAAE,UAAU,EAAE,mBAAmB,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;QACjG,EAAE,UAAU,EAAE,4BAA4B,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;KAC3G,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,GAAgB,EAAE,KAAwB;IACnE,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzF,IAAI,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,GAAgB,EAAE,GAA2B;IACtE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,WAAW;QAAE,KAAK,IAAI,EAAE,CAAC;IACjD,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK;QAAE,KAAK,IAAI,EAAE,CAAC;IAC1C,IAAI,GAAG;QAAE,KAAK,IAAI,EAAE,CAAC;IACrB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,+BAA+B,CAC7C,GAAgB,EAChB,GAA2B,EAC3B,IAAuB,EACvB,kBAA6B;IAE7B,MAAM,SAAS,GAAG,CAAC,eAAe,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,kBAAkB,IAAI,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzF,MAAM,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IACrC,IAAI,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChF,IAAI,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAClG,IAAI,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEtF,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;QACrC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;QAC1B,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC;QAChC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,gBAAgB,EAAE,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;QACxD,gBAAgB,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;QACjD,YAAY,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC;QAC1C,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;KACxC,CAAC;AACJ,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module analysis-framework/lenses/media
|
|
3
|
-
* @description Media/public discourse lens for parliamentary document analysis.
|
|
4
|
-
*
|
|
5
|
-
* Evaluates every document from the media and public discourse vantage point:
|
|
6
|
-
* - Newsworthiness scoring
|
|
7
|
-
* - Public sentiment indicators
|
|
8
|
-
* - Narrative framing analysis
|
|
9
|
-
* - Controversy potential
|
|
10
|
-
*
|
|
11
|
-
* @author Hack23 AB
|
|
12
|
-
* @license Apache-2.0
|
|
13
|
-
*/
|
|
14
|
-
import type { RawDocument, CIAContext } from '../../data-transformers/types.js';
|
|
15
|
-
import type { Language } from '../../types/language.js';
|
|
16
|
-
import type { PerspectiveAnalysis } from '../types.js';
|
|
17
|
-
/**
|
|
18
|
-
* Apply the Media/Public Discourse analysis lens to a single parliamentary document.
|
|
19
|
-
*
|
|
20
|
-
* Evaluates newsworthiness, public sentiment, narrative framing, and controversy
|
|
21
|
-
* potential.
|
|
22
|
-
*
|
|
23
|
-
* @param doc - The document to analyse
|
|
24
|
-
* @param cia - Optional CIA context
|
|
25
|
-
* @param lang - Target language
|
|
26
|
-
* @returns A `PerspectiveAnalysis` for the media lens
|
|
27
|
-
*/
|
|
28
|
-
export declare function analyzeMediaPerspective(doc: RawDocument, cia: CIAContext | undefined, lang: Language | string, precomputedDomains?: string[]): PerspectiveAnalysis;
|
|
29
|
-
//# sourceMappingURL=media.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/media.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAA0E,MAAM,aAAa,CAAC;AAsM/H;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,mBAAmB,CAkBrB"}
|