c-stone-invoice-check/docs/schema.md

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 |