# Datenbankschema — C-Stone Invoice Check ## Overview ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ Users │ │ EmailLogs │ │ Invoices │ ├─────────────┤ ├─────────────┤ ├─────────────────┤ │ id (PK) │───── │ email_id │───── │ id (PK) │ │ username │ │ subject │ │ email_id │ │ password │ │ from │ │ subject │ │ active │ │ date │ │ from │ └─────────────┘ │ folder │ │ date │ │ keywords │ │ amount │ │ attachment │ │ tax_amount │ │ processed │ │ tax_type │ └─────────────┘ │ issuer │ │ file_path │ └─────────────────┘ │ │ ┌─────────────────┐ │ InvoiceDetails │ ├─────────────────┤ │ id (PK) │ │ invoice_id (FK) │ │ raw_text │ │ parsed_data │ │ confidence │ └─────────────────┘ ``` ## Tabellen ### users Speichert Benutzer für die Web-Interface Authentifizierung. | Spalte | Typ | Beschreibung | |--------|-----|--------------| | id | Integer | Primärschlüssel | | username | String | Benutzername (unique) | | hashed_password | String | Passwort-Hash (bcrypt) | | is_active | Boolean | Account aktiviert | | created_at | DateTime | Erstellungsdatum | ### email_logs Protokolliert jede geprüfte Email. | Spalte | Typ | Beschreibung | |--------|-----|--------------| | id | Integer | Primärschlüssel | | email_id | String | IMAP UID (unique) | | subject | String | Betreff | | from | String | Absender | | date | DateTime | Empfangsdatum | | folder | String | Mail-Ordner | | matched_keywords | JSON | Gefundene Keywords | | has_attachment | Boolean | Hat Anhang | | attachment_type | String | pdf/doc/docx | | processed | Boolean | Verarbeitet | | invoice_id | Integer | Verweis auf Invoice (nullable) | | created_at | DateTime | Erstellungsdatum | ### invoices Speichert die Rechnungs-Metadaten. | Spalte | Typ | Beschreibung | |--------|-----|--------------| | id | Integer | Primärschlüssel | | email_id | String | IMAP UID der Original-Email | | subject | String | Email-Betreff | | from | String | Email-Absender | | date | DateTime | Email-Datum | | invoice_number | String | Rechnungsnummer | | invoice_date | DateTime | Rechnungsdatum | | amount | Float | Rechnungssumme | | tax_amount | Float | Steuerbetrag | | tax_rate | Float | Steuersatz (0.0, 0.19, etc.) | | tax_type | String | "MwSt", "Umsatzsteuer", "VAT", "ohne" | | issuer_name | String | Rechnungsausteller | | file_path | String | Vollständiger Pfad auf Evo-X2 | | storage_year | Integer | Jahr (2025, 2026) | | storage_path | String | Unterordner (z.B. "2025/ohne MwSt") | | processed | Boolean | Verarbeitung abgeschlossen | | processing_error | Text | Fehlermeldung (nullable) | | confidence_score | Float | 0.0 - 1.0 | | created_at | DateTime | Erstellungsdatum | | updated_at | DateTime | Letzte Änderung | ### invoice_details Speichert erweiterte Daten (roher PDF-Text, geparste Daten). | Spalte | Typ | Beschreibung | |--------|-----|--------------| | id | Integer | Primärschlüssel | | invoice_id | Integer | Verweis auf Invoice | | raw_text | Text | Extrahierter PDF-Text | | parsed_data | JSON | Strukturierte Daten | | confidence_breakdown | JSON | Einzelne Confidence-Werte | | processing_notes | Text | Anmerkungen | | created_at | DateTime | Erstellungsdatum |