feat(legal): Rechtstexte auf finale Fassung (v1.7.5)
Auf Wunsch produktiv statt Entwurf:
- Entwurfs-Kennzeichnung/Warnbanner entfernt; dezenter Standard-Hinweis im Footer der Rechtsseiten
("nach bestem Wissen und Gewissen erstellt und laufend gepflegt") — keine Behauptung juristischer Prüfung
- Dokumentversionen 1.0.0-draft -> 1.0.0 (Config + Migration-Seeding)
- AVV: Entwurfs-Sprache entfernt, als zwischen den Parteien wirksame Vereinbarung formuliert
- operatorName Default auf "Pepe Ziberi" (aus Repo bekannt); übrige Betreiberangaben bleiben
bis zur Bestätigung Platzhalter (Adresse/Rechtsform/Serverstandort etc.)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lageplan",
|
||||
"version": "1.7.4",
|
||||
"version": "1.7.5",
|
||||
"description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -194,11 +194,11 @@ async function migrate() {
|
||||
console.log(' [4b] Seeding legal documents...')
|
||||
const crypto = require('crypto')
|
||||
const LEGAL_DOCS = [
|
||||
{ type: 'TERMS', version: '1.0.0-draft', title: 'Nutzungsbedingungen', url: '/nutzungsbedingungen', publishedAt: '2026-07-23' },
|
||||
{ type: 'PRIVACY', version: '1.0.0-draft', title: 'Datenschutzerklärung', url: '/datenschutz', publishedAt: '2026-07-23' },
|
||||
{ type: 'ORGANIZATION_DECLARATION', version: '1.0.0-draft', title: 'Organisationsbestätigung', url: '/verantwortungsvolle-nutzung', publishedAt: '2026-07-23' },
|
||||
{ type: 'RESPONSIBLE_USE', version: '1.0.0-draft', title: 'Verantwortungsvolle Nutzung', url: '/verantwortungsvolle-nutzung', publishedAt: '2026-07-23' },
|
||||
{ type: 'DATA_PROCESSING_AGREEMENT', version: '1.0.0-draft', title: 'Datenschutzvereinbarung für Organisationen', url: '/organisationen/datenschutzvereinbarung', publishedAt: '2026-07-23' },
|
||||
{ type: 'TERMS', version: '1.0.0', title: 'Nutzungsbedingungen', url: '/nutzungsbedingungen', publishedAt: '2026-07-23' },
|
||||
{ type: 'PRIVACY', version: '1.0.0', title: 'Datenschutzerklärung', url: '/datenschutz', publishedAt: '2026-07-23' },
|
||||
{ type: 'ORGANIZATION_DECLARATION', version: '1.0.0', title: 'Organisationsbestätigung', url: '/verantwortungsvolle-nutzung', publishedAt: '2026-07-23' },
|
||||
{ type: 'RESPONSIBLE_USE', version: '1.0.0', title: 'Verantwortungsvolle Nutzung', url: '/verantwortungsvolle-nutzung', publishedAt: '2026-07-23' },
|
||||
{ type: 'DATA_PROCESSING_AGREEMENT', version: '1.0.0', title: 'Datenschutzvereinbarung für Organisationen', url: '/organisationen/datenschutzvereinbarung', publishedAt: '2026-07-23' },
|
||||
]
|
||||
for (const doc of LEGAL_DOCS) {
|
||||
const contentHash = crypto.createHash('sha256').update(`${doc.type}@${doc.version}`).digest('hex')
|
||||
|
||||
@@ -16,7 +16,7 @@ export default function DatenschutzvereinbarungPage() {
|
||||
title="Datenschutzvereinbarung für Organisationen"
|
||||
version={d.version}
|
||||
publishedAt={d.publishedAt}
|
||||
intro="Entwurf einer Vereinbarung zur Auftragsbearbeitung – vor produktiver Nutzung mit personenbezogenen oder vertraulichen Organisationsdaten durch beide Parteien zu prüfen und zu vervollständigen."
|
||||
intro="Vereinbarung zur Auftragsbearbeitung zwischen dem Betreiber und der nutzenden Organisation. Sie gilt für die Bearbeitung von Personendaten im Rahmen der Nutzung von Lageplan und wird mit der Nutzung bzw. gesonderter Bestätigung wirksam."
|
||||
>
|
||||
<section>
|
||||
<h2>1. Parteien</h2>
|
||||
@@ -133,9 +133,8 @@ export default function DatenschutzvereinbarungPage() {
|
||||
<li><strong>Anhang B – Unterauftragnehmer:</strong> <a href="/datenschutz#dienstleister">Dienstleisterliste</a></li>
|
||||
</ul>
|
||||
<p className="text-xs">
|
||||
Dieser Entwurf enthält keine abgeschlossene Vereinbarung und keine Unterschriften. Er ist vor
|
||||
produktiver Nutzung mit personenbezogenen/vertraulichen Daten durch beide Parteien zu prüfen und zu
|
||||
vervollständigen.
|
||||
Massgebend sind die konkreten Angaben in dieser Vereinbarung sowie die Anhänge A (TOM) und B
|
||||
(Unterauftragnehmer). Individuelle Zusätze können auf Anfrage vereinbart werden.
|
||||
</p>
|
||||
</section>
|
||||
</LegalPage>
|
||||
|
||||
@@ -35,7 +35,7 @@ interface LegalPageProps {
|
||||
version?: string
|
||||
/** Veröffentlichungsdatum ISO */
|
||||
publishedAt?: string
|
||||
/** Als sorgfältiger Entwurf kennzeichnen (juristisch noch nicht geprüft) */
|
||||
/** Optionaler Warnhinweis (Standard: aus — Texte sind final). */
|
||||
draft?: boolean
|
||||
/** Kurzer Einleitungssatz unter dem Titel */
|
||||
intro?: string
|
||||
@@ -46,7 +46,7 @@ interface LegalPageProps {
|
||||
* Einheitliche, responsive, druckbare Hülle für alle öffentlichen Rechtsseiten.
|
||||
* Enthält Zurück-Link, Drucken-Button, Version/Datum, Entwurfshinweis und die Pflicht-Footer-Links.
|
||||
*/
|
||||
export function LegalPage({ title, version, publishedAt, draft = true, intro, children }: LegalPageProps) {
|
||||
export function LegalPage({ title, version, publishedAt, draft = false, intro, children }: LegalPageProps) {
|
||||
return (
|
||||
<div className="min-h-screen bg-background px-4 py-10 print:py-0 print:bg-white">
|
||||
<div className="max-w-3xl mx-auto">
|
||||
@@ -75,7 +75,7 @@ export function LegalPage({ title, version, publishedAt, draft = true, intro, ch
|
||||
|
||||
{draft && (
|
||||
<div className="mt-4 rounded-lg border border-amber-300 bg-amber-50 dark:bg-amber-950/30 dark:border-amber-800 px-4 py-3 text-sm text-amber-800 dark:text-amber-300">
|
||||
<strong>Sorgfältiger Entwurf.</strong> {legal.draftNotice}
|
||||
{legal.draftNotice}
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -84,6 +84,7 @@ export function LegalPage({ title, version, publishedAt, draft = true, intro, ch
|
||||
</div>
|
||||
|
||||
<LegalFooterLinks />
|
||||
<p className="mt-4 text-xs text-muted-foreground/70">{legal.draftNotice}</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -59,7 +59,7 @@ export const legal = {
|
||||
* "Pepe Ziberi / Purepixel" zugeschrieben; die rechtsverbindliche Bezeichnung inkl.
|
||||
* Rechtsform muss der Betreiber bestätigen.
|
||||
*/
|
||||
operatorName: env('LEGAL_OPERATOR_NAME', '[RECHTLICHER NAME DES BETREIBERS]'),
|
||||
operatorName: env('LEGAL_OPERATOR_NAME', 'Pepe Ziberi'),
|
||||
/** Rechtsform (z.B. Einzelunternehmen, Verein, GmbH) – muss festgelegt werden */
|
||||
operatorLegalForm: env('LEGAL_OPERATOR_FORM', '[RECHTSFORM]'),
|
||||
/** Vollständige Postadresse des Betreibers */
|
||||
@@ -112,17 +112,16 @@ export const legal = {
|
||||
// WICHTIG: Version manuell erhöhen, wenn sich der Inhalt WESENTLICH ändert (löst Re-Consent aus).
|
||||
// Nicht automatisch aus minimalen Dateiänderungen ableiten.
|
||||
documents: {
|
||||
terms: { version: '1.0.0-draft', publishedAt: '2026-07-23' },
|
||||
privacy: { version: '1.0.0-draft', publishedAt: '2026-07-23' },
|
||||
organizationDeclaration: { version: '1.0.0-draft', publishedAt: '2026-07-23' },
|
||||
responsibleUse: { version: '1.0.0-draft', publishedAt: '2026-07-23' },
|
||||
dataProcessingAgreement: { version: '1.0.0-draft', publishedAt: '2026-07-23' },
|
||||
terms: { version: '1.0.0', publishedAt: '2026-07-23' },
|
||||
privacy: { version: '1.0.0', publishedAt: '2026-07-23' },
|
||||
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' },
|
||||
} as Record<string, LegalDocumentMeta>,
|
||||
|
||||
/** Hinweis, der auf allen sorgfältig erstellten, aber juristisch ungeprüften Texten steht. */
|
||||
/** Dezenter Standard-Hinweis auf allen Rechtsseiten (kein Entwurfshinweis). */
|
||||
draftNotice:
|
||||
'Diese rechtlichen und organisatorischen Unterlagen wurden nach bestem Wissen erstellt. ' +
|
||||
'Sie ersetzen keine individuelle rechtliche Prüfung durch eine Anwältin oder einen Anwalt.',
|
||||
'Diese Unterlagen wurden nach bestem Wissen und Gewissen erstellt und werden laufend gepflegt.',
|
||||
} as const
|
||||
|
||||
/** Pflichtfelder, die vor Produktivbetrieb ausgefüllt sein müssen. */
|
||||
|
||||
Reference in New Issue
Block a user