# GCOutline – Spezifikation ## **Projektübersicht** **GCOutline** ist ein webbasiertes Forderungsmanagement-Tool für ein Autohaus. Es basiert auf **Python** mit **FastAPI** als Backend, **jinja2** für Templates und **htmx** für dynamische Interaktionen. Die Datenhaltung erfolgt in einer **Microsoft SQL Server**-Datenbank. Als UI-Framework wird **CoreUI** verwendet. Die Authentifizierung und Benutzergruppensteuerung erfolgt über **LDAP**. --- ## **Technologie-Stack** - **Backend:** Python 3.x, FastAPI - **Frontend:** jinja2, htmx, CoreUI (HTML/CSS/JS) - **Datenbank:** Microsoft SQL Server - **Auth:** LDAP (Active Directory) - **Deployment:** Docker (optional), Gunicorn/Uvicorn - **API:** REST (JSON) --- ## **Hauptfunktionen** ### **1. Login & Berechtigungen** - Authentifizierung über LDAP. - Benutzergruppensteuerung (z. B. Standort, Rolle). - Nach erfolgreichem Login: Weiterleitung zur Forderungsliste. ### **2. Forderungsliste (Offene Posten)** - Anzeige einer Tabelle mit Forderungen: - Sortierung: **Standard nach Fälligkeit (aufsteigend)**. - Filter: - Standort - Verkäufer - Kunde - Fälligkeit (Datum) - Textsuche über: - Verkäufer - Kunde - Fahrzeug - Fahrgestellnummer - Rechnungsnummer - Bemerkung - **Pagination / Infinite Scroll:** - Initial: 100 Einträge. - Beim Scrollen: dynamisches Nachladen weiterer Einträge via htmx. - **Export-Funktion:** - CSV-Export. - Excel-Export (XLSX). ### **3. Detailansicht** - **Eigene Seite** mit eindeutiger URI: - `/detail/{id}` oder `/detail/{rechnungsnummer}` - Inhalte: - Rechnungsdetails (Forderung, Betrag, Fälligkeit). - Bereits geleistete Zahlungen. - Kaufhistorie des Kunden. - Eingabefelder: - Bemerkung (Textfeld). - Wiedervorlage-Datum (Datepicker). - Speicherung: - Bemerkung + Wiedervorlage in separater Tabelle mit: - Zeitstempel - Benutzer-Info (aus LDAP) - Verknüpfung zur Forderung. - **Export-Funktionen auf Detailseite:** - Microsoft Word (DOCX) mit Template und Platzhaltern für Tabellenfelder. - E-Mail-Erstellung via `mailto:` mit Link zur Detailseite. - **Navigation:** - Beim Verlassen der Detailseite (Speichern oder Zurück) wird die zuletzt verwendete Filterung und Sortierung wiederhergestellt. --- ## **UI/UX Anforderungen** - **CoreUI** als Basis-Template. - Responsive Design. - Dropdown-Filter + Textsuche prominent. - Infinite Scroll für Performance. - Detailansicht als eigene Seite. - Export-Buttons klar sichtbar. --- ## **Datenbank-Design (vereinfacht)** ### Tabellen - **Forderungen** - ID (PK) - Kunde_ID - Verkäufer_ID - Fahrzeug - Fahrgestellnummer - Rechnungsnummer (Unique) - Betrag - Fälligkeit - Status - **Kunden** - ID - Name - Historie - **Zahlungen** - ID - Forderung_ID - Betrag - Datum - **Bemerkungen** - ID - Forderung_ID - Benutzer - Bemerkung - Wiedervorlage_Datum - Zeitstempel --- ## **Sicherheitsanforderungen** - LDAP-Authentifizierung. - Rollenbasierte Zugriffskontrolle. - HTTPS für alle Verbindungen. - SQL-Injection-Schutz (ORM oder Prepared Statements). --- ## **Performance** - Lazy Loading (htmx). - Pagination für große Datenmengen. - Indexierung der Filterfelder in SQL Server. --- ## **Offene Punkte** - Word-Template: Soll ein Autohaus-Briefkopf und Platzhalter für Rechnungsdaten enthalten. - E-Mail: Nur `mailto:`-Link mit Betreff und URL zur Detailseite. - Logging & Monitoring: vorerst nicht erforderlich.