docs(legal): fill Impressum + Datenschutz from authoritative fai_web data
Replaces the [PLACEHOLDER] entries in the Recht-Tab with the real legal-entity data published on flemming.ai (single source of truth across F∆I surfaces): - Anbieter Dr. Stefan Flemming, Flemming.IT, freiberuflich - Anschrift Dardanellenweg 41, 12109 Berlin - Kontakt contact@flemming.ai, +49 30 66302929 - USt-IdNr. DE269393425 (§ 27a UStG) - Verantw. Dr. Stefan Flemming (§ 18 Abs. 2 MStV) - Hosting Hetzner Online GmbH, Gunzenhausen (AVV nach Art. 28) - Logs max. 14 Tage Also brings the wording in line with the current §-Lage: - § 5 TMG / § 7 Abs. 1 TMG → § 5 DDG / § 7 Abs. 1 DDG (Digitale-Dienste-Gesetz seit Mai 2024 — das TMG existiert in der zitierten Form nicht mehr). - Adds the standard 'Haftung für Inhalte', 'Haftung für Links' und 'Urheberrecht'-Abschnitte des fai_web-Templates, Letzterer verweist auf Abschnitt 3 (§ 5 UrhG amtliche Werke) für die in der App dargestellten Norm-Texte. Recl∆Im ist damit aus Recht-Sicht so weit, wie fai_web es ist — und gleichermaßen reif für eine öffentliche Sichtbarkeit, sobald Methodik-Beirat + Volljuristen-Approval-Kette stehen. Signed-off-by: flemming-it <sf@flemming.it>
This commit is contained in:
parent
214f909c1f
commit
7efe84de34
1 changed files with 108 additions and 85 deletions
|
|
@ -5,24 +5,18 @@ import '../theme/reclaim_tokens.dart';
|
||||||
import '../widgets/reclaim_card.dart';
|
import '../widgets/reclaim_card.dart';
|
||||||
|
|
||||||
/// Combined legal-information page. Six sections in the order
|
/// Combined legal-information page. Six sections in the order
|
||||||
/// a careful reader cares about them:
|
/// a careful reader cares about them. The legal-entity data
|
||||||
///
|
/// (Anbieter, Anschrift, USt-IdNr., Hosting-Provider, …) mirrors
|
||||||
/// 1. Disclaimer (kein Rechtsrat) — top, most visible
|
/// the upstream fai_web (`flemming.ai`) authoritative version
|
||||||
/// 2. EU AI Act Art. 50 (Transparenz)
|
/// to keep the public-facing F∆I posture consistent across
|
||||||
/// 3. Quellen + Urheberrecht (§ 5 UrhG)
|
/// surfaces.
|
||||||
/// 4. Datenschutz (DSGVO Art. 13)
|
|
||||||
/// 5. Impressum (§ 5 TMG, § 18 MStV)
|
|
||||||
/// 6. Open Source + Lizenz
|
|
||||||
///
|
|
||||||
/// Each section carries placeholder markers `[PLACEHOLDER]`
|
|
||||||
/// where the deployment-specific value (Anbieter-Adresse,
|
|
||||||
/// AVV-Stand, Hosting-Provider) must be filled in before any
|
|
||||||
/// public publication. The text is drafted conservatively;
|
|
||||||
/// review by einem Volljuristen bleibt obligatorisch vor der
|
|
||||||
/// ersten öffentlichen Veröffentlichung.
|
|
||||||
class LegalPage extends StatelessWidget {
|
class LegalPage extends StatelessWidget {
|
||||||
const LegalPage({super.key});
|
const LegalPage({super.key});
|
||||||
|
|
||||||
|
static const _email = 'contact@flemming.ai';
|
||||||
|
static const _phone = '+49 30 66302929';
|
||||||
|
static const _stand = 'Stand: Juni 2026';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final t = Theme.of(context).textTheme;
|
final t = Theme.of(context).textTheme;
|
||||||
|
|
@ -56,7 +50,7 @@ class LegalPage extends StatelessWidget {
|
||||||
_p(t,
|
_p(t,
|
||||||
'Alle Bewertungs-Zahlen tragen eine Evidenz-Tier-Stufe '
|
'Alle Bewertungs-Zahlen tragen eine Evidenz-Tier-Stufe '
|
||||||
'(T1–T4). Stufen T3/T4 sind nicht peer-reviewed und '
|
'(T1–T4). Stufen T3/T4 sind nicht peer-reviewed und '
|
||||||
'dienen ausschließlich als Hinweis-/Anregung-Wert. '
|
'dienen ausschließlich als Hinweis-/Anregungs-Wert. '
|
||||||
'Eine Reform- oder Streichungs-Empfehlung der '
|
'Eine Reform- oder Streichungs-Empfehlung der '
|
||||||
'Anwendung ist ein methodischer Vorschlag, keine '
|
'Anwendung ist ein methodischer Vorschlag, keine '
|
||||||
'politische Forderung.'),
|
'politische Forderung.'),
|
||||||
|
|
@ -74,8 +68,7 @@ class LegalPage extends StatelessWidget {
|
||||||
// 2. AI Act
|
// 2. AI Act
|
||||||
ReclaimCard(
|
ReclaimCard(
|
||||||
child: _Section(
|
child: _Section(
|
||||||
title:
|
title: '2. EU AI Act — Transparenz nach Art. 50',
|
||||||
'2. EU AI Act — Transparenz nach Art. 50',
|
|
||||||
children: [
|
children: [
|
||||||
_p(t,
|
_p(t,
|
||||||
'Recl∆Im setzt Künstliche-Intelligenz-Komponenten ein: '
|
'Recl∆Im setzt Künstliche-Intelligenz-Komponenten ein: '
|
||||||
|
|
@ -118,8 +111,7 @@ class LegalPage extends StatelessWidget {
|
||||||
'§ 5 UrhG und damit gemeinfrei. Die kanonischen Quellen '
|
'§ 5 UrhG und damit gemeinfrei. Die kanonischen Quellen '
|
||||||
'sind verlinkt und durch SHA-256-Prüfsummen im '
|
'sind verlinkt und durch SHA-256-Prüfsummen im '
|
||||||
'Audit-Log nachvollziehbar.'),
|
'Audit-Log nachvollziehbar.'),
|
||||||
_p(t,
|
_p(t, 'Primärquellen (T1):'),
|
||||||
'Primärquellen (T1):'),
|
|
||||||
_bullet(t,
|
_bullet(t,
|
||||||
'Bundesrecht: gesetze-im-internet.de (BMJ) — § 5 UrhG.'),
|
'Bundesrecht: gesetze-im-internet.de (BMJ) — § 5 UrhG.'),
|
||||||
_bullet(t,
|
_bullet(t,
|
||||||
|
|
@ -128,8 +120,7 @@ class LegalPage extends StatelessWidget {
|
||||||
_bullet(t,
|
_bullet(t,
|
||||||
'Landesrecht Berlin: gesetze.berlin.de / '
|
'Landesrecht Berlin: gesetze.berlin.de / '
|
||||||
'landesrecht-berlin.de — § 5 UrhG.'),
|
'landesrecht-berlin.de — § 5 UrhG.'),
|
||||||
_p(t,
|
_p(t, 'Sekundärquellen (T1/T2):'),
|
||||||
'Sekundärquellen (T1/T2):'),
|
|
||||||
_bullet(t,
|
_bullet(t,
|
||||||
'Nationaler Normenkontrollrat (NKR) — '
|
'Nationaler Normenkontrollrat (NKR) — '
|
||||||
'Bürokratiekosten-Datenbank, Methodenleitfaden.'),
|
'Bürokratiekosten-Datenbank, Methodenleitfaden.'),
|
||||||
|
|
@ -141,8 +132,8 @@ class LegalPage extends StatelessWidget {
|
||||||
'Verbands-Erhebungen mit Quellen-Angabe.'),
|
'Verbands-Erhebungen mit Quellen-Angabe.'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Eigene Methodik und Software-Code sind unter '
|
'Eigene Methodik und Software-Code sind unter '
|
||||||
'Apache License 2.0 veröffentlicht; Code-Repository: '
|
'Apache License 2.0 veröffentlicht; '
|
||||||
'git.flemming.ai/fai/reclaim.'),
|
'Code-Repository: git.flemming.ai/fai/reclaim.'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -151,41 +142,55 @@ class LegalPage extends StatelessWidget {
|
||||||
// 4. Datenschutz
|
// 4. Datenschutz
|
||||||
ReclaimCard(
|
ReclaimCard(
|
||||||
child: _Section(
|
child: _Section(
|
||||||
title:
|
title: '4. Datenschutzerklärung (DSGVO Art. 13)',
|
||||||
'4. Datenschutzerklärung (DSGVO Art. 13)',
|
|
||||||
children: [
|
children: [
|
||||||
|
_h(t, 'Verantwortlicher'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Verantwortlicher i.S.d. Art. 4 Nr. 7 DSGVO: '
|
'Verantwortlich für die Datenverarbeitung in dieser '
|
||||||
'[PLACEHOLDER — Name und Anschrift des Anbieters '
|
'Anwendung ist Dr. Stefan Flemming '
|
||||||
'einsetzen].'),
|
'(Flemming.IT — Beratung und Entwicklung), '
|
||||||
|
'Dardanellenweg 41, 12109 Berlin, Deutschland. '
|
||||||
|
'Kontakt: $_email'),
|
||||||
|
_h(t, 'Hosting & Server-Logs'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Diese Anwendung verarbeitet personenbezogene Daten '
|
'Wird die Anwendung als Webseite bereitgestellt, läuft '
|
||||||
'nur in dem Umfang, der für ihren Betrieb erforderlich '
|
'sie auf Servern der Hetzner Online GmbH, '
|
||||||
'ist. In der Demo-Konfiguration werden keine '
|
'Industriestr. 25, 91710 Gunzenhausen, Deutschland. '
|
||||||
'personenbezogenen Daten erhoben; alle Pilot-Norm-Daten '
|
'Beim Aufruf werden technisch notwendige Zugriffsdaten '
|
||||||
'sind lokal im Browser/auf dem Endgerät gespeichert.'),
|
'(IP-Adresse, Datum/Uhrzeit, abgerufene Ressource, '
|
||||||
_p(t, 'Beim Aufruf der Anwendung über das Internet:'),
|
'Referrer, User-Agent) in Server-Logfiles verarbeitet. '
|
||||||
_bullet(t,
|
'Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO '
|
||||||
'Hosting-Provider: [PLACEHOLDER — etwa Hetzner Online '
|
'(berechtigtes Interesse an Betrieb und Sicherheit). '
|
||||||
'GmbH, Falkenstein, EU-Hosting]. AVV nach Art. 28 '
|
'Mit Hetzner besteht ein Vertrag zur Auftragsverarbeitung '
|
||||||
'DSGVO abgeschlossen.'),
|
'gemäß Art. 28 DSGVO; Server-Logfiles werden nach '
|
||||||
_bullet(t,
|
'spätestens 14 Tagen gelöscht.'),
|
||||||
'Server-Logs (IP-Adresse, User-Agent, Zeitstempel): '
|
|
||||||
'für 7 Tage zur Missbrauchs-Abwehr (Rechtsgrundlage '
|
|
||||||
'Art. 6 Abs. 1 lit. f DSGVO, berechtigtes Interesse).'),
|
|
||||||
_bullet(t,
|
|
||||||
'Kein Tracking, keine Analytics, keine '
|
|
||||||
'Marketing-Cookies.'),
|
|
||||||
_p(t,
|
_p(t,
|
||||||
'Betroffenenrechte (Art. 15–22 DSGVO): Auskunft, '
|
'Im Desktop-/Mock-Modus werden keine personenbezogenen '
|
||||||
'Berichtigung, Löschung, Einschränkung, Datenübertragbarkeit, '
|
'Daten erhoben; alle Daten verbleiben lokal auf dem '
|
||||||
'Widerspruch. Kontakt: '
|
'Endgerät.'),
|
||||||
'[PLACEHOLDER — Kontakt-E-Mail].'),
|
_h(t, 'Cookies & Tracking'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Beschwerderecht bei der Aufsichtsbehörde: '
|
'Die Anwendung setzt keine Tracking- oder '
|
||||||
'Berliner Beauftragte für Datenschutz und '
|
'Marketing-Cookies und bindet keine externen '
|
||||||
'Informationsfreiheit, Friedrichstr. 219, 10969 Berlin, '
|
'Analysedienste ein. Eine Cookie-Einwilligung ist daher '
|
||||||
'mailbox@datenschutz-berlin.de.'),
|
'nicht erforderlich.'),
|
||||||
|
_h(t, 'Kontaktaufnahme'),
|
||||||
|
_p(t,
|
||||||
|
'Wenn Sie uns per E-Mail kontaktieren, verarbeiten wir '
|
||||||
|
'die übermittelten Daten zur Bearbeitung Ihrer Anfrage '
|
||||||
|
'(Art. 6 Abs. 1 lit. b bzw. f DSGVO). Die Daten werden '
|
||||||
|
'gelöscht, sobald sie für den Zweck nicht mehr '
|
||||||
|
'erforderlich sind.'),
|
||||||
|
_h(t, 'Ihre Rechte'),
|
||||||
|
_p(t,
|
||||||
|
'Sie haben das Recht auf Auskunft, Berichtigung, '
|
||||||
|
'Löschung, Einschränkung der Verarbeitung, '
|
||||||
|
'Datenübertragbarkeit und Widerspruch '
|
||||||
|
'(Art. 15–21 DSGVO) sowie das Recht auf Beschwerde '
|
||||||
|
'bei einer Aufsichtsbehörde, etwa der Berliner '
|
||||||
|
'Beauftragten für Datenschutz und Informationsfreiheit, '
|
||||||
|
'Friedrichstr. 219, 10969 Berlin.'),
|
||||||
|
_p(t, _stand),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -194,26 +199,48 @@ class LegalPage extends StatelessWidget {
|
||||||
// 5. Impressum
|
// 5. Impressum
|
||||||
ReclaimCard(
|
ReclaimCard(
|
||||||
child: _Section(
|
child: _Section(
|
||||||
title:
|
title: '5. Impressum',
|
||||||
'5. Impressum (§ 5 TMG, § 18 Abs. 2 MStV)',
|
|
||||||
children: [
|
children: [
|
||||||
|
_h(t, 'Angaben gemäß § 5 DDG'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Anbieter: [PLACEHOLDER — Name].'),
|
'Dr. Stefan Flemming\n'
|
||||||
|
'Flemming.IT — Beratung und Entwicklung, freiberuflich '
|
||||||
|
'(www.flemming.it)\n'
|
||||||
|
'Dardanellenweg 41\n'
|
||||||
|
'12109 Berlin\n'
|
||||||
|
'Deutschland'),
|
||||||
|
_h(t, 'Kontakt'),
|
||||||
|
_p(t, 'E-Mail: $_email\nTelefon: $_phone'),
|
||||||
|
_h(t, 'Umsatzsteuer-ID'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Anschrift: [PLACEHOLDER — Straße, Hausnummer, '
|
'Umsatzsteuer-Identifikationsnummer gemäß § 27a UStG: '
|
||||||
'PLZ, Ort, Land].'),
|
'DE269393425'),
|
||||||
|
_h(t, 'Verantwortlich i.S.d. § 18 Abs. 2 MStV'),
|
||||||
|
_p(t, 'Dr. Stefan Flemming, Anschrift wie oben.'),
|
||||||
|
_h(t, 'Haftung für Inhalte'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Kontakt: [PLACEHOLDER — E-Mail, ggf. Telefon].'),
|
'Als Diensteanbieter sind wir gemäß § 7 Abs. 1 DDG für '
|
||||||
|
'eigene Inhalte auf diesen Seiten nach den allgemeinen '
|
||||||
|
'Gesetzen verantwortlich. Nach §§ 8 bis 10 DDG sind wir '
|
||||||
|
'als Diensteanbieter jedoch nicht verpflichtet, '
|
||||||
|
'übermittelte oder gespeicherte fremde Informationen '
|
||||||
|
'zu überwachen oder nach Umständen zu forschen, die '
|
||||||
|
'auf eine rechtswidrige Tätigkeit hinweisen.'),
|
||||||
|
_h(t, 'Haftung für Links'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Vertretungsberechtigt: [PLACEHOLDER — bei Vereinen, '
|
'Unser Angebot enthält ggf. Links zu externen Websites '
|
||||||
'GmbHs etc.].'),
|
'Dritter, auf deren Inhalte wir keinen Einfluss haben. '
|
||||||
|
'Deshalb können wir für diese fremden Inhalte auch '
|
||||||
|
'keine Gewähr übernehmen. Für die Inhalte der '
|
||||||
|
'verlinkten Seiten ist stets der jeweilige Anbieter '
|
||||||
|
'oder Betreiber verantwortlich.'),
|
||||||
|
_h(t, 'Urheberrecht'),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV: '
|
'Die durch die Seitenbetreiber erstellten Inhalte und '
|
||||||
'[PLACEHOLDER — Name und ladungsfähige Anschrift, '
|
'Werke auf diesen Seiten unterliegen dem deutschen '
|
||||||
'in der Regel identisch mit Anbieter].'),
|
'Urheberrecht. Beiträge Dritter sind als solche '
|
||||||
_p(t,
|
'gekennzeichnet. Davon unberührt bleibt § 5 UrhG für '
|
||||||
'Umsatzsteuer-Identifikationsnummer / Register-'
|
'die wiedergegebenen amtlichen Werke (vgl. Abschnitt 3).'),
|
||||||
'eintrag, sofern einschlägig: [PLACEHOLDER].'),
|
|
||||||
_p(t,
|
_p(t,
|
||||||
'Plattform der Europäischen Kommission zur '
|
'Plattform der Europäischen Kommission zur '
|
||||||
'außergerichtlichen Online-Streitbeilegung (Art. 14 '
|
'außergerichtlichen Online-Streitbeilegung (Art. 14 '
|
||||||
|
|
@ -221,6 +248,7 @@ class LegalPage extends StatelessWidget {
|
||||||
'nicht bereit oder verpflichtet, an '
|
'nicht bereit oder verpflichtet, an '
|
||||||
'Streitbeilegungsverfahren vor einer '
|
'Streitbeilegungsverfahren vor einer '
|
||||||
'Verbraucherschlichtungsstelle teilzunehmen.'),
|
'Verbraucherschlichtungsstelle teilzunehmen.'),
|
||||||
|
_p(t, _stand),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -252,29 +280,15 @@ class LegalPage extends StatelessWidget {
|
||||||
),
|
),
|
||||||
const SizedBox(height: ReclaimSpace.sm),
|
const SizedBox(height: ReclaimSpace.sm),
|
||||||
_p(t,
|
_p(t,
|
||||||
'Plattform: Ch∆In (Apache 2.0, '
|
'Plattform: Ch∆In (Apache 2.0). Methodische Vorbilder '
|
||||||
'git.flemming.ai/fai/chain-private). Methodische '
|
'und Lizenz-Hinweise stehen in der Datei NOTICE im '
|
||||||
'Vorbilder und Lizenz-Hinweise stehen in der Datei '
|
'Repository.'),
|
||||||
'NOTICE im Repository.'),
|
|
||||||
_p(t,
|
_p(t,
|
||||||
'Beiträge willkommen. DCO Sign-off und Conventional '
|
'Beiträge willkommen. DCO Sign-off und Conventional '
|
||||||
'Commits in Englisch sind Konvention.'),
|
'Commits in Englisch sind Konvention.'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: ReclaimSpace.xxl),
|
|
||||||
|
|
||||||
Text(
|
|
||||||
'Hinweis: Vor der ersten öffentlichen Veröffentlichung '
|
|
||||||
'müssen alle [PLACEHOLDER]-Stellen durch konkrete '
|
|
||||||
'Anbieter-Angaben ersetzt und das gesamte Dokument von '
|
|
||||||
'einem Volljuristen geprüft werden. Diese Seite ist eine '
|
|
||||||
'methodische Vorlage.',
|
|
||||||
style: t.labelSmall?.copyWith(
|
|
||||||
color: ReclaimColors.tierT4,
|
|
||||||
fontStyle: FontStyle.italic,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -301,6 +315,15 @@ class _Section extends StatelessWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget _h(TextTheme t, String s) => Padding(
|
||||||
|
padding: const EdgeInsets.only(
|
||||||
|
top: ReclaimSpace.sm,
|
||||||
|
bottom: 4,
|
||||||
|
),
|
||||||
|
child: Text(s,
|
||||||
|
style: t.titleMedium?.copyWith(color: ReclaimColors.signal)),
|
||||||
|
);
|
||||||
|
|
||||||
Widget _p(TextTheme t, String s) => Padding(
|
Widget _p(TextTheme t, String s) => Padding(
|
||||||
padding: const EdgeInsets.only(bottom: ReclaimSpace.sm),
|
padding: const EdgeInsets.only(bottom: ReclaimSpace.sm),
|
||||||
child: SelectableText(s, style: t.bodyLarge?.copyWith(height: 1.55)),
|
child: SelectableText(s, style: t.bodyLarge?.copyWith(height: 1.55)),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue