2 BESCHRIEB FÜR VARIANTE 1.3 2.1 Ausschreibung: Entwicklung einer Web-Applikation (PDF-Verarbeitung mit Bestell- und Paketverwaltung) 2.1.1 Ziel Es soll eine webbasierte Anwendung entwickelt werden, mit der eingehende Bestellungen (PDF-Dateien) eingelesen, verarbeitet, überprüft und in einer Datenbank gespeichert werden können. Die Anwendung soll benutzerfreundlich, zweisprachig (Deutsch/Englisch), sicher und erweiterbar sein. 2.1.2 Funktionsumfang 2.1.2.1 Benutzerverwaltung - Login über Benutzername/Passwort (Authentifizierung). - Benutzer darf nur Bestellungen einsehen/bearbeiten, die seiner hinterlegten Adresse zugeordnet sind (Autorisierung). - Administration: Das Onboarding neuer Benutzer erfolgt in einem externen System. In der Web-Applikation selbst soll der Benutzer jedoch: - sein Passwort ändern können - die Funktion „Passwort vergessen“ (Reset via E-Mail-Link) nutzen können 2.1.2.2 PDF-Verarbeitung - Hochladen von Bestell-PDFs durch den Endkunden. - Extraktion sämtlicher relevanter Zeilen (Positionen). - Erkennung und Auslesen der Bestellnummer. - Speicherung des originalen PDF-Dokuments in der Datenbank (oder als Datei mit Referenz). 2.1.2.3 Datenbank-Anbindung & Business-Logik - Vergleich der im PDF enthaltenen Bestellpositionen mit den Daten im System (Tabellenabfrage über Bestellnummer). - Markierung von Abweichungen (z. B. fehlende oder abweichende Positionen). - Benutzer kann Anpassungen vornehmen: - Position hinzufügen/löschen - Mengen/Konditionen anpassen - Schrittweise Bearbeitung: - In einem ersten Schritt soll der Benutzer auch nur den Liefertermin erfassen können, ohne weitere Details zu bearbeiten. - Weitere Schritte (Splitting, Positionsänderungen etc.) können danach erfolgen. - Offene Bestellungen: - Der Benutzer hat in einer Verwaltung/Übersicht Zugriff auf alle seine noch offenen Bestellungen. - Darstellung als Liste mit Filter-/Suchfunktionen (z. B. nach Bestellnummer, Liefertermin, Status). - Von dort aus kann er eine Bestellung öffnen und weiterbearbeiten. - Änderungen werden in der Datenbank gespeichert (inkl. Änderungsprotokoll). 2.1.2.4 Bestellpositions-Splitting - Ausgangslage: Eine Position im PDF oder in der Datenbank (z. B. -1000 kg Produkt A-) muss vom Lieferanten in mehrere Pakete/Einheiten aufgeteilt werden können. - Erfassung pro Paket: mindestens 5 Pflichtfelder: 1. Paketnummer (z. B. -Paket 1, Paket 2, …-) 2. Gewicht (kg pro Paket) 3. Anzahl (Stück pro Paket) 4. Bemerkung/Referenz (frei definierbar) 5. Status (z. B. offen, geliefert, kontrolliert) - Beispiel: - Originalposition: -1000 kg- - Erfassung durch Lieferant: - Paket 1 → 100 kg, 2 Stück - Paket 2 → 150 kg, 3 Stück - … - Paket 10 → 50 kg, 1 Stück Validierungen: - Summe der Teilmengen darf die ursprüngliche Bestellmenge maximal bis 10% (% Konfigurierbar) über oder unterschreiten. - Pflichtfelder müssen ausgefüllt werden. - Speicherung jeder Teillieferung in einer eigenen Tabellenzeile, verknüpft mit der Originalbestellposition. Frontend-Darstellung: - Benutzer sieht die Hauptbestellposition. - Klick auf „Aufsplitten“ öffnet eine Maske/Tabelle zum Erfassen der Pakete. Wenn definiert ist das aufgesplittet werden muss, ist das abschliessen erst nach Erfassung von mindestens 2 Positionen möglich - Pakete können hinzugefügt/gelöscht werden. - Änderungen werden sofort gegen die Datenbank gespeichert (über REST API). 2.1.2.5 Benutzeroberfläche (Frontend) - HTML5-basierte Oberfläche mit Responsive Design (Desktop & Tablet). - Zweisprachigkeit (Deutsch/Englisch) – Sprachumschaltung durch Benutzer. - Übersichtlich strukturierte Darstellung der Bestellpositionen: - Originaldaten aus PDF - Vergleichsdaten aus Datenbank - Editierbare Tabellenansicht - Upload-Funktion für PDF. 2.1.3 Nichtfunktionale Anforderungen - Sicherheit: HTTPS, Passwort-Hashing, rollenbasierte Zugriffssteuerung. - Performance: Verarbeitung einer Bestellung (ca. 5–20 Seiten PDF) in < 10 Sekunden. - Dokumentation: - Installationsanleitung - Benutzerhandbuch (DE/EN) - Technische Dokumentation (API, Datenbankschema) - Code-Übergabe: Vollständiger Sourcecode inkl. Build-/Deployment-Skripte. 2.1.4 Technische Anforderungen Frontend: - HTML5, CSS3, JavaScript/TypeScript - Framework: React oder Angular (bitte Anbieterwahl angeben) Backend / REST API: - Programmiersprache: C (.NET Core) oder Node.js (Express) oder Java (Spring Boot) – bitte Anbieterwahl begründen - Schnittstellen: REST API (JSON) - Datenbank: - Relationale Datenbank (ist MS SQL Server) alle Daten werden über RESTAPI abgelegt. PDF-Verarbeitung: - Nutzung einer etablierten Bibliothek (z. B. iText7, PDFBox, PDF.js) - Internationalisierung: - Übersetzungen über JSON- oder i18n-Dateien 2.1.5 Lieferumfang - Voll funktionsfähige Web-Applikation gemäss Anforderungen. - Installationspaket (Deployment-Setup für Test & Produktion). - Dokumentation (technisch + Endbenutzer). - Quellcode inkl. Rechte zur Weiterentwicklung. 2.1.6 Erwartete Angebotsangaben 1. Vorgehensweise und Architekturvorschlag. 2. Eingesetzte Programmiersprachen, Frameworks und Bibliotheken. 3. Aufwandsschätzung (Personentage) und Preis. 4. Zeitplan (Umsetzungsdauer, Meilensteine). 5. Erfahrungen/Referenzen mit ähnlichen Projekten.