feat: Add password reset functionality with request and reset forms
feat: Implement price list import feature with preview and apply options feat: Create price rules management page with CRUD operations feat: Develop quotes management page with itemized quotes and status tracking feat: Introduce organization registration page for new users feat: Build suppliers management page with detailed supplier information feat: Create users management page for inviting and managing roles chore: Add TypeScript configuration for improved type checking chore: Set up Vite configuration for development server and API proxy chore: Add Vite environment type definitions for better TypeScript support
This commit is contained in:
58
FENSTERKONZEPT.md
Normal file
58
FENSTERKONZEPT.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Fensterkonzept
|
||||
|
||||
Die Anwendung ist nach dem Login fensterbasiert. Das Dashboard bleibt die
|
||||
Hauptfläche und zeigt Status, Live-Verbindung und zusammenfassende Daten. Alle
|
||||
fachlichen Arbeitsbereiche öffnen als eigene Fenster.
|
||||
|
||||
## Grundregeln
|
||||
|
||||
- Vor dem Login sind nur Login und Registrierung sichtbar.
|
||||
- Nach dem Login bleibt das Dashboard die Basisansicht.
|
||||
- Navigationseinträge außer Dashboard öffnen ein Fenster.
|
||||
- Ein bereits geöffnetes Fenster wird fokussiert, nicht doppelt geöffnet.
|
||||
- Fenster können geschlossen und später erneut geöffnet werden.
|
||||
- Fenster behalten pro Benutzer Position, Größe und Reihenfolge, soweit der
|
||||
jeweilige Client das technisch unterstützt.
|
||||
- Offene Listenfenster müssen auf Live-Events reagieren und ihre Daten
|
||||
aktualisieren oder als veraltet markieren.
|
||||
|
||||
## Einheitliche Fensteraktionen
|
||||
|
||||
- `Öffnen`: Fenster wird erzeugt oder, falls vorhanden, fokussiert.
|
||||
- `Fokussieren`: Fenster erhält die höchste Z-Reihenfolge.
|
||||
- `Schließen`: Fenster wird aus der Arbeitsfläche entfernt.
|
||||
- `Verschieben`: Fensterposition wird geändert.
|
||||
- `Größe ändern`: Fensterabmessungen werden geändert.
|
||||
- `Aktualisieren`: Fenster lädt seine Daten neu oder reagiert auf ein
|
||||
Backend-Event.
|
||||
|
||||
## Webclient
|
||||
|
||||
- Fenster werden über der Dashboard-Fläche dargestellt.
|
||||
- Position und Größe sind per Maus oder Pointer veränderbar.
|
||||
- Fensterstatus wird im `localStorage` pro Benutzer gespeichert.
|
||||
- Wiederherstellung erfolgt nach Login oder Reload.
|
||||
|
||||
## Desktopclient
|
||||
|
||||
- Fenster verwenden native `egui::Window`-Instanzen.
|
||||
- Benutzerrechte, Firmendaten und Freischaltungen sind als Fenster umgesetzt.
|
||||
- Weitere fachliche Module folgen demselben Muster.
|
||||
|
||||
## Live-Updates
|
||||
|
||||
Backend-Änderungen erzeugen Events über die bestehende Socket-Verbindung. Clients
|
||||
verwenden diese Events, um offene Fenster zu aktualisieren oder deren Status auf
|
||||
`Aktualisiert` zu setzen.
|
||||
|
||||
Für Phase 2 genügt ein gemeinsamer Live-Event-Store pro Client. Fachliche
|
||||
Module können später gezielt nach Entity-Typ filtern.
|
||||
|
||||
## Parallelbearbeitung und Konflikte
|
||||
|
||||
- Schreibvorgänge laufen immer über das Backend.
|
||||
- Das Backend entscheidet final über Berechtigungen und Datenstand.
|
||||
- Bei konkurrierenden Änderungen wird zunächst eine frische Liste geladen.
|
||||
- Für spätere fachliche Datensätze wird ein Versionsfeld oder `updated_at`
|
||||
benötigt, damit Konflikte vor dem Speichern erkennbar sind.
|
||||
|
||||
Reference in New Issue
Block a user