riksdagsmonitor 0.8.15 → 0.8.18
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/README.md +5 -0
- 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,220 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module analysis-framework/lenses/citizen
|
|
3
|
-
* @description Citizen perspective lens for parliamentary document analysis.
|
|
4
|
-
*
|
|
5
|
-
* Evaluates every document from the citizen's vantage point:
|
|
6
|
-
* - Service delivery impact
|
|
7
|
-
* - Rights and freedoms implications
|
|
8
|
-
* - Cost of living effects
|
|
9
|
-
* - Democratic participation impact
|
|
10
|
-
*
|
|
11
|
-
* @author Hack23 AB
|
|
12
|
-
* @license Apache-2.0
|
|
13
|
-
*/
|
|
14
|
-
import { detectPolicyDomains } from '../../data-transformers/policy-analysis.js';
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
// Domain to citizen service mapping
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
|
-
/** Policy domains with direct citizen service-delivery impact */
|
|
19
|
-
const HIGH_CITIZEN_IMPACT_DOMAINS = [
|
|
20
|
-
'healthcare policy', 'education policy', 'housing', 'labour', 'fiscal policy',
|
|
21
|
-
'justice', 'migration', 'hälso- och sjukvårdspolitik', 'utbildningspolitik',
|
|
22
|
-
'arbetsmarknad', 'bostad', 'rättvisa', 'migration',
|
|
23
|
-
];
|
|
24
|
-
/** Keywords indicating direct cost-of-living impact */
|
|
25
|
-
const COST_OF_LIVING_KEYWORDS = [
|
|
26
|
-
'skatt', 'tax', 'avgift', 'fee', 'hyra', 'rent', 'prisökning', 'price increase',
|
|
27
|
-
'inflation', 'köpkraft', 'purchasing power', 'levnadskostnad', 'cost of living',
|
|
28
|
-
'energipris', 'energy price', 'bensinpris', 'fuel price', 'matpris', 'food price',
|
|
29
|
-
'barnbidrag', 'child benefit', 'sjukpenning', 'sick pay', 'a-kassa', 'unemployment benefit',
|
|
30
|
-
'pension',
|
|
31
|
-
];
|
|
32
|
-
/** Keywords indicating rights or freedoms impact */
|
|
33
|
-
const RIGHTS_KEYWORDS = [
|
|
34
|
-
'rättighet', 'right', 'frihet', 'freedom', 'integritet', 'privacy', 'gdpr',
|
|
35
|
-
'diskriminering', 'discrimination', 'jämlikhet', 'equality', 'tillgänglighet', 'accessibility',
|
|
36
|
-
'tryckfrihet', 'press freedom', 'yttrandefrihet', 'freedom of expression',
|
|
37
|
-
'dataskydd', 'data protection', 'personuppgifter', 'personal data',
|
|
38
|
-
];
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// Localised labels
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
const LENS_LABELS = {
|
|
43
|
-
en: { lensName: 'Citizen Perspective', stakeholder: 'Citizens' },
|
|
44
|
-
sv: { lensName: 'Medborgarperspektiv', stakeholder: 'Medborgarna' },
|
|
45
|
-
da: { lensName: 'Borgerperspektiv', stakeholder: 'Borgerne' },
|
|
46
|
-
no: { lensName: 'Borgerperspektiv', stakeholder: 'Borgerne' },
|
|
47
|
-
fi: { lensName: 'Kansalaisnäkökulma', stakeholder: 'Kansalaiset' },
|
|
48
|
-
de: { lensName: 'Bürgerperspektive', stakeholder: 'Bürgerinnen und Bürger' },
|
|
49
|
-
fr: { lensName: 'Perspective citoyenne', stakeholder: 'Citoyens' },
|
|
50
|
-
es: { lensName: 'Perspectiva ciudadana', stakeholder: 'Ciudadanos' },
|
|
51
|
-
nl: { lensName: 'Burgerperspectief', stakeholder: 'Burgers' },
|
|
52
|
-
ar: { lensName: 'منظور المواطن', stakeholder: 'المواطنون' },
|
|
53
|
-
he: { lensName: 'פרספקטיבת האזרח', stakeholder: 'האזרחים' },
|
|
54
|
-
ja: { lensName: '市民の視点', stakeholder: '市民' },
|
|
55
|
-
ko: { lensName: '시민 관점', stakeholder: '시민' },
|
|
56
|
-
zh: { lensName: '公民视角', stakeholder: '公民' },
|
|
57
|
-
};
|
|
58
|
-
function label(lang) {
|
|
59
|
-
return LENS_LABELS[lang] ?? LENS_LABELS['en'];
|
|
60
|
-
}
|
|
61
|
-
function containsAny(text, keywords) {
|
|
62
|
-
const lower = text.toLowerCase();
|
|
63
|
-
return keywords.some(kw => lower.includes(kw.toLowerCase()));
|
|
64
|
-
}
|
|
65
|
-
// ---------------------------------------------------------------------------
|
|
66
|
-
// Scoring helpers
|
|
67
|
-
// ---------------------------------------------------------------------------
|
|
68
|
-
function computeImpact(doc, domains) {
|
|
69
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
70
|
-
const hasCitizenDomain = domains.some(d => HIGH_CITIZEN_IMPACT_DOMAINS.some(cd => d.toLowerCase().includes(cd.toLowerCase())));
|
|
71
|
-
if (hasCitizenDomain && (doc.doktyp === 'prop' || doc.doktyp === 'bet'))
|
|
72
|
-
return 'high';
|
|
73
|
-
if (containsAny(allText, COST_OF_LIVING_KEYWORDS) || containsAny(allText, RIGHTS_KEYWORDS))
|
|
74
|
-
return 'high';
|
|
75
|
-
if (hasCitizenDomain)
|
|
76
|
-
return 'medium';
|
|
77
|
-
return 'low';
|
|
78
|
-
}
|
|
79
|
-
function computeSentiment(doc) {
|
|
80
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
81
|
-
// Any rights-reducing language → negative
|
|
82
|
-
if (containsAny(allText, ['neddragning', 'nedskärning', 'cut', 'reduction', 'restriction',
|
|
83
|
-
'begränsning', 'inskränkning', 'avgiftshöjning', 'fee increase'])) {
|
|
84
|
-
return 'negative';
|
|
85
|
-
}
|
|
86
|
-
// Investment in services → positive
|
|
87
|
-
if (containsAny(allText, ['satsning', 'investment', 'ökning', 'increase', 'förbättring',
|
|
88
|
-
'improvement', 'förstärkning', 'strengthening', 'bidrag', 'grant', 'stöd', 'support'])) {
|
|
89
|
-
return 'positive';
|
|
90
|
-
}
|
|
91
|
-
return 'neutral';
|
|
92
|
-
}
|
|
93
|
-
// ---------------------------------------------------------------------------
|
|
94
|
-
// Summary generation
|
|
95
|
-
// ---------------------------------------------------------------------------
|
|
96
|
-
function buildSummary(doc, _cia, _lang, domains) {
|
|
97
|
-
const docType = doc.doktyp || doc.documentType || 'document';
|
|
98
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
99
|
-
const hasCostImpact = containsAny(allText, COST_OF_LIVING_KEYWORDS);
|
|
100
|
-
const hasRightsImpact = containsAny(allText, RIGHTS_KEYWORDS);
|
|
101
|
-
const domainPhrase = domains.length > 0 ? ` affecting ${domains.slice(0, 2).join(' and ')}` : '';
|
|
102
|
-
const costNote = hasCostImpact ? ' Citizens should assess potential cost-of-living implications closely.' : '';
|
|
103
|
-
const rightsNote = hasRightsImpact ? ' Rights and freedoms dimensions of this document warrant public attention.' : '';
|
|
104
|
-
return `From the citizen perspective, this ${docType}${domainPhrase} has direct implications for service delivery and everyday life.${costNote}${rightsNote}`.trim();
|
|
105
|
-
}
|
|
106
|
-
// ---------------------------------------------------------------------------
|
|
107
|
-
// SWOT contributions
|
|
108
|
-
// ---------------------------------------------------------------------------
|
|
109
|
-
function buildSwotContributions(doc, _cia, lang, domains) {
|
|
110
|
-
const { stakeholder } = label(lang);
|
|
111
|
-
const contributions = [];
|
|
112
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
113
|
-
if (domains.some(d => HIGH_CITIZEN_IMPACT_DOMAINS.some(cd => d.toLowerCase().includes(cd.toLowerCase())))) {
|
|
114
|
-
contributions.push({
|
|
115
|
-
quadrant: 'opportunity',
|
|
116
|
-
forStakeholder: stakeholder,
|
|
117
|
-
text: 'Document addresses areas with high citizen service delivery impact.',
|
|
118
|
-
impact: 'high',
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
if (containsAny(allText, RIGHTS_KEYWORDS)) {
|
|
122
|
-
contributions.push({
|
|
123
|
-
quadrant: 'threat',
|
|
124
|
-
forStakeholder: stakeholder,
|
|
125
|
-
text: 'Document may affect citizen rights and freedoms — requires civil society monitoring.',
|
|
126
|
-
impact: 'high',
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
if (containsAny(allText, COST_OF_LIVING_KEYWORDS)) {
|
|
130
|
-
contributions.push({
|
|
131
|
-
quadrant: 'weakness',
|
|
132
|
-
forStakeholder: stakeholder,
|
|
133
|
-
text: 'Possible cost-of-living implications need transparent impact assessment for vulnerable groups.',
|
|
134
|
-
impact: 'medium',
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
return contributions;
|
|
138
|
-
}
|
|
139
|
-
// ---------------------------------------------------------------------------
|
|
140
|
-
// Dashboard metrics
|
|
141
|
-
// ---------------------------------------------------------------------------
|
|
142
|
-
function buildDashboardMetrics(doc, _cia) {
|
|
143
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
144
|
-
const metrics = [];
|
|
145
|
-
metrics.push({
|
|
146
|
-
metricName: 'Cost-of-Living Keywords',
|
|
147
|
-
value: COST_OF_LIVING_KEYWORDS.filter(kw => allText.toLowerCase().includes(kw.toLowerCase())).length,
|
|
148
|
-
unit: 'hits',
|
|
149
|
-
});
|
|
150
|
-
metrics.push({
|
|
151
|
-
metricName: 'Rights Keywords',
|
|
152
|
-
value: RIGHTS_KEYWORDS.filter(kw => allText.toLowerCase().includes(kw.toLowerCase())).length,
|
|
153
|
-
unit: 'hits',
|
|
154
|
-
});
|
|
155
|
-
return metrics;
|
|
156
|
-
}
|
|
157
|
-
// ---------------------------------------------------------------------------
|
|
158
|
-
// Mindmap nodes
|
|
159
|
-
// ---------------------------------------------------------------------------
|
|
160
|
-
function buildMindmapNodes(doc, _lang) {
|
|
161
|
-
const nodes = [];
|
|
162
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
163
|
-
nodes.push({
|
|
164
|
-
branch: 'Service Delivery',
|
|
165
|
-
item: 'Direct Citizen Impact',
|
|
166
|
-
weight: 'significant',
|
|
167
|
-
});
|
|
168
|
-
if (containsAny(allText, COST_OF_LIVING_KEYWORDS)) {
|
|
169
|
-
nodes.push({ branch: 'Economic Wellbeing', item: 'Cost-of-Living Effect', weight: 'critical' });
|
|
170
|
-
}
|
|
171
|
-
if (containsAny(allText, RIGHTS_KEYWORDS)) {
|
|
172
|
-
nodes.push({ branch: 'Rights & Freedoms', item: 'Civil Liberties Review', weight: 'critical' });
|
|
173
|
-
}
|
|
174
|
-
return nodes;
|
|
175
|
-
}
|
|
176
|
-
// ---------------------------------------------------------------------------
|
|
177
|
-
// Confidence
|
|
178
|
-
// ---------------------------------------------------------------------------
|
|
179
|
-
function computeConfidence(doc) {
|
|
180
|
-
let score = 40;
|
|
181
|
-
if (doc.fullText || doc.fullContent)
|
|
182
|
-
score += 25;
|
|
183
|
-
if (doc.summary || doc.notis)
|
|
184
|
-
score += 15;
|
|
185
|
-
if (doc.speeches && doc.speeches.length > 0)
|
|
186
|
-
score += 10;
|
|
187
|
-
return Math.min(100, score);
|
|
188
|
-
}
|
|
189
|
-
// ---------------------------------------------------------------------------
|
|
190
|
-
// Public API
|
|
191
|
-
// ---------------------------------------------------------------------------
|
|
192
|
-
/**
|
|
193
|
-
* Apply the Citizen analysis lens to a single parliamentary document.
|
|
194
|
-
*
|
|
195
|
-
* Evaluates service delivery impact, rights and freedoms implications,
|
|
196
|
-
* cost of living effects, and democratic participation impact.
|
|
197
|
-
*
|
|
198
|
-
* @param doc - The document to analyse
|
|
199
|
-
* @param cia - Optional CIA context
|
|
200
|
-
* @param lang - Target language
|
|
201
|
-
* @returns A `PerspectiveAnalysis` for the citizen lens
|
|
202
|
-
*/
|
|
203
|
-
export function analyzeCitizenPerspective(doc, cia, lang, precomputedDomains) {
|
|
204
|
-
const keyActors = ['Civil Society', 'Trade Unions', 'Consumer Groups', 'Ombudsmen'];
|
|
205
|
-
const domains = precomputedDomains ?? detectPolicyDomains(doc, 'en');
|
|
206
|
-
const relatedPolicies = [...domains, 'Public Services Charter', 'Rights Framework'].filter(Boolean);
|
|
207
|
-
return {
|
|
208
|
-
lens: 'citizen',
|
|
209
|
-
summary: buildSummary(doc, cia, lang, domains),
|
|
210
|
-
impact: computeImpact(doc, domains),
|
|
211
|
-
sentiment: computeSentiment(doc),
|
|
212
|
-
keyActors: keyActors.slice(0, 5),
|
|
213
|
-
relatedPolicies: relatedPolicies.slice(0, 5),
|
|
214
|
-
swotContribution: buildSwotContributions(doc, cia, lang, domains),
|
|
215
|
-
dashboardMetrics: buildDashboardMetrics(doc, cia),
|
|
216
|
-
mindmapNodes: buildMindmapNodes(doc, lang),
|
|
217
|
-
confidence: computeConfidence(doc),
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
//# sourceMappingURL=citizen.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"citizen.js","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/citizen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module analysis-framework/lenses/economic
|
|
3
|
-
* @description Economic perspective lens for parliamentary document analysis.
|
|
4
|
-
*
|
|
5
|
-
* Evaluates every document from the economic vantage point:
|
|
6
|
-
* - GDP/employment implications
|
|
7
|
-
* - Business regulatory impact
|
|
8
|
-
* - Investment climate effects
|
|
9
|
-
* - Trade and competitiveness
|
|
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 Economic analysis lens to a single parliamentary document.
|
|
19
|
-
*
|
|
20
|
-
* Evaluates GDP/employment implications, business regulatory impact,
|
|
21
|
-
* investment climate effects, and trade and competitiveness.
|
|
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 economic lens
|
|
27
|
-
*/
|
|
28
|
-
export declare function analyzeEconomicPerspective(doc: RawDocument, cia: CIAContext | undefined, lang: Language | string, precomputedDomains?: string[]): PerspectiveAnalysis;
|
|
29
|
-
//# sourceMappingURL=economic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"economic.d.ts","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/economic.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;AA2N/H;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,mBAAmB,CAiBrB"}
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module analysis-framework/lenses/economic
|
|
3
|
-
* @description Economic perspective lens for parliamentary document analysis.
|
|
4
|
-
*
|
|
5
|
-
* Evaluates every document from the economic vantage point:
|
|
6
|
-
* - GDP/employment implications
|
|
7
|
-
* - Business regulatory impact
|
|
8
|
-
* - Investment climate effects
|
|
9
|
-
* - Trade and competitiveness
|
|
10
|
-
*
|
|
11
|
-
* @author Hack23 AB
|
|
12
|
-
* @license Apache-2.0
|
|
13
|
-
*/
|
|
14
|
-
import { detectPolicyDomains } from '../../data-transformers/policy-analysis.js';
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
// Economic keyword banks
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
|
-
/** Keywords indicating positive economic signals */
|
|
19
|
-
const POSITIVE_ECON_KEYWORDS = [
|
|
20
|
-
'tillväxt', 'growth', 'sysselsättning', 'employment', 'investering', 'investment',
|
|
21
|
-
'konkurrenskraft', 'competitiveness', 'export', 'innovation', 'produktivitet', 'productivity',
|
|
22
|
-
'avreglering', 'deregulation', 'skattelättnader', 'tax relief', 'incitament', 'incentive',
|
|
23
|
-
'frihandel', 'free trade', 'handelsliberalisering', 'trade liberalisation',
|
|
24
|
-
];
|
|
25
|
-
/** Keywords indicating negative economic signals */
|
|
26
|
-
const NEGATIVE_ECON_KEYWORDS = [
|
|
27
|
-
'recession', 'lågkonjunktur', 'downturn', 'nedgång', 'nedskärning', 'cut',
|
|
28
|
-
'avskedning', 'layoff', 'varsel', 'redundancy', 'konkurs', 'bankruptcy',
|
|
29
|
-
'skuld', 'debt', 'underskott', 'deficit', 'protektionism', 'protectionism',
|
|
30
|
-
'handelshinder', 'trade barrier', 'importrestriktion', 'import restriction',
|
|
31
|
-
'strejk', 'strike', 'lockout', 'arbetskonflikt', 'labour dispute',
|
|
32
|
-
];
|
|
33
|
-
/** Keywords indicating business regulation impact */
|
|
34
|
-
const REGULATION_KEYWORDS = [
|
|
35
|
-
'tillstånd', 'permit', 'reglering', 'regulation', 'compliance', 'direktiv', 'directive',
|
|
36
|
-
'rapporteringskrav', 'reporting requirement', 'bokföring', 'accounting', 'redovisning',
|
|
37
|
-
'hållbarhetsredovisning', 'sustainability reporting', 'kapitalkrav', 'capital requirement',
|
|
38
|
-
'tillsyn', 'supervision', 'tillsynsmyndighet', 'regulatory authority',
|
|
39
|
-
'sanktionsavgift', 'sanction fee', 'böter', 'fine', 'straffavgift',
|
|
40
|
-
];
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
// Localised labels
|
|
43
|
-
// ---------------------------------------------------------------------------
|
|
44
|
-
const LENS_LABELS = {
|
|
45
|
-
en: { lensName: 'Economic Perspective', stakeholder: 'Economy & Business' },
|
|
46
|
-
sv: { lensName: 'Ekonomiperspektiv', stakeholder: 'Ekonomi och näringsliv' },
|
|
47
|
-
da: { lensName: 'Økonomiperspektiv', stakeholder: 'Økonomi og erhvervsliv' },
|
|
48
|
-
no: { lensName: 'Økonomiperspektiv', stakeholder: 'Økonomi og næringsliv' },
|
|
49
|
-
fi: { lensName: 'Talousnäkökulma', stakeholder: 'Talous ja elinkeinoelämä' },
|
|
50
|
-
de: { lensName: 'Wirtschaftsperspektive', stakeholder: 'Wirtschaft' },
|
|
51
|
-
fr: { lensName: 'Perspective économique', stakeholder: 'Économie' },
|
|
52
|
-
es: { lensName: 'Perspectiva económica', stakeholder: 'Economía' },
|
|
53
|
-
nl: { lensName: 'Economisch perspectief', stakeholder: 'Economie' },
|
|
54
|
-
ar: { lensName: 'المنظور الاقتصادي', stakeholder: 'الاقتصاد' },
|
|
55
|
-
he: { lensName: 'פרספקטיבה כלכלית', stakeholder: 'הכלכלה' },
|
|
56
|
-
ja: { lensName: '経済的視点', stakeholder: '経済' },
|
|
57
|
-
ko: { lensName: '경제적 관점', stakeholder: '경제' },
|
|
58
|
-
zh: { lensName: '经济视角', stakeholder: '经济' },
|
|
59
|
-
};
|
|
60
|
-
function label(lang) {
|
|
61
|
-
return LENS_LABELS[lang] ?? LENS_LABELS['en'];
|
|
62
|
-
}
|
|
63
|
-
function countKeywords(text, keywords) {
|
|
64
|
-
const lower = text.toLowerCase();
|
|
65
|
-
return keywords.filter(kw => lower.includes(kw.toLowerCase())).length;
|
|
66
|
-
}
|
|
67
|
-
function containsAny(text, keywords) {
|
|
68
|
-
return countKeywords(text, keywords) > 0;
|
|
69
|
-
}
|
|
70
|
-
// ---------------------------------------------------------------------------
|
|
71
|
-
// Scoring helpers
|
|
72
|
-
// ---------------------------------------------------------------------------
|
|
73
|
-
function computeImpact(doc, domains) {
|
|
74
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
75
|
-
const hasEconDomain = domains.some(d => ['fiscal', 'trade', 'labour', 'housing', 'fiscal policy', 'trade', 'labour market'].some(ed => d.toLowerCase().includes(ed)));
|
|
76
|
-
const posCount = countKeywords(allText, POSITIVE_ECON_KEYWORDS);
|
|
77
|
-
const negCount = countKeywords(allText, NEGATIVE_ECON_KEYWORDS);
|
|
78
|
-
const regCount = countKeywords(allText, REGULATION_KEYWORDS);
|
|
79
|
-
const totalSignals = posCount + negCount + regCount;
|
|
80
|
-
if (hasEconDomain && (doc.doktyp === 'prop' || doc.doktyp === 'bet'))
|
|
81
|
-
return 'high';
|
|
82
|
-
if (totalSignals >= 3)
|
|
83
|
-
return 'high';
|
|
84
|
-
if (totalSignals >= 1 || hasEconDomain)
|
|
85
|
-
return 'medium';
|
|
86
|
-
return 'low';
|
|
87
|
-
}
|
|
88
|
-
function computeSentiment(doc) {
|
|
89
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
90
|
-
const posCount = countKeywords(allText, POSITIVE_ECON_KEYWORDS);
|
|
91
|
-
const negCount = countKeywords(allText, NEGATIVE_ECON_KEYWORDS);
|
|
92
|
-
if (posCount > negCount + 1)
|
|
93
|
-
return 'positive';
|
|
94
|
-
if (negCount > posCount + 1)
|
|
95
|
-
return 'negative';
|
|
96
|
-
return 'neutral';
|
|
97
|
-
}
|
|
98
|
-
// ---------------------------------------------------------------------------
|
|
99
|
-
// Summary generation
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
function buildSummary(doc, _cia, _lang, domains) {
|
|
102
|
-
const docType = doc.doktyp || doc.documentType || 'document';
|
|
103
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
104
|
-
const hasReg = containsAny(allText, REGULATION_KEYWORDS);
|
|
105
|
-
const hasTrade = domains.some(d => d.toLowerCase().includes('trade'));
|
|
106
|
-
const hasFiscal = domains.some(d => d.toLowerCase().includes('fiscal'));
|
|
107
|
-
const notes = [];
|
|
108
|
-
if (hasReg)
|
|
109
|
-
notes.push('regulatory compliance costs require business impact assessment');
|
|
110
|
-
if (hasTrade)
|
|
111
|
-
notes.push('trade and competitiveness implications should be modelled');
|
|
112
|
-
if (hasFiscal)
|
|
113
|
-
notes.push('fiscal multiplier effects on GDP and employment warrant quantification');
|
|
114
|
-
const notePhrase = notes.length > 0 ? ` Specifically, ${notes.join('; ')}.` : '';
|
|
115
|
-
return `From the economic perspective, this ${docType} may affect business environment, employment levels, and investment climate.${notePhrase}`.trim();
|
|
116
|
-
}
|
|
117
|
-
// ---------------------------------------------------------------------------
|
|
118
|
-
// SWOT contributions
|
|
119
|
-
// ---------------------------------------------------------------------------
|
|
120
|
-
function buildSwotContributions(doc, _cia, lang) {
|
|
121
|
-
const { stakeholder } = label(lang);
|
|
122
|
-
const contributions = [];
|
|
123
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
124
|
-
if (containsAny(allText, POSITIVE_ECON_KEYWORDS)) {
|
|
125
|
-
contributions.push({
|
|
126
|
-
quadrant: 'opportunity',
|
|
127
|
-
forStakeholder: stakeholder,
|
|
128
|
-
text: 'Document signals economic growth-oriented policy with potential investment and employment benefits.',
|
|
129
|
-
impact: 'high',
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
if (containsAny(allText, NEGATIVE_ECON_KEYWORDS)) {
|
|
133
|
-
contributions.push({
|
|
134
|
-
quadrant: 'threat',
|
|
135
|
-
forStakeholder: stakeholder,
|
|
136
|
-
text: 'Economic contraction indicators detected — assess potential GDP and employment downside risk.',
|
|
137
|
-
impact: 'high',
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
if (containsAny(allText, REGULATION_KEYWORDS)) {
|
|
141
|
-
contributions.push({
|
|
142
|
-
quadrant: 'weakness',
|
|
143
|
-
forStakeholder: stakeholder,
|
|
144
|
-
text: 'New regulatory requirements may increase business compliance costs and reduce competitiveness.',
|
|
145
|
-
impact: 'medium',
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
return contributions;
|
|
149
|
-
}
|
|
150
|
-
// ---------------------------------------------------------------------------
|
|
151
|
-
// Dashboard metrics
|
|
152
|
-
// ---------------------------------------------------------------------------
|
|
153
|
-
function buildDashboardMetrics(doc, _cia) {
|
|
154
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
155
|
-
return [
|
|
156
|
-
{ metricName: 'Growth Signals', value: countKeywords(allText, POSITIVE_ECON_KEYWORDS), unit: 'hits' },
|
|
157
|
-
{ metricName: 'Contraction Signals', value: countKeywords(allText, NEGATIVE_ECON_KEYWORDS), unit: 'hits' },
|
|
158
|
-
{ metricName: 'Regulatory Keywords', value: countKeywords(allText, REGULATION_KEYWORDS), unit: 'hits' },
|
|
159
|
-
];
|
|
160
|
-
}
|
|
161
|
-
// ---------------------------------------------------------------------------
|
|
162
|
-
// Mindmap nodes
|
|
163
|
-
// ---------------------------------------------------------------------------
|
|
164
|
-
function buildMindmapNodes(doc, _lang, domains) {
|
|
165
|
-
const nodes = [];
|
|
166
|
-
const allText = [doc.titel, doc.title, doc.summary, doc.notis].filter(Boolean).join(' ');
|
|
167
|
-
if (containsAny(allText, POSITIVE_ECON_KEYWORDS)) {
|
|
168
|
-
nodes.push({ branch: 'Growth Opportunities', item: 'Investment & Employment', weight: 'critical' });
|
|
169
|
-
}
|
|
170
|
-
if (containsAny(allText, REGULATION_KEYWORDS)) {
|
|
171
|
-
nodes.push({ branch: 'Regulatory Environment', item: 'Business Compliance', weight: 'significant' });
|
|
172
|
-
}
|
|
173
|
-
if (containsAny(allText, NEGATIVE_ECON_KEYWORDS)) {
|
|
174
|
-
nodes.push({ branch: 'Economic Risks', item: 'Contraction Indicators', weight: 'critical' });
|
|
175
|
-
}
|
|
176
|
-
for (const d of domains.filter(d => ['fiscal', 'trade', 'labour'].some(e => d.toLowerCase().includes(e))).slice(0, 2)) {
|
|
177
|
-
nodes.push({ branch: 'Policy Domains', item: d, weight: 'moderate' });
|
|
178
|
-
}
|
|
179
|
-
return nodes;
|
|
180
|
-
}
|
|
181
|
-
// ---------------------------------------------------------------------------
|
|
182
|
-
// Confidence
|
|
183
|
-
// ---------------------------------------------------------------------------
|
|
184
|
-
function computeConfidence(doc, cia) {
|
|
185
|
-
let score = 40;
|
|
186
|
-
if (doc.fullText || doc.fullContent)
|
|
187
|
-
score += 20;
|
|
188
|
-
if (doc.summary || doc.notis)
|
|
189
|
-
score += 10;
|
|
190
|
-
if (cia)
|
|
191
|
-
score += 20;
|
|
192
|
-
if (doc.speeches && doc.speeches.length > 0)
|
|
193
|
-
score += 10;
|
|
194
|
-
return Math.min(100, score);
|
|
195
|
-
}
|
|
196
|
-
// ---------------------------------------------------------------------------
|
|
197
|
-
// Public API
|
|
198
|
-
// ---------------------------------------------------------------------------
|
|
199
|
-
/**
|
|
200
|
-
* Apply the Economic analysis lens to a single parliamentary document.
|
|
201
|
-
*
|
|
202
|
-
* Evaluates GDP/employment implications, business regulatory impact,
|
|
203
|
-
* investment climate effects, and trade and competitiveness.
|
|
204
|
-
*
|
|
205
|
-
* @param doc - The document to analyse
|
|
206
|
-
* @param cia - Optional CIA context
|
|
207
|
-
* @param lang - Target language
|
|
208
|
-
* @returns A `PerspectiveAnalysis` for the economic lens
|
|
209
|
-
*/
|
|
210
|
-
export function analyzeEconomicPerspective(doc, cia, lang, precomputedDomains) {
|
|
211
|
-
const keyActors = ['Finance Ministry', 'Riksbank', 'Employers Federation', 'Trade Unions', 'Chamber of Commerce'];
|
|
212
|
-
const domains = precomputedDomains ?? detectPolicyDomains(doc, 'en');
|
|
213
|
-
const relatedPolicies = [...domains, 'Economic Policy Framework', 'Growth Strategy'].filter(Boolean);
|
|
214
|
-
return {
|
|
215
|
-
lens: 'economic',
|
|
216
|
-
summary: buildSummary(doc, cia, lang, domains),
|
|
217
|
-
impact: computeImpact(doc, domains),
|
|
218
|
-
sentiment: computeSentiment(doc),
|
|
219
|
-
keyActors: keyActors.slice(0, 5),
|
|
220
|
-
relatedPolicies: relatedPolicies.slice(0, 5),
|
|
221
|
-
swotContribution: buildSwotContributions(doc, cia, lang),
|
|
222
|
-
dashboardMetrics: buildDashboardMetrics(doc, cia),
|
|
223
|
-
mindmapNodes: buildMindmapNodes(doc, lang, domains),
|
|
224
|
-
confidence: computeConfidence(doc, cia),
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
//# sourceMappingURL=economic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"economic.js","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/economic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +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 type { RawDocument, CIAContext } from '../../data-transformers/types.js';
|
|
18
|
-
import type { Language } from '../../types/language.js';
|
|
19
|
-
import type { PerspectiveAnalysis } from '../types.js';
|
|
20
|
-
/**
|
|
21
|
-
* Apply the Government analysis lens to a single parliamentary document.
|
|
22
|
-
*
|
|
23
|
-
* Evaluates policy execution feasibility, budget implications, coalition
|
|
24
|
-
* alignment, and international commitment compliance.
|
|
25
|
-
*
|
|
26
|
-
* @param doc - The document to analyse
|
|
27
|
-
* @param cia - Optional CIA context for coalition stability data
|
|
28
|
-
* @param lang - Target language for all generated text
|
|
29
|
-
* @returns A `PerspectiveAnalysis` for the government lens
|
|
30
|
-
*/
|
|
31
|
-
export declare function analyzeGovernmentPerspective(doc: RawDocument, cia: CIAContext | undefined, lang: Language | string, precomputedDomains?: string[]): PerspectiveAnalysis;
|
|
32
|
-
//# sourceMappingURL=government.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"government.d.ts","sourceRoot":"","sources":["../../../../scripts/analysis-framework/lenses/government.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;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;AA2P/H;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,mBAAmB,CAyBrB"}
|