gc-server3 пре 3 месеци
комит
ba4f1437b4
8 измењених фајлова са 192 додато и 0 уклоњено
  1. 10 0
      .gitignore
  2. 1 0
      .python-version
  3. 16 0
      .vscode/launch.json
  4. 24 0
      .vscode/settings.json
  5. 0 0
      README.md
  6. 6 0
      main.py
  7. 7 0
      pyproject.toml
  8. 128 0
      specs.md

+ 10 - 0
.gitignore

@@ -0,0 +1,10 @@
+# Python-generated files
+__pycache__/
+*.py[oc]
+build/
+dist/
+wheels/
+*.egg-info
+
+# Virtual environments
+.venv

+ 1 - 0
.python-version

@@ -0,0 +1 @@
+3.13

+ 16 - 0
.vscode/launch.json

@@ -0,0 +1,16 @@
+{
+    // Use IntelliSense to learn about possible attributes.
+    // Hover to view descriptions of existing attributes.
+    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "Python: Current File",
+            "type": "debugpy",
+            "request": "launch",
+            "program": "${file}",
+            "console": "integratedTerminal",
+            "justMyCode": true
+        }
+    ]
+}

+ 24 - 0
.vscode/settings.json

@@ -0,0 +1,24 @@
+{
+    "[python]": {
+        "editor.defaultFormatter": "ms-python.black-formatter",
+        "editor.formatOnSave": true,
+        "editor.codeActionsOnSave": {
+            "source.organizeImports": "explicit",
+        },
+    },
+    "isort.args":["--profile", "black"],
+    "black-formatter.args": ["--line-length", "120"],
+    "python.testing.pytestEnabled": false,
+    "python.testing.unittestEnabled": true,
+    "files.associations": {
+        "*.mac": "vbs"
+    },
+    "python.testing.unittestArgs": [
+        "-v",
+        "-s",
+        "./tests",
+        "-p",
+        "test_*.py"
+    ],
+    "python.testing.autoTestDiscoverOnSaveEnabled": true    
+}


+ 6 - 0
main.py

@@ -0,0 +1,6 @@
+def main():
+    print("Hello from appsmith-nachbau!")
+
+
+if __name__ == "__main__":
+    main()

+ 7 - 0
pyproject.toml

@@ -0,0 +1,7 @@
+[project]
+name = "appsmith-nachbau"
+version = "0.1.0"
+description = "Add your description here"
+readme = "README.md"
+requires-python = ">=3.13"
+dependencies = []

+ 128 - 0
specs.md

@@ -0,0 +1,128 @@
+# 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.