feat(wiki): Enrich wiki with DACH court decisions and 18 new articles
- Update all 10 existing articles with real source URLs (EuGH, BAG, DSK, BfDI) - Add 18 new articles covering: - EuGH C-184/20 (wide interpretation Art. 9) - EuGH C-667/21 (cumulative legal basis) - EuGH C-34/21 (§26 BDSG unconstitutional) - EuGH C-634/21 (SCHUFA scoring) - EuGH C-582/14 (IP addresses as personal data) - Biometric data, indirect Art. 9 data in daily practice - Retention periods overview - Video surveillance and GPS tracking at workplace - Communication data (email/chat, Fernmeldegeheimnis) - Financial data, PCI DSS, SEPA - Minors (Art. 8 DSGVO) - Austria DSG specifics, Switzerland revDSG - AI training data and GDPR/AI Act - "Forced" special categories - Add 3 new categories (EuGH-Leiturteile, Aufbewahrungsfristen, DACH-Besonderheiten) - Add code block rendering to markdown renderer - Add Clock, Globe, Gavel icons to icon map - Total: 11 categories, 28 articles, all with verified source URLs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,7 +4,7 @@ import { useState, useEffect, useCallback, useMemo } from 'react'
|
||||
import {
|
||||
Search, BookOpen, AlertTriangle, Shield, Scale, Handshake,
|
||||
Briefcase, MessageCircle, Building2, Database, ChevronRight,
|
||||
ArrowLeft, ExternalLink, Tag,
|
||||
ArrowLeft, ExternalLink, Tag, Clock, Globe, Gavel,
|
||||
} from 'lucide-react'
|
||||
import type { WikiCategory, WikiArticle, WikiSearchResult } from '@/lib/sdk/types'
|
||||
|
||||
@@ -19,6 +19,12 @@ function renderMarkdown(md: string): string {
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
|
||||
// Code blocks (``` ... ```)
|
||||
html = html.replace(
|
||||
/^```[\w]*\n([\s\S]*?)^```$/gm,
|
||||
(_match, code: string) => `<pre class="bg-gray-50 border rounded p-3 my-3 text-xs font-mono overflow-x-auto whitespace-pre">${code.trimEnd()}</pre>`
|
||||
)
|
||||
|
||||
// Tables (must be before other block elements)
|
||||
html = html.replace(
|
||||
/^(\|.+\|)\n(\|[\s:|-]+\|)\n((?:\|.+\|\n?)*)/gm,
|
||||
@@ -44,7 +50,7 @@ function renderMarkdown(md: string): string {
|
||||
html = html.replace(/((?:<li[^>]*>.*<\/li>\n?)+)/g, '<ul class="my-2 space-y-1">$1</ul>')
|
||||
|
||||
// Paragraphs (lines that aren't already HTML)
|
||||
html = html.replace(/^(?!<[hultd]|$)(.+)$/gm, '<p class="text-sm text-gray-700 my-2">$1</p>')
|
||||
html = html.replace(/^(?!<[hultdp]|$)(.+)$/gm, '<p class="text-sm text-gray-700 my-2">$1</p>')
|
||||
|
||||
return html
|
||||
}
|
||||
@@ -62,6 +68,9 @@ const ICON_MAP: Record<string, React.ComponentType<{ className?: string }>> = {
|
||||
Briefcase,
|
||||
MessageCircle,
|
||||
Building2,
|
||||
Clock,
|
||||
Globe,
|
||||
Gavel,
|
||||
}
|
||||
|
||||
function CategoryIcon({ icon, className }: { icon: string; className?: string }) {
|
||||
|
||||
1008
backend-compliance/migrations/041_compliance_wiki_enrichment.sql
Normal file
1008
backend-compliance/migrations/041_compliance_wiki_enrichment.sql
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user