+ Bestimmte in {legal.projectName} verwendete Markierungen und Symbole stammen von der Feuerwehr + Koordination Schweiz FKS. Die Verwendung innerhalb von {legal.projectName} erfolgt mit schriftlicher + Genehmigung. Bildquelle: Feuerwehr Koordination Schweiz FKS. +
++ Die Genehmigung bezieht sich auf die Verwendung innerhalb des beschriebenen Webprojekts. Sie + begründet keine offizielle Partnerschaft, Prüfung, Zertifizierung oder Empfehlung von + {' '}{legal.projectName} durch die FKS. +
++ Nutzer erhalten keine weitergehenden Rechte, die Symbole ausserhalb der von {legal.projectName} + {' '}vorgesehenen Funktionen separat zu vervielfältigen, weiterzugeben, zu verkaufen oder in anderen + Anwendungen zu verwenden. Zulässig bleibt die Verwendung in ordnungsgemäss mit {legal.projectName} + {' '}erstellten Lageplänen und Exporten, soweit dies vom vorgesehenen Funktionsumfang und der + erteilten Genehmigung gedeckt ist. Siehe auch Quellen und Lizenzen. +
+Im gesetzlich zulässigen Umfang gilt:
diff --git a/src/app/page.tsx b/src/app/page.tsx index 372c13f..9a26f99 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -92,7 +92,7 @@ export default function LandingPage() { name: 'Welche Symbole sind verfügbar?', acceptedAnswer: { '@type': 'Answer', - text: 'Alle 117 offiziellen FKS/BABS-Signaturen sind integriert. Zusätzlich können eigene Symbole hochgeladen werden.', + text: 'Alle 117 taktischen FEUKOS-Symbole der Feuerwehr Koordination Schweiz FKS sind integriert (Bildquelle: FKS). Zusätzlich können eigene Symbole hochgeladen werden.', }, }, { @@ -352,7 +352,7 @@ export default function LandingPage() {© {new Date().getFullYear()} Lageplan — Perparim Ziberi. Alle Rechte vorbehalten.
-Taktische Symbole: Bildquelle Feuerwehr Koordination Schweiz FKS
+Bildquelle: Feuerwehr Koordination Schweiz FKS · Quellen & Lizenzen
v{process.env.APP_VERSION}
{fks.note}
++ Hinweis: Es besteht keine offizielle Partnerschaft, Zertifizierung, Prüfung, behördliche + Anerkennung oder Empfehlung von {legal.projectName} durch die FKS. Nutzer erhalten keine + weitergehenden Rechte, die Symbole ausserhalb der von {legal.projectName} vorgesehenen + Funktionen separat zu vervielfältigen, weiterzugeben, zu verkaufen oder in anderen Anwendungen + zu verwenden. +
+Karten-, Adress- und Geodaten können unvollständig, ungenau oder veraltet sein.
++ Von Benutzern hochgeladene Inhalte (Pläne, Logos, eigene Symbole) verbleiben bei den jeweiligen + Benutzern bzw. Organisationen. Für die Rechtmässigkeit hochgeladener Inhalte sind die Benutzer + verantwortlich (siehe Nutzungsbedingungen). +
++ Keine Patienten-, Gesundheits-, Polizei-, Passwort-, Zugangs- oder besonders schützenswerten Daten eintragen. +
)} diff --git a/src/components/layout/right-sidebar.tsx b/src/components/layout/right-sidebar.tsx index 7650654..42bf832 100644 --- a/src/components/layout/right-sidebar.tsx +++ b/src/components/layout/right-sidebar.tsx @@ -326,6 +326,10 @@ export function RightSidebar({ onSymbolDrop, onSymbolSelect, canEdit, isOpen, on />{totalSymbols} Symbole verfügbar
++ Bildquelle: Feuerwehr Koordination Schweiz FKS ·{' '} + Quellen & Lizenzen +
{isLoading && ( diff --git a/src/components/legal/legal-page.tsx b/src/components/legal/legal-page.tsx index 227ea3e..2d48113 100644 --- a/src/components/legal/legal-page.tsx +++ b/src/components/legal/legal-page.tsx @@ -11,6 +11,7 @@ export const LEGAL_LINKS: { href: string; label: string }[] = [ { href: '/nutzungsbedingungen', label: 'Nutzungsbedingungen' }, { href: '/verantwortungsvolle-nutzung', label: 'Verantwortungsvolle Nutzung' }, { href: '/sicherheit', label: 'Sicherheit' }, + { href: '/quellen-und-lizenzen', label: 'Quellen & Lizenzen' }, { href: '/organisationen/datenschutzvereinbarung', label: 'Datenschutzvereinbarung (Org.)' }, { href: '/unterstuetzen', label: 'Unterstützen' }, ] diff --git a/src/config/__tests__/legal-config.test.ts b/src/config/__tests__/legal-config.test.ts index 2487f0a..5215a62 100644 --- a/src/config/__tests__/legal-config.test.ts +++ b/src/config/__tests__/legal-config.test.ts @@ -18,9 +18,9 @@ describe('isPlaceholder', () => { }) describe('legal config', () => { - it('führt genau 5 Rechtsdokumenttypen', () => { + it('führt die erwarteten Rechtsdokumenttypen (inkl. FKS-Quellenangabe)', () => { expect(Object.keys(legal.documents).sort()).toEqual( - ['dataProcessingAgreement', 'organizationDeclaration', 'privacy', 'responsibleUse', 'terms'] + ['dataProcessingAgreement', 'fksAttribution', 'organizationDeclaration', 'privacy', 'responsibleUse', 'terms'] ) }) it('listet nur real genutzte Subprozessoren (keine erfundenen wie Google Analytics)', () => { diff --git a/src/config/legal.ts b/src/config/legal.ts index 37d88d3..97dc7bc 100644 --- a/src/config/legal.ts +++ b/src/config/legal.ts @@ -62,6 +62,8 @@ export const legal = { operatorName: env('LEGAL_OPERATOR_NAME', 'Perparim Ziberi'), /** Rechtsform */ operatorLegalForm: env('LEGAL_OPERATOR_FORM', 'Privatperson'), + /** Betreibertyp (Privatperson). Eine spätere Übertragung auf einen Verein ist nur eine offene Option. */ + operatorType: env('LEGAL_OPERATOR_TYPE', 'Privatperson'), /** Vollständige Postadresse des Betreibers */ postalAddress: env('LEGAL_POSTAL_ADDRESS', 'Anglikerstrasse 56, 5612 Villmergen'), @@ -96,18 +98,28 @@ export const legal = { // Nichts erfinden: nur tatsächlich im Code kontaktierte Dienste. Sitz/Region, die nicht // sicher bekannt ist, bleibt Platzhalter. processors: [ - { name: 'OpenStreetMap (Tiles)', purpose: 'Basiskarte', data: 'Kachel-Koordinaten (Kartenausschnitt)', region: '[REGION – OSM Foundation, EU/UK]' }, - { name: 'Esri ArcGIS World Imagery', purpose: 'Satellitenkarte', data: 'Kachel-Koordinaten', region: '[REGION]' }, - { name: 'swisstopo (geo.admin.ch)', purpose: 'Schweizer Landeskarte', data: 'Kachel-Koordinaten', region: 'Schweiz' }, - { name: 'Nominatim (OpenStreetMap)', purpose: 'Adress-/Reverse-Geocoding', data: 'Adress-/Ortssuche, GPS-Koordinaten', region: '[REGION – OSM Foundation]' }, - { name: 'Open-Meteo', purpose: 'Wind- und Höhendaten', data: 'Koordinaten', region: '[REGION – EU]' }, - { name: 'Open-Elevation', purpose: 'Höhendaten (Fallback)', data: 'Koordinaten', region: '[REGION]' }, - { name: 'Stripe', purpose: 'Zahlungsabwicklung freiwilliger Unterstützungsbeiträge', data: 'Betrag, freiwilliger Name/Nachricht, Zahlungsdaten (direkt bei Stripe)', region: '[REGION – u.a. USA/EU; Auslandbearbeitung möglich]', optional: true }, - { name: 'SMTP-/E-Mail-Anbieter', purpose: 'System-E-Mails (Verifizierung, Reset, Kontakt, Einladungen)', data: 'E-Mail-Adresse, Nachrichteninhalt', region: '[REGION – abhängig vom konfigurierten Anbieter]', optional: true }, + { name: 'OpenStreetMap Foundation (Tiles)', purpose: 'Basiskarte', data: 'Kachel-Koordinaten (Kartenausschnitt), IP-Adresse', region: 'Vereinigtes Königreich / EU' }, + { name: 'Esri ArcGIS World Imagery', purpose: 'Satellitenkarte', data: 'Kachel-Koordinaten, IP-Adresse', region: 'USA (Auslandbearbeitung möglich)' }, + { name: 'swisstopo (geo.admin.ch)', purpose: 'Schweizer Landeskarte', data: 'Kachel-Koordinaten, IP-Adresse', region: 'Schweiz' }, + { name: 'Nominatim (OpenStreetMap Foundation)', purpose: 'Adress-/Reverse-Geocoding', data: 'Adress-/Ortssuche, GPS-Koordinaten, IP-Adresse', region: 'Vereinigtes Königreich / EU' }, + { name: 'Open-Meteo', purpose: 'Wind- und Höhendaten', data: 'Koordinaten, IP-Adresse', region: 'EU (Deutschland)' }, + { name: 'Open-Elevation', purpose: 'Höhendaten (Fallback)', data: 'Koordinaten, IP-Adresse', region: 'Region nicht abschliessend geklärt (Community-Dienst)' }, + { name: 'Stripe', purpose: 'Zahlungsabwicklung freiwilliger Unterstützungsbeiträge', data: 'Betrag, freiwilliger Name/Nachricht, Zahlungsdaten (direkt bei Stripe)', region: 'USA / EU (Auslandbearbeitung möglich)', optional: true }, + { name: 'SMTP-/E-Mail-Anbieter', purpose: 'System-E-Mails (Verifizierung, Reset, Kontakt, Einladungen)', data: 'E-Mail-Adresse, Nachrichteninhalt', region: 'abhängig vom konfigurierten Anbieter', optional: true }, { name: 'MinIO (Objektspeicher, Eigenbetrieb)', purpose: 'Datei-/Bild-Uploads (Pläne, Logos, Symbole)', data: 'hochgeladene Dateien', region: 'Schweiz (beim Betreiber)' }, { name: 'PostgreSQL (Datenbank, Eigenbetrieb)', purpose: 'Primäre Datenhaltung', data: 'Konto-, Organisations-, Plan- und Journaldaten', region: 'Schweiz (beim Betreiber)' }, ] as ExternalProcessor[], + // ─── FKS/FEUKOS-Bildmaterial (schriftliche Genehmigung) ────────── + // Die geforderte Quellenangabe lautet exakt "Feuerwehr Koordination Schweiz FKS". + // KEINE offizielle Partnerschaft, Zertifizierung, Prüfung oder Empfehlung behaupten. + fksAttribution: { + label: 'Feuerwehr Koordination Schweiz FKS', + sourceLine: 'Bildquelle: Feuerwehr Koordination Schweiz FKS', + approvalDate: '17. Februar 2026', + note: 'Die FEUKOS-Markierungen und -Symbole werden mit schriftlicher Genehmigung der Feuerwehr Koordination Schweiz FKS verwendet. Die Genehmigung bezieht sich auf die Verwendung des Bildmaterials innerhalb von lageplan.ch und stellt keine offizielle Partnerschaft, Zertifizierung, Prüfung oder Empfehlung von lageplan.ch durch die FKS dar.', + }, + // ─── Rechtsdokumente: bewusst gesetzte Versionen ────────── // WICHTIG: Version manuell erhöhen, wenn sich der Inhalt WESENTLICH ändert (löst Re-Consent aus). // Nicht automatisch aus minimalen Dateiänderungen ableiten. @@ -117,6 +129,7 @@ export const legal = { organizationDeclaration: { version: '1.0.0', publishedAt: '2026-07-23' }, responsibleUse: { version: '1.0.0', publishedAt: '2026-07-23' }, dataProcessingAgreement: { version: '1.0.0', publishedAt: '2026-07-23' }, + fksAttribution: { version: '1.0.0', publishedAt: '2026-07-24' }, } as Record