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
7.8 KiB
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.
- PostgreSQL-Grundschema und Firmenschema-Migrationen anlegen
- Dev-Bootstrap für lokale Benutzer/Firma ohne E-Mail-Versand
- Webclient auf Vue umstellen
- Desktopclient-Konfiguration für Backend-URL
- Logo in Webclient und Desktopclient verwenden
- Benutzerrechte-Fenster im Webclient
- Benutzerrechte-Fenster im Desktopclient
- Rollenänderungen über Backend-Endpunkt speichern
- Atomare Rechte initial anlegen
- Bestehende aktive Firmenschemas beim Backend-Start nachziehen
- Echte Session-/Auth-Tokens einführen statt temporärer User-ID im Header
- Aktuelle Firma explizit auswählen und in Requests mitsenden
- Backend-Rechteprüfung für jeden geschützten Endpunkt zentralisieren
- Rollen auf Rechte abbilden und nicht nur Rollen anzeigen
- Live-Events für Benutzer-/Rollenänderungen an alle Clients senden
- Automatisierten API-Test für Rollenänderung ergänzen
- Webclient-Build/Typprüfung für Benutzerrechte-Fenster ergänzen
- 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.
- Webclient öffnet angemeldete Arbeitsbereiche als Fenster
- Desktopclient öffnet Benutzerrechte als Fenster
- Gemeinsames Fensterkonzept dokumentieren
- Webclient-Fenster verschiebbar machen
- Webclient-Fenstergröße änderbar machen
- Webclient-Fensterstatus pro Benutzer lokal speichern
- Desktopclient-Fenster für Firmendaten ergänzen
- Desktopclient-Fenster für Freischaltung ergänzen
- Einheitliche Fensteraktionen definieren: Öffnen, Schließen, Fokussieren, Aktualisieren
- Live-Update-Store im Webclient für Stammdaten einführen
- Live-Update-Store im Desktopclient für Stammdaten einführen
- Konfliktverhalten bei paralleler Bearbeitung definieren
Phase 3: Stammdaten
Ziel: Kunden, Lieferanten, Artikel und Aktivitäten sind als erste fachliche Objekte vollständig nutzbar.
- Datenmodell Kunden finalisieren
- Migration Kunden erstellen
- Backend-CRUD Kunden implementieren
- Web-Fenster Kundenliste und Kundendetail implementieren
- Desktop-Fenster Kundenliste und Kundendetail implementieren
- Kundenrabatt und Skonto beim Kunden ablegen
- Datenmodell Lieferanten finalisieren
- Migration Lieferanten erstellen
- Backend-CRUD Lieferanten implementieren
- Lieferanten-Skonto ablegen
- Datenmodell Artikel finalisieren
- Migration Artikel erstellen
- Backend-CRUD Artikel implementieren
- Artikelpreise historisieren
- Datenmodell Aktivitäten finalisieren
- Migration Aktivitäten erstellen
- Backend-CRUD Aktivitäten implementieren
- Web-Fenster für Lieferanten, Artikel und Aktivitäten implementieren
- Desktop-Fenster für Lieferanten, Artikel und Aktivitäten implementieren
- Live-Events für Stammdatenänderungen senden
Phase 4: Angebote und Rechnungen
Ziel: Angebote und Rechnungen bilden den ersten produktiven Arbeitsablauf.
- Nummernkreise für Angebote und Rechnungen produktionsreif machen
- Nummernkreise für Kunden, Lieferanten, Artikel und Aktivitäten anbinden
- Nummernkreis-Verwaltung im Webclient und Desktopclient bereitstellen
- Datenmodell Angebote finalisieren
- Backend-CRUD Angebote implementieren
- Angebotspositionen nur aus vorhandenen Artikeln erlauben
- Positionspreis pro Angebot individuell überschreibbar machen
- Web-Fenster Angebot erstellen
- Desktop-Fenster Angebot erstellen
- Angebot zu Ausgangsrechnung umwandeln
- Datenmodell Ausgangsrechnungen finalisieren
- Rechnungspositionen nur aus vorhandenen Artikeln erlauben
- Positionspreis pro Rechnung individuell überschreibbar machen
- Kundenrabatt und Skonto automatisch vorschlagen
- Rechnung revisionssicher abschließen
- Storno-/Korrekturrechnung vorbereiten
- Datenmodell Eingangsrechnungen finalisieren
- Eingangsrechnungen Lieferanten zuordnen
- Lieferanten-Skonto berücksichtigen
- Web-Fenster Ausgangs- und Eingangsrechnungen erstellen
- Desktop-Fenster Ausgangs- und Eingangsrechnungen erstellen
Phase 5: Import und Preisaktualisierung
Ziel: Artikellisten und externe APIs aktualisieren Preise nachvollziehbar.
- Importformat CSV definieren
- Importformat Excel prüfen und als spätere Erweiterung zurückstellen
- Importvorschau im Backend vorbereiten
- Preislistenimport mit Mapping speichern
- Preisänderungen historisieren
- Preisregeln je Lieferant/Quelle definieren
- API-Connector-Grundstruktur anlegen
- Externe Preis-API-Konfiguration verschlüsselt speichern
- Manueller Preisabgleich
- Geplanter Preisabgleich vorbereiten: Intervall und letzter Abgleich werden gespeichert
- Live-Update an offene Angebots-/Rechnungsfenster senden
- 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.
- Datenmodell Kommunikation finalisieren
- Kommunikation Kunden/Lieferanten/Vorgängen/Rechnungen zuordnen
- Dokumentenspeicher-Layout festlegen
- Dokumenten-Metadaten verschlüsselt speichern
- Upload-Endpunkt implementieren
- Download-Endpunkt implementieren
- Rechteprüfung für Dokumentzugriff
- Audit-Log für Dokumentzugriffe
- Web-Fenster für Kommunikation und Dokumente anbinden
Phase 7: Sicherheit und Betrieb
Ziel: Öffentlicher Server und lokale Installation sind trennbar und sicher betreibbar.
- Produktives Authentifizierungskonzept implementieren
- Passwort-Reset implementieren
- Einladung mit sicherem Token statt Passwortanzeige implementieren
- E-Mail-Outbox und produktiven Datei-Transport anbinden
- Dev-Ausgabe für E-Mail-Inhalte klar vom Produktivbetrieb trennen
- Mandantenschema-Erzeugung transaktional absichern
- Verschlüsselungsschlüssel-Konzept für Betrieb dokumentieren
- Schlüsselrotation planen
- Backup/Restore je Firma dokumentieren
- Docker-Setup für Backend erweitern
- Reverse-Proxy/TLS-Beispiel bereitstellen
- Installationsprogramm für lokale Einzelkunden-Version planen
Phase 8: Qualitätssicherung
Ziel: Kernabläufe sind reproduzierbar testbar.
- API-Onboarding-Test erweitern: Registrierung, Freischaltung, Login, Rechteänderung
- Kommunikationstest um Live-Events für fachliche Daten erweitern
- Migrationstest für bestehende Firmenschemas
- Rechteprüfung negativ testen
- Webclient-Build und Typprüfung in Standardcheck aufnehmen
- Desktopclient-Headless-Tests erweitern
- Datenbank-Testsetup dokumentieren
- Testdaten-Seed für lokale Entwicklung anlegen
Aktueller Nächster Schritt
- Optimierungen und Fehlerbehebungen priorisieren.
- Benutzereinstellungen für die Navigation sind umgesetzt: scrollbar, oder einklappbare Gruppen je Benutzer.