-- PROJ: Beleg-/Dokumentdatum (document_date) aus dem OCR-Text -- Doku-only (siehe README.md in diesem Verzeichnis) — die tatsächliche -- Ausführung passiert idempotent über -- internal/storage/documents.go (*Store).initSchema(). -- -- Bisher wurde der WORM-Ablagepfad store////. -- aus dem Scan-/Upload-Zeitpunkt (time.Now()) gebildet. Neu wird beim Upload -- versucht, das echte Belegdatum (Rechnungs-/Dokumentdatum) aus dem OCR-Text -- zu erkennen (extractDocumentDate in internal/api/date_extraction.go, -- Regex-basiert: DD.MM.YYYY, DD.MM.YY, YYYY-MM-DD). Wird ein plausibles Datum -- gefunden, bestimmt dessen Jahr/Monat den Ablagepfad; sonst Fallback auf den -- Scan-Zeitpunkt wie bisher. -- -- created_at bleibt unverändert der unveränderliche Scan-/Upload-Zeitstempel -- (GoBD-Nachvollziehbarkeit). document_date ist ein SEPARATES, nullbares -- Metadatenfeld: NULL bei Altbeständen und wenn kein Datum erkannt wurde. -- -- Reprocess (POST /api/documents/{id}/reprocess) aktualisiert bei erneuter -- OCR-Verarbeitung nur dieses Feld — die bereits WORM-gesperrte Datei und ihr -- Ablagepfad werden NIEMALS nachträglich verschoben. ALTER TABLE documents ADD COLUMN IF NOT EXISTS document_date DATE;