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.
Files changed (168) hide show
  1. package/dist/lib/dashboards/coalition-dashboard.d.ts.map +1 -1
  2. package/dist/lib/dashboards/coalition-dashboard.js +25 -9
  3. package/dist/lib/dashboards/coalition-dashboard.js.map +1 -1
  4. package/dist/lib/dashboards/coalition-loader.d.ts.map +1 -1
  5. package/dist/lib/dashboards/coalition-loader.js +68 -32
  6. package/dist/lib/dashboards/coalition-loader.js.map +1 -1
  7. package/dist/lib/shared/chart-factory.d.ts +9 -2
  8. package/dist/lib/shared/chart-factory.d.ts.map +1 -1
  9. package/dist/lib/shared/chart-factory.js +9 -2
  10. package/dist/lib/shared/chart-factory.js.map +1 -1
  11. package/dist/lib/shared/theme.d.ts +1 -18
  12. package/dist/lib/shared/theme.d.ts.map +1 -1
  13. package/dist/lib/shared/theme.js +1 -18
  14. package/dist/lib/shared/theme.js.map +1 -1
  15. package/dist/scripts/analysis-reader.d.ts +2 -1
  16. package/dist/scripts/analysis-reader.d.ts.map +1 -1
  17. package/dist/scripts/analysis-reader.js.map +1 -1
  18. package/dist/scripts/data-transformers/content-generators/index.d.ts +32 -4
  19. package/dist/scripts/data-transformers/content-generators/index.d.ts.map +1 -1
  20. package/dist/scripts/data-transformers/content-generators/index.js +4 -2
  21. package/dist/scripts/data-transformers/content-generators/index.js.map +1 -1
  22. package/dist/scripts/data-transformers/content-generators/shared.d.ts +44 -2
  23. package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +1 -1
  24. package/dist/scripts/data-transformers/content-generators/shared.js +9 -3
  25. package/dist/scripts/data-transformers/content-generators/shared.js.map +1 -1
  26. package/dist/scripts/generate-news-enhanced/config.d.ts +5 -4
  27. package/dist/scripts/generate-news-enhanced/config.d.ts.map +1 -1
  28. package/dist/scripts/generate-news-enhanced/config.js +3 -3
  29. package/dist/scripts/generate-news-enhanced/config.js.map +1 -1
  30. package/dist/scripts/generate-news-enhanced/generators.d.ts.map +1 -1
  31. package/dist/scripts/generate-news-enhanced/generators.js +38 -15
  32. package/dist/scripts/generate-news-enhanced/generators.js.map +1 -1
  33. package/dist/scripts/generate-news-enhanced/helpers.d.ts +1 -2
  34. package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +1 -1
  35. package/dist/scripts/generate-news-enhanced/helpers.js +31 -1
  36. package/dist/scripts/generate-news-enhanced/helpers.js.map +1 -1
  37. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +12 -1
  38. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +1 -1
  39. package/dist/scripts/generate-news-enhanced/swot-analyzer.js +48 -0
  40. package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +1 -1
  41. package/dist/scripts/news-types/breaking-news.d.ts.map +1 -1
  42. package/dist/scripts/news-types/breaking-news.js +5 -1
  43. package/dist/scripts/news-types/breaking-news.js.map +1 -1
  44. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +64 -1
  45. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +1 -1
  46. package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +1 -1
  47. package/dist/scripts/pre-article-analysis.d.ts.map +1 -1
  48. package/dist/scripts/pre-article-analysis.js +20 -7
  49. package/dist/scripts/pre-article-analysis.js.map +1 -1
  50. package/dist/scripts/types/article.d.ts +33 -3
  51. package/dist/scripts/types/article.d.ts.map +1 -1
  52. package/package.json +3 -3
  53. package/dist/scripts/ai-analysis/coalition-detector.d.ts +0 -28
  54. package/dist/scripts/ai-analysis/coalition-detector.d.ts.map +0 -1
  55. package/dist/scripts/ai-analysis/coalition-detector.js +0 -242
  56. package/dist/scripts/ai-analysis/coalition-detector.js.map +0 -1
  57. package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts +0 -73
  58. package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts.map +0 -1
  59. package/dist/scripts/ai-analysis/dashboard-analyzer.js +0 -511
  60. package/dist/scripts/ai-analysis/dashboard-analyzer.js.map +0 -1
  61. package/dist/scripts/ai-analysis/document-analyzer.d.ts +0 -196
  62. package/dist/scripts/ai-analysis/document-analyzer.d.ts.map +0 -1
  63. package/dist/scripts/ai-analysis/document-analyzer.js +0 -1001
  64. package/dist/scripts/ai-analysis/document-analyzer.js.map +0 -1
  65. package/dist/scripts/ai-analysis/domains/index.d.ts +0 -15
  66. package/dist/scripts/ai-analysis/domains/index.d.ts.map +0 -1
  67. package/dist/scripts/ai-analysis/domains/index.js +0 -494
  68. package/dist/scripts/ai-analysis/domains/index.js.map +0 -1
  69. package/dist/scripts/ai-analysis/helpers.d.ts +0 -43
  70. package/dist/scripts/ai-analysis/helpers.d.ts.map +0 -1
  71. package/dist/scripts/ai-analysis/helpers.js +0 -79
  72. package/dist/scripts/ai-analysis/helpers.js.map +0 -1
  73. package/dist/scripts/ai-analysis/index.d.ts +0 -15
  74. package/dist/scripts/ai-analysis/index.d.ts.map +0 -1
  75. package/dist/scripts/ai-analysis/index.js +0 -14
  76. package/dist/scripts/ai-analysis/index.js.map +0 -1
  77. package/dist/scripts/ai-analysis/pipeline.d.ts +0 -41
  78. package/dist/scripts/ai-analysis/pipeline.d.ts.map +0 -1
  79. package/dist/scripts/ai-analysis/pipeline.js +0 -208
  80. package/dist/scripts/ai-analysis/pipeline.js.map +0 -1
  81. package/dist/scripts/ai-analysis/political-significance.d.ts +0 -63
  82. package/dist/scripts/ai-analysis/political-significance.d.ts.map +0 -1
  83. package/dist/scripts/ai-analysis/political-significance.js +0 -227
  84. package/dist/scripts/ai-analysis/political-significance.js.map +0 -1
  85. package/dist/scripts/ai-analysis/quality-assessor.d.ts +0 -104
  86. package/dist/scripts/ai-analysis/quality-assessor.d.ts.map +0 -1
  87. package/dist/scripts/ai-analysis/quality-assessor.js +0 -554
  88. package/dist/scripts/ai-analysis/quality-assessor.js.map +0 -1
  89. package/dist/scripts/ai-analysis/swot/index.d.ts +0 -56
  90. package/dist/scripts/ai-analysis/swot/index.d.ts.map +0 -1
  91. package/dist/scripts/ai-analysis/swot/index.js +0 -360
  92. package/dist/scripts/ai-analysis/swot/index.js.map +0 -1
  93. package/dist/scripts/ai-analysis/swot/placeholders.d.ts +0 -30
  94. package/dist/scripts/ai-analysis/swot/placeholders.d.ts.map +0 -1
  95. package/dist/scripts/ai-analysis/swot/placeholders.js +0 -381
  96. package/dist/scripts/ai-analysis/swot/placeholders.js.map +0 -1
  97. package/dist/scripts/ai-analysis/types.d.ts +0 -333
  98. package/dist/scripts/ai-analysis/types.d.ts.map +0 -1
  99. package/dist/scripts/ai-analysis/types.js +0 -19
  100. package/dist/scripts/ai-analysis/types.js.map +0 -1
  101. package/dist/scripts/ai-analysis/visualisation/index.d.ts +0 -15
  102. package/dist/scripts/ai-analysis/visualisation/index.d.ts.map +0 -1
  103. package/dist/scripts/ai-analysis/visualisation/index.js +0 -179
  104. package/dist/scripts/ai-analysis/visualisation/index.js.map +0 -1
  105. package/dist/scripts/analysis-framework/cross-reference.d.ts +0 -35
  106. package/dist/scripts/analysis-framework/cross-reference.d.ts.map +0 -1
  107. package/dist/scripts/analysis-framework/cross-reference.js +0 -290
  108. package/dist/scripts/analysis-framework/cross-reference.js.map +0 -1
  109. package/dist/scripts/analysis-framework/index.d.ts +0 -79
  110. package/dist/scripts/analysis-framework/index.d.ts.map +0 -1
  111. package/dist/scripts/analysis-framework/index.js +0 -133
  112. package/dist/scripts/analysis-framework/index.js.map +0 -1
  113. package/dist/scripts/analysis-framework/lenses/citizen.d.ts +0 -29
  114. package/dist/scripts/analysis-framework/lenses/citizen.d.ts.map +0 -1
  115. package/dist/scripts/analysis-framework/lenses/citizen.js +0 -220
  116. package/dist/scripts/analysis-framework/lenses/citizen.js.map +0 -1
  117. package/dist/scripts/analysis-framework/lenses/economic.d.ts +0 -29
  118. package/dist/scripts/analysis-framework/lenses/economic.d.ts.map +0 -1
  119. package/dist/scripts/analysis-framework/lenses/economic.js +0 -227
  120. package/dist/scripts/analysis-framework/lenses/economic.js.map +0 -1
  121. package/dist/scripts/analysis-framework/lenses/government.d.ts +0 -32
  122. package/dist/scripts/analysis-framework/lenses/government.d.ts.map +0 -1
  123. package/dist/scripts/analysis-framework/lenses/government.js +0 -265
  124. package/dist/scripts/analysis-framework/lenses/government.js.map +0 -1
  125. package/dist/scripts/analysis-framework/lenses/international.d.ts +0 -29
  126. package/dist/scripts/analysis-framework/lenses/international.d.ts.map +0 -1
  127. package/dist/scripts/analysis-framework/lenses/international.js +0 -248
  128. package/dist/scripts/analysis-framework/lenses/international.js.map +0 -1
  129. package/dist/scripts/analysis-framework/lenses/media.d.ts +0 -29
  130. package/dist/scripts/analysis-framework/lenses/media.d.ts.map +0 -1
  131. package/dist/scripts/analysis-framework/lenses/media.js +0 -211
  132. package/dist/scripts/analysis-framework/lenses/media.js.map +0 -1
  133. package/dist/scripts/analysis-framework/lenses/opposition.d.ts +0 -29
  134. package/dist/scripts/analysis-framework/lenses/opposition.d.ts.map +0 -1
  135. package/dist/scripts/analysis-framework/lenses/opposition.js +0 -234
  136. package/dist/scripts/analysis-framework/lenses/opposition.js.map +0 -1
  137. package/dist/scripts/analysis-framework/methodology-types.d.ts +0 -309
  138. package/dist/scripts/analysis-framework/methodology-types.d.ts.map +0 -1
  139. package/dist/scripts/analysis-framework/methodology-types.js +0 -38
  140. package/dist/scripts/analysis-framework/methodology-types.js.map +0 -1
  141. package/dist/scripts/analysis-framework/political-classification.d.ts +0 -58
  142. package/dist/scripts/analysis-framework/political-classification.d.ts.map +0 -1
  143. package/dist/scripts/analysis-framework/political-classification.js +0 -414
  144. package/dist/scripts/analysis-framework/political-classification.js.map +0 -1
  145. package/dist/scripts/analysis-framework/political-risk-assessment.d.ts +0 -74
  146. package/dist/scripts/analysis-framework/political-risk-assessment.d.ts.map +0 -1
  147. package/dist/scripts/analysis-framework/political-risk-assessment.js +0 -656
  148. package/dist/scripts/analysis-framework/political-risk-assessment.js.map +0 -1
  149. package/dist/scripts/analysis-framework/political-threat-analysis.d.ts +0 -65
  150. package/dist/scripts/analysis-framework/political-threat-analysis.d.ts.map +0 -1
  151. package/dist/scripts/analysis-framework/political-threat-analysis.js +0 -553
  152. package/dist/scripts/analysis-framework/political-threat-analysis.js.map +0 -1
  153. package/dist/scripts/analysis-framework/significance-scorer.d.ts +0 -62
  154. package/dist/scripts/analysis-framework/significance-scorer.d.ts.map +0 -1
  155. package/dist/scripts/analysis-framework/significance-scorer.js +0 -196
  156. package/dist/scripts/analysis-framework/significance-scorer.js.map +0 -1
  157. package/dist/scripts/analysis-framework/types.d.ts +0 -138
  158. package/dist/scripts/analysis-framework/types.d.ts.map +0 -1
  159. package/dist/scripts/analysis-framework/types.js +0 -12
  160. package/dist/scripts/analysis-framework/types.js.map +0 -1
  161. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts +0 -89
  162. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts.map +0 -1
  163. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js +0 -667
  164. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js.map +0 -1
  165. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts +0 -83
  166. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts.map +0 -1
  167. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js +0 -219
  168. 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"}