{
  "version": "1",
  "stand": "2026-06-13",
  "name": "SPECHT-Dokumentklassen — Lastenheft M1/M2 (Sprint 2.5)",
  "zweck": "Definition der zusaetzlich zu indexierenden Dokumentklassen fuer Belegbot/SPECHT, damit ESt-Plus NX die V+V- und KAP-Strecke per OCR/KI bedienen kann.",
  "konvention": "Jede Klasse liefert: {klasse, felder[name,wert,konfidenz], dokument_hash, ocr_konfidenz_gesamt}. Human-in-the-Loop verpflichtend (M1-S03).",
  "dokumentklassen": [
    {
      "klasse": "mietvertrag",
      "lastenheft_id": "M1-S01",
      "verwendung": "Anlage V — Mietverhaeltnis je Objekt",
      "felder": [
        {"name": "vermieter_name", "typ": "string", "max_chars": 200, "pflicht": true},
        {"name": "vermieter_adresse", "typ": "string", "max_chars": 300, "pflicht": false},
        {"name": "mieter_name", "typ": "string", "max_chars": 200, "pflicht": true},
        {"name": "mietobjekt_adresse", "typ": "string", "max_chars": 300, "pflicht": true},
        {"name": "mietobjekt_flaeche_qm", "typ": "float", "pflicht": false},
        {"name": "miete_kalt_eur_monat", "typ": "float", "pflicht": true},
        {"name": "nebenkosten_eur_monat", "typ": "float", "pflicht": false},
        {"name": "miete_warm_eur_monat", "typ": "float", "pflicht": false},
        {"name": "kaution_eur", "typ": "float", "pflicht": false},
        {"name": "mietbeginn", "typ": "date", "pflicht": true},
        {"name": "mietende", "typ": "date", "pflicht": false},
        {"name": "umlagefaehige_nk_zugeordnet", "typ": "bool", "pflicht": false}
      ],
      "plausibilitaet": [
        "warm = kalt + nebenkosten (±5%)",
        "Mietbeginn vor Mietende",
        "kalt > 0 wenn vermietet"
      ]
    },
    {
      "klasse": "nebenkostenabrechnung",
      "lastenheft_id": "M1-S01",
      "verwendung": "Anlage V — Hausgeld/Umlagen je Objekt + § 35a EStG Anteil",
      "felder": [
        {"name": "abrechnungszeitraum_von", "typ": "date", "pflicht": true},
        {"name": "abrechnungszeitraum_bis", "typ": "date", "pflicht": true},
        {"name": "hausgeld_gesamt_eur", "typ": "float", "pflicht": true},
        {"name": "ruecklagen_eur", "typ": "float", "pflicht": false},
        {"name": "umlagefaehig_eur", "typ": "float", "pflicht": false},
        {"name": "nicht_umlagefaehig_eur", "typ": "float", "pflicht": false},
        {"name": "haushaltsnahe_dienstleistungen_eur", "typ": "float", "pflicht": false},
        {"name": "handwerker_eur", "typ": "float", "pflicht": false},
        {"name": "anteil_lohn_35a_eur", "typ": "float", "pflicht": false},
        {"name": "wohngeld_eur", "typ": "float", "pflicht": false},
        {"name": "wirtschaftseinheit", "typ": "string", "max_chars": 200, "pflicht": false}
      ],
      "plausibilitaet": [
        "umlagefaehig + nicht_umlagefaehig <= hausgeld_gesamt",
        "anteil_lohn_35a <= haushaltsnahe + handwerker"
      ]
    },
    {
      "klasse": "erhaltungsrechnung",
      "lastenheft_id": "M1-S01",
      "verwendung": "Anlage V — Erhaltungsaufwand inkl. 15%-Pruefung § 6 Abs. 1 Nr. 1a EStG",
      "felder": [
        {"name": "rechnungsdatum", "typ": "date", "pflicht": true},
        {"name": "leistungsdatum_von", "typ": "date", "pflicht": false},
        {"name": "leistungsdatum_bis", "typ": "date", "pflicht": false},
        {"name": "rechnungsnummer", "typ": "string", "max_chars": 100, "pflicht": false},
        {"name": "rechnungsteller_name", "typ": "string", "max_chars": 200, "pflicht": true},
        {"name": "rechnungsteller_ustidnr", "typ": "string", "max_chars": 20, "pflicht": false},
        {"name": "objekt_adresse", "typ": "string", "max_chars": 300, "pflicht": false},
        {"name": "leistungsbeschreibung", "typ": "text", "max_chars": 1000, "pflicht": false},
        {"name": "netto_eur", "typ": "float", "pflicht": true},
        {"name": "ust_eur", "typ": "float", "pflicht": false},
        {"name": "brutto_eur", "typ": "float", "pflicht": true},
        {"name": "arbeitskosten_eur", "typ": "float", "pflicht": false, "verwendung": "§ 35a EStG"},
        {"name": "kategorie_vorschlag", "typ": "enum", "werte": ["instandhaltung", "renovierung", "modernisierung", "fenster_tueren", "dach", "heizung", "elektro", "sanitaer", "garten"], "pflicht": false}
      ]
    },
    {
      "klasse": "grundsteuerbescheid",
      "lastenheft_id": "M1-S01",
      "verwendung": "Anlage V — Werbungskosten",
      "felder": [
        {"name": "veranlagungsjahr", "typ": "int", "pflicht": true},
        {"name": "objekt_adresse", "typ": "string", "max_chars": 300, "pflicht": true},
        {"name": "aktenzeichen", "typ": "string", "max_chars": 50, "pflicht": false},
        {"name": "grundsteuermessbetrag_eur", "typ": "float", "pflicht": false},
        {"name": "hebesatz_prozent", "typ": "float", "pflicht": false},
        {"name": "grundsteuer_jahr_eur", "typ": "float", "pflicht": true},
        {"name": "faelligkeit_quartal", "typ": "string", "max_chars": 20, "pflicht": false},
        {"name": "gemeinde", "typ": "string", "max_chars": 100, "pflicht": false}
      ]
    },
    {
      "klasse": "bank_zinsbescheinigung",
      "lastenheft_id": "M1-S01",
      "verwendung": "Anlage V — Schuldzinsen + Disagio § 9 Abs. 1 Nr. 1 EStG",
      "felder": [
        {"name": "kreditinstitut", "typ": "string", "max_chars": 200, "pflicht": true},
        {"name": "darlehensnummer", "typ": "string", "max_chars": 50, "pflicht": false},
        {"name": "kreditnehmer", "typ": "string", "max_chars": 200, "pflicht": true},
        {"name": "veranlagungsjahr", "typ": "int", "pflicht": true},
        {"name": "zinsen_eur_jahr", "typ": "float", "pflicht": true},
        {"name": "tilgung_eur_jahr", "typ": "float", "pflicht": false},
        {"name": "disagio_eur", "typ": "float", "pflicht": false},
        {"name": "verwendungszweck", "typ": "string", "max_chars": 200, "pflicht": false, "verwendung": "Zuordnung zu V+V-Objekt"}
      ]
    },
    {
      "klasse": "jahressteuerbescheinigung",
      "lastenheft_id": "M2-F02",
      "verwendung": "Anlage KAP — amtliches Muster (FFG Bankenverband)",
      "felder": [
        {"name": "kreditinstitut", "typ": "string", "max_chars": 200, "pflicht": true},
        {"name": "depotinhaber", "typ": "string", "max_chars": 200, "pflicht": true},
        {"name": "veranlagungsjahr", "typ": "int", "pflicht": true},
        {"name": "kapertraege_gesamt_eur", "typ": "float", "pflicht": true},
        {"name": "kapertraege_zu_versteuern_eur", "typ": "float", "pflicht": false},
        {"name": "aktienverkaufsgewinne_eur", "typ": "float", "pflicht": false},
        {"name": "aktienverluste_eur", "typ": "float", "pflicht": false},
        {"name": "sonstige_verluste_eur", "typ": "float", "pflicht": false},
        {"name": "sparer_pauschbetrag_inanspruchnahme_eur", "typ": "float", "pflicht": false},
        {"name": "kapital_einbehalt_kapest_eur", "typ": "float", "pflicht": false},
        {"name": "kapital_einbehalt_solz_eur", "typ": "float", "pflicht": false},
        {"name": "kapital_einbehalt_kist_eur", "typ": "float", "pflicht": false},
        {"name": "auslaendische_quellensteuer_eur", "typ": "float", "pflicht": false},
        {"name": "verlustbescheinigung_kennzeichen", "typ": "bool", "pflicht": false}
      ],
      "plausibilitaet": [
        "kapertraege_gesamt >= kapest_einbehalt × 4 (25% Abgeltungsteuer)",
        "aktienverluste nur gegen aktiengewinne verrechenbar"
      ]
    }
  ],
  "qualitaetsanforderungen": {
    "feldgenauigkeit_pro_klasse": "≥ 95 % auf internem Validierungsset (Lastenheft M1-S03)",
    "konfidenz_schwelle_low": 0.6,
    "konfidenz_schwelle_high": 0.85,
    "verhalten_unter_low": "Feld leer im Vorschlag (Markierung im Beleg) — kein Auto-Fill",
    "verhalten_zwischen_low_high": "Vorschlag mit Warnung anzeigen",
    "verhalten_above_high": "Vorschlag standard anzeigen, Bestaetigung bleibt Pflicht"
  },
  "audit_log_pflichtfelder": [
    "klasse",
    "dokument_hash",
    "modell_version",
    "bearbeiter_id",
    "zeitstempel",
    "konfidenzwerte_je_feld",
    "uebernommene_werte",
    "verworfene_werte"
  ],
  "integration": {
    "endpoint": "POST /api/v1/specht/analyze",
    "gateway": "https://gruenspecht.steuersoft.ai/v1/llm/kategorisieren",
    "deployment_server": "46.225.112.20 (Belegbot)",
    "vertrauensgrenze": "Hetzner-internes Netz (claude-local-Regel) — Verarbeitung ausschliesslich auf eigener Infrastruktur"
  }
}
