101 lines
4.5 KiB
Markdown
101 lines
4.5 KiB
Markdown
# 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 |
|