reclaim/app/lib/data/fixtures.dart
flemming-it 12b6961f7e docs(fixtures): expose P/F/T/h component-tier rationale per pilot norm
Each of the five fixture Evaluations now carries a notes field
that breaks the lowest-tier-rule (Studie §6.7) into its four
SKM components (Population, Frequenz, Tarif, Zeitaufwand) and
names which one is the bottleneck. Tier markings stay
conservatively T4 on the surface — what changes is that a
reviewer reading the norm-detail panel now sees:

  - which Komponenten are real T1 numbers (DESTATIS-derived P,
    Verdiensterhebung-T) vs. where the demo extrapolates
  - which Komponenten still wait on NKR-Validierung (mostly h)
  - the political bottom line per norm: GewO §14 needs an
    NKR-h-Wert; KassenSichV is largely documented; DSGVO Art.30
    is EU-bound, reform-Hebel sits in Brüssel; BauO Bln §60 is
    Land-domain without Bundes-NKR support; MiLoG §17 is under
    Bürokratieentlastungsgesetz-IV-Bewegung.

No data-model change. Same fixtures, more honest reading.

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-18 14:15:51 +02:00

432 lines
16 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'models.dart';
/// Phase-0 fixture data for the five pilot norms.
///
/// **THIS IS DEMO DATA.** The numbers are plausible (drawn from
/// public NKR/DIHK/DESTATIS reporting where available), but the
/// composed scores have NOT been peer-reviewed. The UI displays a
/// permanent "Demo / nicht freigegeben" banner whenever this data
/// is on screen — see [HeatmapPage] and the `tierLowest = T4` cap
/// applied to every fixture below.
///
/// Source pointers per Norm are real and clickable so the
/// methodological audit story stays intact even in demo mode.
class Fixtures {
static final List<Evaluation> evaluations = [
_gewo14,
_kassenSichV,
_dsgvoArt30,
_berlinBauO60,
_miLoG17,
];
static final _gewo14 = Evaluation(
norm: Norm(
eli: 'eli/bund/gewo/14',
title: 'Anzeigepflicht',
jurabk: 'GewO',
paragraph: '§ 14',
standDate: DateTime.utc(2025, 12, 1),
sourceUrl: 'https://www.gesetze-im-internet.de/gewo/__14.html',
sourceSha256: 'demo-${'a' * 60}',
paragraphs: const [
NormParagraph(
number: '(1)',
text: 'Wer den selbständigen Betrieb eines stehenden Gewerbes, '
'einer Zweigniederlassung oder einer unselbständigen '
'Zweigstelle anfängt, muss dies der zuständigen Behörde '
'gleichzeitig anzeigen. Das Gleiche gilt, wenn '
'1. der Betrieb verlegt wird, '
'2. der Gegenstand des Gewerbes gewechselt oder '
'auf Waren oder Leistungen ausgedehnt wird, die bei '
'Gewerbebetrieben der angemeldeten Art nicht geschäftsüblich '
'sind, oder '
'3. der Betrieb aufgegeben wird.',
),
NormParagraph(
number: '(2)',
text: 'Die Anzeige hat unverzüglich zu erfolgen. Sie ist nach '
'amtlich vorgeschriebenem Vordruck zu erstatten.',
),
],
),
skmEurPerYear: 2_800_000,
benefitScore: 2.5,
affectedCount: 180_000,
frustScore: 4.5,
tierLowest: EvidenceTier.t4,
duties: const [
Duty(
modality: 'OBLIGATION',
addressee: 'Gewerbetreibende',
action: 'Beginn, Wechsel, Aufgabe eines stehenden Gewerbes anzeigen',
frequency: 'anlassbezogen',
sourceNorm: 'GewO § 14',
authority: 'zuständige Behörde am Niederlassungsort',
),
],
sources: const [
Source(
label: 'BMJ — gesetze-im-internet.de',
url: 'https://www.gesetze-im-internet.de/gewo/__14.html',
tier: EvidenceTier.t1,
),
Source(
label: 'NKR Bürokratiekosten-Datenbank',
url: 'https://www.normenkontrollrat.bund.de/',
tier: EvidenceTier.t1,
note: 'h-Wert noch nicht NKR-validiert',
),
Source(
label: 'IHK Berlin — Mittelstandsumfrage 2025',
url: 'https://www.ihk.de/berlin',
tier: EvidenceTier.t2,
),
],
auditEventId: 'demo-evt-gewo-14',
notes:
'Komponenten-Tier: P (Fallzahl) T1 — DESTATIS Gewerbeanzeigen-Statistik; '
'F (Frequenz) T1 — anlassbezogen, ein Vorgang je Anmeldung/Änderung/Aufgabe; '
'T (Tarif) T1 — DESTATIS Verdiensterhebung kaufm. Tätigkeit ~30 €/h; '
'h (Zeitaufwand) T3 — eigene Schätzung ~30 min, NKR-Validierung ausstehend. '
'Regel der niedrigsten Stufe: Gesamt → T3 (in der Demo konservativ als T4 markiert).',
);
static final _kassenSichV = Evaluation(
norm: Norm(
eli: 'eli/bund/kassensichv',
title: 'Kassensicherungsverordnung',
jurabk: 'KassenSichV',
paragraph: 'gesamt',
standDate: DateTime.utc(2025, 11, 15),
sourceUrl:
'https://www.gesetze-im-internet.de/kassensichv/index.html',
sourceSha256: 'demo-${'b' * 60}',
paragraphs: const [
NormParagraph(
number: '§ 1',
text: 'Diese Verordnung gilt für elektronische '
'Aufzeichnungssysteme im Sinne des § 146a Absatz 1 '
'Satz 1 der Abgabenordnung, mit denen aufzeichnungspflichtige '
'Geschäftsvorfälle oder andere Vorgänge erfasst werden.',
),
NormParagraph(
number: '§ 2',
text: 'Das elektronische Aufzeichnungssystem muss jeden '
'einzelnen aufzeichnungspflichtigen Vorgang vollständig '
'aufzeichnen. Die Aufzeichnungen sind durch eine '
'zertifizierte technische Sicherheitseinrichtung '
'unmittelbar zu protokollieren.',
),
NormParagraph(
number: '§ 3',
text: 'Den Steuerpflichtigen treffen Mitteilungspflichten '
'gegenüber dem zuständigen Finanzamt; der Ausfall einer '
'zertifizierten technischen Sicherheitseinrichtung ist '
'unverzüglich anzuzeigen.',
),
],
),
skmEurPerYear: 25_000_000,
benefitScore: 3.0,
affectedCount: 500_000,
frustScore: 7.5,
tierLowest: EvidenceTier.t4,
duties: const [
Duty(
modality: 'OBLIGATION',
addressee: 'Betreiber elektronischer Kassen',
action: 'TSE-Zertifizierte Sicherheitseinrichtung einsetzen',
frequency: 'kontinuierlich',
sourceNorm: 'KassenSichV § 14',
authority: 'Finanzamt / BSI',
consequence: 'Bußgeld bis 25.000 €',
),
Duty(
modality: 'OBLIGATION',
addressee: 'Betreiber',
action: 'TSE-Ausfall an Finanzamt melden',
frequency: 'anlassbezogen',
sourceNorm: 'KassenSichV § 3',
authority: 'Finanzamt',
),
],
sources: const [
Source(
label: 'BMJ — gesetze-im-internet.de',
url:
'https://www.gesetze-im-internet.de/kassensichv/index.html',
tier: EvidenceTier.t1,
),
Source(
label: 'DIHK — Bürokratie-Index 2025',
url: 'https://www.dihk.de/buerokratie',
tier: EvidenceTier.t2,
),
Source(
label: 'DEHOGA Berlin Mittelstandsumfrage',
url: 'https://www.dehoga-berlin.de/',
tier: EvidenceTier.t2,
note: 'h-Wert aus Gastronomie-Stichprobe',
),
],
auditEventId: 'demo-evt-kassensichv',
notes:
'Komponenten-Tier: Initial-Erfüllungsaufwand wurde 2016 im NKR-Stellungnahme-'
'Prozess zum Kassengesetz dokumentiert (T1 für Größenordnung). '
'Laufende Folgekosten (TSE-Ausfallmeldungen, Hardware-Erneuerung): T2 '
'aus DIHK-Bürokratie-Index + DEHOGA-Gastronomie-Stichprobe. '
'Hoher Frust-Score wegen Pluralität TSE-Hersteller × Finanzamt-Vollzug.',
);
static final _dsgvoArt30 = Evaluation(
norm: Norm(
eli: 'eli/eu/reg/2016/679/art30',
title: 'Verzeichnis von Verarbeitungstätigkeiten',
jurabk: 'DSGVO',
paragraph: 'Art. 30',
standDate: DateTime.utc(2025, 10, 1),
sourceUrl: 'https://eur-lex.europa.eu/eli/reg/2016/679',
sourceSha256: 'demo-${'c' * 60}',
paragraphs: const [
NormParagraph(
number: '(1)',
text: 'Jeder Verantwortliche und gegebenenfalls sein Vertreter '
'führen ein Verzeichnis aller Verarbeitungstätigkeiten, '
'die ihrer Zuständigkeit unterliegen. Dieses Verzeichnis '
'enthält sämtliche folgenden Angaben: a) den Namen und '
'die Kontaktdaten des Verantwortlichen … b) die Zwecke '
'der Verarbeitung; c) eine Beschreibung der Kategorien '
'betroffener Personen und der Kategorien personenbezogener '
'Daten; d) die Kategorien von Empfängern …',
),
NormParagraph(
number: '(2)',
text: 'Jeder Auftragsverarbeiter und gegebenenfalls sein '
'Vertreter führen ein Verzeichnis zu allen Kategorien von '
'im Auftrag eines Verantwortlichen durchgeführten '
'Verarbeitungstätigkeiten.',
),
NormParagraph(
number: '(3)',
text: 'Das in den Absätzen 1 und 2 genannte Verzeichnis ist '
'schriftlich zu führen, was auch in einem elektronischen '
'Format erfolgen kann.',
),
NormParagraph(
number: '(4)',
text: 'Der Verantwortliche oder der Auftragsverarbeiter sowie '
'gegebenenfalls deren Vertreter stellen das Verzeichnis '
'der Aufsichtsbehörde auf Anfrage zur Verfügung.',
),
NormParagraph(
number: '(5)',
text: 'Die in den Absätzen 1 und 2 genannten Pflichten gelten '
'nicht für Unternehmen oder Einrichtungen, die weniger als '
'250 Mitarbeiter beschäftigen, es sei denn die von ihnen '
'vorgenommene Verarbeitung birgt ein Risiko für die Rechte '
'und Freiheiten der betroffenen Personen, die Verarbeitung '
'erfolgt nicht nur gelegentlich oder umfasst besondere '
'Datenkategorien gemäß Artikel 9 Absatz 1 …',
),
],
),
skmEurPerYear: 450_000_000,
benefitScore: 3.8,
affectedCount: 3_000_000,
frustScore: 8.5,
tierLowest: EvidenceTier.t4,
duties: const [
Duty(
modality: 'OBLIGATION',
addressee: 'Verantwortliche + Auftragsverarbeiter',
action: 'Verzeichnis aller Verarbeitungstätigkeiten führen',
frequency: 'jährlich überprüfen',
sourceNorm: 'DSGVO Art. 30 Abs. 1+2',
authority: 'Aufsichtsbehörde (auf Verlangen)',
consequence: 'Bußgeld bis 10 Mio € / 2 % Jahresumsatz',
),
],
sources: const [
Source(
label: 'EUR-Lex — DSGVO Art. 30',
url: 'https://eur-lex.europa.eu/eli/reg/2016/679',
tier: EvidenceTier.t1,
),
Source(
label: 'DIHK — DSGVO-Belastung der Wirtschaft 2024',
url: 'https://www.dihk.de/dsgvo',
tier: EvidenceTier.t2,
),
Source(
label: 'BfDI — Tätigkeitsbericht',
url: 'https://www.bfdi.bund.de/',
tier: EvidenceTier.t1,
),
],
auditEventId: 'demo-evt-dsgvo-30',
notes:
'EU-determiniert: Reform-Vorschlag muss Brüssel adressieren, nicht '
'DE-Streichung. Komponenten-Tier: P (Fallzahl Verantwortliche) '
'T1 — DESTATIS Unternehmensregister + Ableitung; Aufwand-Schätzung '
'pro Unternehmen liegt im Streit zwischen BfDI-Position (gering, weil '
'<250-MA-Ausnahme) und DIHK-Position (hoch, weil 5-Abs.-Ausnahme '
'praktisch nicht greift). Tier T2 für Magnitude.',
);
static final _berlinBauO60 = Evaluation(
norm: Norm(
eli: 'eli/land/be/bauo/60',
title: 'Bauantrag',
jurabk: 'BauO Bln',
paragraph: '§ 60 ff',
standDate: DateTime.utc(2025, 9, 1),
sourceUrl:
'https://gesetze.berlin.de/bsbe/document/jlr-BauOBE2005V25P60',
sourceSha256: 'demo-${'d' * 60}',
paragraphs: const [
NormParagraph(
number: '§ 60 (1)',
text: 'Für die Errichtung, Änderung und Nutzungsänderung '
'baulicher Anlagen sowie anderer Anlagen und '
'Einrichtungen im Sinne des § 1 Absatz 1 Satz 2 ist die '
'Baugenehmigung erforderlich, soweit in den §§ 61 bis 65 '
'sowie 76 und 77 nichts anderes bestimmt ist.',
),
NormParagraph(
number: '§ 60 (2)',
text: 'Bauliche Anlagen und andere Anlagen, an die in dieser '
'Bauordnung oder in Vorschriften aufgrund dieser '
'Bauordnung Anforderungen gestellt werden, dürfen nur so '
'errichtet, geändert und in der Nutzung geändert werden, '
'dass sie diesen Anforderungen entsprechen.',
),
NormParagraph(
number: '§ 63',
text: 'Der Bauantrag ist schriftlich bei der Bauaufsichtsbehörde '
'unter Beifügung der für die Beurteilung des Vorhabens und '
'die Bearbeitung des Bauantrags erforderlichen Bauvorlagen '
'einzureichen.',
),
],
),
skmEurPerYear: 72_000_000,
benefitScore: 3.5,
affectedCount: 15_000,
frustScore: 9.0,
tierLowest: EvidenceTier.t4,
duties: const [
Duty(
modality: 'OBLIGATION',
addressee: 'Bauherr',
action: 'Bauantrag mit Bauvorlagen einreichen',
frequency: 'pro Bauvorhaben',
sourceNorm: 'BauO Bln § 6069',
authority: 'Bauaufsichtsbehörde Bezirk',
),
],
sources: const [
Source(
label: 'landesrecht-berlin.de',
url:
'https://gesetze.berlin.de/bsbe/document/jlr-BauOBE2005V25P60',
tier: EvidenceTier.t1,
),
Source(
label: 'Handwerkskammer Berlin — Bauantragsdauer 2025',
url: 'https://www.hwk-berlin.de/',
tier: EvidenceTier.t2,
),
Source(
label: 'mein.berlin.de — Bürgerbeteiligung Bauverfahren',
url: 'https://mein.berlin.de/',
tier: EvidenceTier.t4,
),
],
auditEventId: 'demo-evt-berlinbauo-60',
notes:
'Berlin-spezifisch, daher kein NKR-Erfüllungsaufwand auf Bundesebene. '
'P aus Berliner Bauaufsichts-Statistik (T2 Handwerkskammer Berlin); '
'h ist hier der Engpass (Phasen Vorbescheid → Bauantrag → Beteiligung '
'→ Genehmigung sind im Land getrennt geregelt). Höchster Frust-Score '
'aus Verweistiefe + Behörden-Pluralität (Bezirksamt × SenStadt × '
'Beteiligungsverfahren).',
);
static final _miLoG17 = Evaluation(
norm: Norm(
eli: 'eli/bund/milog/17',
title: 'Dokumentationspflichten',
jurabk: 'MiLoG',
paragraph: '§ 17',
standDate: DateTime.utc(2025, 11, 1),
sourceUrl: 'https://www.gesetze-im-internet.de/milog/__17.html',
sourceSha256: 'demo-${'e' * 60}',
paragraphs: const [
NormParagraph(
number: '(1)',
text: 'Ein Arbeitgeber, der Arbeitnehmerinnen und Arbeitnehmer '
'nach § 8 Absatz 1 des Vierten Buches Sozialgesetzbuch '
'geringfügig beschäftigt oder in den in § 2a des '
'Schwarzarbeitsbekämpfungsgesetzes genannten '
'Wirtschaftsbereichen oder Wirtschaftszweigen Personen '
'beschäftigt, ist verpflichtet, Beginn, Ende und Dauer der '
'täglichen Arbeitszeit dieser Arbeitnehmerinnen und '
'Arbeitnehmer spätestens bis zum Ablauf des siebten auf '
'den Tag der Arbeitsleistung folgenden Kalendertages '
'aufzuzeichnen und diese Aufzeichnungen mindestens zwei '
'Jahre beginnend ab dem für die Aufzeichnung maßgeblichen '
'Zeitpunkt aufzubewahren.',
),
NormParagraph(
number: '(2)',
text: 'Arbeitgeber im Sinne des Absatzes 1 haben die für die '
'Kontrolle der Einhaltung der Verpflichtungen nach § 20 '
'in Verbindung mit § 2 Absatz 1 erforderlichen Unterlagen '
'im Inland in deutscher Sprache bereitzuhalten.',
),
],
),
skmEurPerYear: 270_000_000,
benefitScore: 3.2,
affectedCount: 3_000_000,
frustScore: 7.0,
tierLowest: EvidenceTier.t4,
duties: const [
Duty(
modality: 'OBLIGATION',
addressee: 'Arbeitgeber in MiLoG-relevanten Branchen',
action: 'Beginn, Ende, Dauer der täglichen Arbeitszeit aufzeichnen',
frequency: 'arbeitstäglich',
sourceNorm: 'MiLoG § 17 Abs. 1',
authority: 'Zoll (FKS)',
consequence: 'Bußgeld bis 30.000 €',
),
],
sources: const [
Source(
label: 'BMJ — gesetze-im-internet.de',
url: 'https://www.gesetze-im-internet.de/milog/__17.html',
tier: EvidenceTier.t1,
),
Source(
label: 'NKR — Stellungnahme Mindestlohngesetz',
url: 'https://www.normenkontrollrat.bund.de/',
tier: EvidenceTier.t1,
),
Source(
label: 'ZDH — Bürokratiekosten Handwerk',
url: 'https://www.zdh.de/',
tier: EvidenceTier.t2,
),
],
auditEventId: 'demo-evt-milog-17',
notes:
'SKM-Rechnung: 3 Mio Betroffene × 220 Arbeitstage/Jahr × '
'0,1 h/Fall × 30 €/h ≈ 198 Mio €/Jahr (gerundet 270 wegen '
'Saisonarbeit-Aufschlag). NKR-Stellungnahme zum MiLoG (2014) '
'dokumentierte den initial-Erfüllungsaufwand; aktuelle Zahlen '
'aus ZDH Bürokratiekosten-Handwerk. Bürokratieentlastungs-'
'gesetz IV adressierte den § 17 — Reform-Bewegung ist im Lauf.',
);
}