From ec03317170e0a634747b15872ab0f209ad700825 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Mon, 8 Jun 2026 13:01:44 +0200 Subject: [PATCH] feat(frontend): Firmenname + Domain Input + useCompanyOrigin hook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ComplianceCheckTab.tsx bekommt zwei neue UI-Felder oberhalb des PreScanWizard: - Firma → z.B. 'Tesla Germany GmbH' - Domain (Site-Origin) → z.B. 'https://www.tesla.com/de_de' Beide werden: - in localStorage persistiert (Hook _useCompanyOrigin.ts) - im POST-Body als company_name + origin_domain mitgeschickt - haben Vorrang vor LLM-extracted_profile (Backend nutzt eingegebene Werte falls vorhanden, fallback auf Inferenz) Datei jetzt 489 LOC (war vorher 461 + 28 für die Inputs). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../agent/_components/ComplianceCheckTab.tsx | 28 +++++++++++++ .../agent/_components/_useCompanyOrigin.ts | 40 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 admin-compliance/app/sdk/agent/_components/_useCompanyOrigin.ts diff --git a/admin-compliance/app/sdk/agent/_components/ComplianceCheckTab.tsx b/admin-compliance/app/sdk/agent/_components/ComplianceCheckTab.tsx index e4d788c6..de2e2576 100644 --- a/admin-compliance/app/sdk/agent/_components/ComplianceCheckTab.tsx +++ b/admin-compliance/app/sdk/agent/_components/ComplianceCheckTab.tsx @@ -11,10 +11,12 @@ import { STORAGE_KEY_CHECK_ID, countWords, initState, type DocState, type DocsState, type HistoryEntry, } from './_compliance_storage' +import { useCompanyOrigin } from './_useCompanyOrigin' export function ComplianceCheckTab() { const [docs, setDocs] = useState(initState) + const { companyName, setCompanyName, originDomain, setOriginDomain } = useCompanyOrigin() const [scanContext, setScanContext] = useScanContext() const [useAgent, setUseAgent] = useState(false) const [tdmOverride, setTdmOverride] = useState(false) @@ -145,6 +147,8 @@ export function ComplianceCheckTab() { use_agent: useAgent, tdm_override: tdmOverride && tdmOverrideReason.trim().length >= 10, tdm_override_reason: tdmOverrideReason.trim(), + company_name: companyName.trim() || undefined, + origin_domain: originDomain.trim() || undefined, // P79 — Pre-Scan-Wizard 8 Pflichtfelder; treibt MC-Scope-Filter (P72) scan_context: scanContext, }), @@ -230,6 +234,30 @@ export function ComplianceCheckTab() {

+ {/* Firma + Domain (priorisiert vor extracted_profile-LLM-Inferenz) */} +
+ + +
+ {/* P79 Pre-Scan-Wizard — 8 Pflichtfelder zum MC-Scope-Filter (P72) */} diff --git a/admin-compliance/app/sdk/agent/_components/_useCompanyOrigin.ts b/admin-compliance/app/sdk/agent/_components/_useCompanyOrigin.ts new file mode 100644 index 00000000..f5daeda7 --- /dev/null +++ b/admin-compliance/app/sdk/agent/_components/_useCompanyOrigin.ts @@ -0,0 +1,40 @@ +/** + * Custom hook: persistente Firmenname + Origin-Domain für die + * ComplianceCheckTab-Form. Priorisierte Werte vor der LLM-basierten + * extracted_profile-Inferenz. + */ + +import { useEffect, useState } from 'react' + +const STORAGE_KEY_COMPANY = 'compliance-check-company-name' +const STORAGE_KEY_DOMAIN = 'compliance-check-origin-domain' + + +function readInitial(key: string): string { + if (typeof window === 'undefined') return '' + return localStorage.getItem(key) || '' +} + + +export function useCompanyOrigin() { + const [companyName, setCompanyName] = useState( + () => readInitial(STORAGE_KEY_COMPANY), + ) + const [originDomain, setOriginDomain] = useState( + () => readInitial(STORAGE_KEY_DOMAIN), + ) + + useEffect(() => { + try { + localStorage.setItem(STORAGE_KEY_COMPANY, companyName) + } catch { /* quota */ } + }, [companyName]) + + useEffect(() => { + try { + localStorage.setItem(STORAGE_KEY_DOMAIN, originDomain) + } catch { /* quota */ } + }, [originDomain]) + + return { companyName, setCompanyName, originDomain, setOriginDomain } +}