feat: Rechtliche-Texte-Module auf 100% — Dead Code, RAG-Fallback, Fehler-UI
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 33s
CI / test-python-backend-compliance (push) Successful in 35s
CI / test-python-document-crawler (push) Successful in 24s
CI / test-python-dsms-gateway (push) Successful in 18s

Paket A:
- einwilligungen/page.tsx: mockRecords (80 Zeilen toter Code) entfernt
- consent/page.tsx: RAG-Suggest-Button im Create-Dialog (+handleRagSuggest)
- workflow/page.tsx: uploadError State + rotes Fehler-Banner statt alert()

Paket B:
- cookie-banner/page.tsx: mockCategories → DEFAULT_COOKIE_CATEGORIES (Bug-Fix)
  DB-Kategorien haben jetzt immer Vorrang — kein Mock-Überschreiben mehr
- test_einwilligungen_routes.py: +4 TestCookieBannerEmbedCode-Tests (36 gesamt)

Paket C:
- searchTemplates.ts: neue Hilfsdatei mit zwei-stufiger Suche
  1. KLAUSUR_SERVICE (5s Timeout), 2. RAG-Fallback via ai-compliance-sdk
- document-generator/page.tsx: ServiceMode State + UI-Badges (rag-only/offline)
- searchTemplates.test.ts: 3 Vitest-Tests (KLAUSUR ok / RAG-Fallback / offline)

flow-data.ts: alle 5 Rechtliche-Texte-Module auf completion: 100

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-03 22:27:13 +01:00
parent 30bccfa39a
commit 7a55955439
9 changed files with 354 additions and 333 deletions

View File

@@ -86,6 +86,7 @@ export default function WorkflowPage() {
const [showApprovalModal, setShowApprovalModal] = useState<'approve' | 'reject' | null>(null)
const [showCompareView, setShowCompareView] = useState(false)
const [uploading, setUploading] = useState(false)
const [uploadError, setUploadError] = useState<string | null>(null)
const [showNewDocModal, setShowNewDocModal] = useState(false)
const [newDocForm, setNewDocForm] = useState({ type: 'privacy_policy', name: '', description: '' })
const [creatingDoc, setCreatingDoc] = useState(false)
@@ -254,11 +255,11 @@ export default function WorkflowPage() {
setEditedContent(editorRef.current.innerHTML)
}
} else {
const errorData = await response.json()
alert('Fehler beim Importieren: ' + (errorData.detail || 'Unbekannter Fehler'))
const errorData = await response.json().catch(() => ({}))
setUploadError('Fehler beim Importieren: ' + (errorData.detail || 'Unbekannter Fehler'))
}
} catch (e) {
alert('Fehler beim Hochladen: ' + (e instanceof Error ? e.message : 'Unbekannter Fehler'))
setUploadError('Fehler beim Hochladen: ' + (e instanceof Error ? e.message : 'Unbekannter Fehler'))
} finally {
setUploading(false)
if (fileInputRef.current) {
@@ -768,6 +769,13 @@ export default function WorkflowPage() {
</div>
)}
{uploadError && (
<div className="bg-red-50 border border-red-200 rounded p-3 text-sm text-red-700 flex items-center justify-between">
<span>{uploadError}</span>
<button onClick={() => setUploadError(null)} className="ml-4 text-red-500 hover:text-red-700"></button>
</div>
)}
{/* Split View Editor - Synchronized Scrolling */}
<div className="grid grid-cols-2 gap-4">
{/* Left: Current Published Version */}