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:
181
IMPLEMENTIERUNGSPLAN.md
Normal file
181
IMPLEMENTIERUNGSPLAN.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# Implementierungsplan
|
||||
|
||||
Dieser Plan beschreibt die konkrete technische Umsetzung. Die fachlichen
|
||||
Grundentscheidungen stehen in `PLANUNG.md`; Installations- und Betriebsdetails
|
||||
stehen in `INSTALL.md`.
|
||||
|
||||
## Leitlinien
|
||||
|
||||
- Backend zuerst dort stabilisieren, wo mehrere Clients dieselben Funktionen
|
||||
nutzen.
|
||||
- Gemeinsame Datenverträge und Rechte werden vor UI-Komfortfunktionen umgesetzt.
|
||||
- Webclient und Desktopclient sollen dieselben Backend-Endpunkte verwenden.
|
||||
- Alles außer dem Dashboard wird in Fenstern bearbeitet.
|
||||
- Neue fachliche Funktionen bekommen eigene atomare Rechte.
|
||||
- Bestehende Firmenschemas müssen bei Backend-Start idempotent nachgezogen
|
||||
werden.
|
||||
- Benutzer sichtbare Texte verwenden echte Umlaute.
|
||||
|
||||
## Phase 1: Fundament Stabilisieren
|
||||
|
||||
Ziel: Login, Firma, Benutzerrechte, Fensterkonzept und Live-Aktualisierung sind
|
||||
verlässlich testbar.
|
||||
|
||||
- [x] PostgreSQL-Grundschema und Firmenschema-Migrationen anlegen
|
||||
- [x] Dev-Bootstrap für lokale Benutzer/Firma ohne E-Mail-Versand
|
||||
- [x] Webclient auf Vue umstellen
|
||||
- [x] Desktopclient-Konfiguration für Backend-URL
|
||||
- [x] Logo in Webclient und Desktopclient verwenden
|
||||
- [x] Benutzerrechte-Fenster im Webclient
|
||||
- [x] Benutzerrechte-Fenster im Desktopclient
|
||||
- [x] Rollenänderungen über Backend-Endpunkt speichern
|
||||
- [x] Atomare Rechte initial anlegen
|
||||
- [x] Bestehende aktive Firmenschemas beim Backend-Start nachziehen
|
||||
- [x] Echte Session-/Auth-Tokens einführen statt temporärer User-ID im Header
|
||||
- [x] Aktuelle Firma explizit auswählen und in Requests mitsenden
|
||||
- [x] Backend-Rechteprüfung für jeden geschützten Endpunkt zentralisieren
|
||||
- [x] Rollen auf Rechte abbilden und nicht nur Rollen anzeigen
|
||||
- [x] Live-Events für Benutzer-/Rollenänderungen an alle Clients senden
|
||||
- [x] Automatisierten API-Test für Rollenänderung ergänzen
|
||||
- [x] Webclient-Build/Typprüfung für Benutzerrechte-Fenster ergänzen
|
||||
- [x] Desktopclient-Build/Typprüfung für Benutzerrechte-Fenster ergänzen
|
||||
|
||||
## Phase 2: Fenster- und Clientmodell
|
||||
|
||||
Ziel: Die Anwendung verhält sich konsequent fensterbasiert und aktualisiert
|
||||
offene Fenster bei Änderungen.
|
||||
|
||||
- [x] Webclient öffnet angemeldete Arbeitsbereiche als Fenster
|
||||
- [x] Desktopclient öffnet Benutzerrechte als Fenster
|
||||
- [x] Gemeinsames Fensterkonzept dokumentieren
|
||||
- [x] Webclient-Fenster verschiebbar machen
|
||||
- [x] Webclient-Fenstergröße änderbar machen
|
||||
- [x] Webclient-Fensterstatus pro Benutzer lokal speichern
|
||||
- [x] Desktopclient-Fenster für Firmendaten ergänzen
|
||||
- [x] Desktopclient-Fenster für Freischaltung ergänzen
|
||||
- [x] Einheitliche Fensteraktionen definieren: Öffnen, Schließen, Fokussieren,
|
||||
Aktualisieren
|
||||
- [x] Live-Update-Store im Webclient für Stammdaten einführen
|
||||
- [x] Live-Update-Store im Desktopclient für Stammdaten einführen
|
||||
- [x] Konfliktverhalten bei paralleler Bearbeitung definieren
|
||||
|
||||
## Phase 3: Stammdaten
|
||||
|
||||
Ziel: Kunden, Lieferanten, Artikel und Aktivitäten sind als erste fachliche
|
||||
Objekte vollständig nutzbar.
|
||||
|
||||
- [x] Datenmodell Kunden finalisieren
|
||||
- [x] Migration Kunden erstellen
|
||||
- [x] Backend-CRUD Kunden implementieren
|
||||
- [x] Web-Fenster Kundenliste und Kundendetail implementieren
|
||||
- [x] Desktop-Fenster Kundenliste und Kundendetail implementieren
|
||||
- [x] Kundenrabatt und Skonto beim Kunden ablegen
|
||||
- [x] Datenmodell Lieferanten finalisieren
|
||||
- [x] Migration Lieferanten erstellen
|
||||
- [x] Backend-CRUD Lieferanten implementieren
|
||||
- [x] Lieferanten-Skonto ablegen
|
||||
- [x] Datenmodell Artikel finalisieren
|
||||
- [x] Migration Artikel erstellen
|
||||
- [x] Backend-CRUD Artikel implementieren
|
||||
- [x] Artikelpreise historisieren
|
||||
- [x] Datenmodell Aktivitäten finalisieren
|
||||
- [x] Migration Aktivitäten erstellen
|
||||
- [x] Backend-CRUD Aktivitäten implementieren
|
||||
- [x] Web-Fenster für Lieferanten, Artikel und Aktivitäten implementieren
|
||||
- [x] Desktop-Fenster für Lieferanten, Artikel und Aktivitäten implementieren
|
||||
- [x] Live-Events für Stammdatenänderungen senden
|
||||
|
||||
## Phase 4: Angebote und Rechnungen
|
||||
|
||||
Ziel: Angebote und Rechnungen bilden den ersten produktiven Arbeitsablauf.
|
||||
|
||||
- [x] Nummernkreise für Angebote und Rechnungen produktionsreif machen
|
||||
- [x] Nummernkreise für Kunden, Lieferanten, Artikel und Aktivitäten anbinden
|
||||
- [x] Nummernkreis-Verwaltung im Webclient und Desktopclient bereitstellen
|
||||
- [x] Datenmodell Angebote finalisieren
|
||||
- [x] Backend-CRUD Angebote implementieren
|
||||
- [x] Angebotspositionen nur aus vorhandenen Artikeln erlauben
|
||||
- [x] Positionspreis pro Angebot individuell überschreibbar machen
|
||||
- [x] Web-Fenster Angebot erstellen
|
||||
- [x] Desktop-Fenster Angebot erstellen
|
||||
- [x] Angebot zu Ausgangsrechnung umwandeln
|
||||
- [x] Datenmodell Ausgangsrechnungen finalisieren
|
||||
- [x] Rechnungspositionen nur aus vorhandenen Artikeln erlauben
|
||||
- [x] Positionspreis pro Rechnung individuell überschreibbar machen
|
||||
- [x] Kundenrabatt und Skonto automatisch vorschlagen
|
||||
- [x] Rechnung revisionssicher abschließen
|
||||
- [x] Storno-/Korrekturrechnung vorbereiten
|
||||
- [x] Datenmodell Eingangsrechnungen finalisieren
|
||||
- [x] Eingangsrechnungen Lieferanten zuordnen
|
||||
- [x] Lieferanten-Skonto berücksichtigen
|
||||
- [x] Web-Fenster Ausgangs- und Eingangsrechnungen erstellen
|
||||
- [x] Desktop-Fenster Ausgangs- und Eingangsrechnungen erstellen
|
||||
|
||||
## Phase 5: Import und Preisaktualisierung
|
||||
|
||||
Ziel: Artikellisten und externe APIs aktualisieren Preise nachvollziehbar.
|
||||
|
||||
- [x] Importformat CSV definieren
|
||||
- [x] Importformat Excel prüfen und als spätere Erweiterung zurückstellen
|
||||
- [x] Importvorschau im Backend vorbereiten
|
||||
- [x] Preislistenimport mit Mapping speichern
|
||||
- [x] Preisänderungen historisieren
|
||||
- [x] Preisregeln je Lieferant/Quelle definieren
|
||||
- [x] API-Connector-Grundstruktur anlegen
|
||||
- [x] Externe Preis-API-Konfiguration verschlüsselt speichern
|
||||
- [x] Manueller Preisabgleich
|
||||
- [x] Geplanter Preisabgleich vorbereiten: Intervall und letzter Abgleich werden gespeichert
|
||||
- [x] Live-Update an offene Angebots-/Rechnungsfenster senden
|
||||
- [x] Native-Client-Fenster für Preislisten, Preis-APIs und Preisregeln anbinden
|
||||
|
||||
## Phase 6: Kommunikation und Dokumente
|
||||
|
||||
Ziel: Kommunikation, Dokumente und Historie werden je Firma verwaltet.
|
||||
|
||||
- [x] Datenmodell Kommunikation finalisieren
|
||||
- [x] Kommunikation Kunden/Lieferanten/Vorgängen/Rechnungen zuordnen
|
||||
- [x] Dokumentenspeicher-Layout festlegen
|
||||
- [x] Dokumenten-Metadaten verschlüsselt speichern
|
||||
- [x] Upload-Endpunkt implementieren
|
||||
- [x] Download-Endpunkt implementieren
|
||||
- [x] Rechteprüfung für Dokumentzugriff
|
||||
- [x] Audit-Log für Dokumentzugriffe
|
||||
- [x] Web-Fenster für Kommunikation und Dokumente anbinden
|
||||
|
||||
## Phase 7: Sicherheit und Betrieb
|
||||
|
||||
Ziel: Öffentlicher Server und lokale Installation sind trennbar und sicher
|
||||
betreibbar.
|
||||
|
||||
- [x] Produktives Authentifizierungskonzept implementieren
|
||||
- [x] Passwort-Reset implementieren
|
||||
- [x] Einladung mit sicherem Token statt Passwortanzeige implementieren
|
||||
- [x] E-Mail-Outbox und produktiven Datei-Transport anbinden
|
||||
- [x] Dev-Ausgabe für E-Mail-Inhalte klar vom Produktivbetrieb trennen
|
||||
- [x] Mandantenschema-Erzeugung transaktional absichern
|
||||
- [x] Verschlüsselungsschlüssel-Konzept für Betrieb dokumentieren
|
||||
- [x] Schlüsselrotation planen
|
||||
- [x] Backup/Restore je Firma dokumentieren
|
||||
- [x] Docker-Setup für Backend erweitern
|
||||
- [x] Reverse-Proxy/TLS-Beispiel bereitstellen
|
||||
- [x] Installationsprogramm für lokale Einzelkunden-Version planen
|
||||
|
||||
## Phase 8: Qualitätssicherung
|
||||
|
||||
Ziel: Kernabläufe sind reproduzierbar testbar.
|
||||
|
||||
- [x] API-Onboarding-Test erweitern: Registrierung, Freischaltung, Login,
|
||||
Rechteänderung
|
||||
- [x] Kommunikationstest um Live-Events für fachliche Daten erweitern
|
||||
- [x] Migrationstest für bestehende Firmenschemas
|
||||
- [x] Rechteprüfung negativ testen
|
||||
- [x] Webclient-Build und Typprüfung in Standardcheck aufnehmen
|
||||
- [x] Desktopclient-Headless-Tests erweitern
|
||||
- [x] Datenbank-Testsetup dokumentieren
|
||||
- [x] Testdaten-Seed für lokale Entwicklung anlegen
|
||||
|
||||
## Aktueller Nächster Schritt
|
||||
|
||||
1. Optimierungen und Fehlerbehebungen priorisieren.
|
||||
2. Benutzereinstellungen für die Navigation sind umgesetzt: scrollbar,
|
||||
oder einklappbare Gruppen je Benutzer.
|
||||
Reference in New Issue
Block a user