Digitaler Einkauf
Ziele
Risikogruppen wie Rentner und bereits am Corona Virus erkrankte Menschen würden sich und andere auf dem Weg zum Supermarkt einer hohen Gefahr aussetzen. Deswegen haben wir uns zum Ziel gesetzt mit einer WebApplikation, die Versorgung von Risikogruppen zu gewährleisten, die Bevölkerung zu schützen und die Solidarität in der Krisensituation zu fördern
Use Cases
Verbraucher
- Verbraucher in Risikogruppen (Senioren, Personen in Quarantäne) können per Web-Applikation ihren Bedarf melden
- Alternativ können Angehörige der Verbraucher ebenfalls eine Bestellung aufgeben, falls die Verbraucher technologisch oder aufgrund fortgeschrittener Erkrankung nicht in der Lage sind
- Die gewählten Waren werden mit dem Portfolio der lokalen Supermärkte gematcht, sodass sich ein Preis errechnen lässt
- Die gewählten Waren werden anschließend per PayPal bezahlt
Kommissionäre
- Kommissionäre können sich freiwillig melden, bedürftigen Verbrauchern in der Notsituation zu helfen
- Sie erhalten per Web-Applikation Informationen über Personen in der Nähe, die dringend mit Waren versorgt werden müssen
- Auf Basis von technischen Schnittstellen der umliegenden Supermärkte werden Bestände überprüft, sodass die Kommissionäre die Waren innerhalb kürzester Zeit einsammeln können
- Nachdem die Kommissionäre die Waren gesammelt haben, können Sie per Applikation melden, dass die Waren abholfähig sind
Lieferanten
- Die Lieferanten sammeln die kommissionierten Bestellungen an den jeweiligen Abholstellen ein´
- Auf Basis von Routenoptimierung werden optimale Auslieferungsrouten gebildet, sodass die Verbraucher in der Risikogruppe schnellst möglich versorgt werden können
- Potentiell wäre hier die Kooperation mit Taxi- oder Lieferunternehmen denkbar, damit ihr Umsatzverlust durch die Krise aufgefangen werden kann und somit der Wirtschaftszweig erhalten bleibt
Was haben wir erreicht?
- Fachliche und technische Anforderungen aus Sicht der betroffenen Personen festgelegt
- Konzeptentwurf für die Versorgung von bedürftigen Personen mit Lebensmitteln und Waren
- Ein prototypisches Backend für die Umsetzung des System aufgesetzt und programmiert
- Ein Frontend-Workflow definiert, um die Use Cases für Verbraucher, Kommissionäre & Lieferanten abzubilden
- Ein technologische Basis für die Bereitstellung der Anwendung in der Cloud geschaffen (Heroku)
- Lokal ein erweiterungsfähiges Datenbankmodell mit Migrationsmöglichkeit aufgesetzt (Liquibase)
Was kommt als nächstes?
- Vollständige technische Umsetzung des geplanten Systems
- Die Umsetzung der UI-Komponenten des Systems
- Die Authentifizierung und Registrierung von Nutzern über Social Media-Plattformen
- Die Bereitstellung und Integration von Schnittstellen zu Supermärkten, um das Produktportfolio abfragen zu können
- Die Integration von Lokalisierungsdiensten, um die umliegenden Supermärkte identifizieren zu können
- Die Nutzung von Routenplanung, um die Routen für die Lieferanten zu ermitteln
Was haben wir dabei gelernt?
- Aufbau einer Projektstruktur und Issues in Github
- Aufsetzen von IntelliJ und Kopplung mit Github
- Erzeugen einer Spring-Anwendung
- Hosting des Services via Heroku
- Bereitstellung und Benutzung von Liquibase
- Benutzung verschiedener Datenbanken (h2, mysql)
- Erstellen eins Mockups mit Figma
- Kooperation und agile Aufgabenverteilung als Team
Teammitglieder
- Matthias Kutz (@kutzilla)
- Maximilian Rich (@malex5335)
- Livia Welschinger (@liviawelschinger)
- Wolfram Welschinger (@wolframwelchinger)
- Marco Dennstädt (@Sharian)
- Yaprak Turhan
- Daniel (@Dani-cali)
- Marius Martin (@DrAlliteration)
API-Dokumentation (Swagger-UI)
https://digital-einkaufen.herokuapp.com/swagger-ui.html
Projekt starten
Projekt lokal bauen:
mvn clean install
Projekt starten:
mvn spring-boot:run
Nach den beiden obigen Schritten ist die Applikation auf Port 80 auf dem lokalen System verfügbar:
http://localhost:80
http://127.0.0.1:80
Projektdokumentation
Backlog
https://github.com/liviawelschinger/digitaler-einkauf/projects/1
ER-Modell
https://dbdiagram.io/d/5e75413e4495b02c3b888b15
Mockup
Pitch-Video
Requirements
Fachlich
Registrierung
Registrierung per Mail, Google Konto, Facebook-Konto Registrierung (älterer Menschen) auch durch Angehörige möglich Bestätigungslink an die Mailadresse
Login
- Login mit E-Mail-Adresse, Google Konto, Facebook-Konto
- Authentifizierungsmechanismus
- Bietet Heroku einen Authentifizierungs-Service?
- Bestellungsaufgabe durch den Endnutzer / Verbraucher
- Dem Nutzer werden Kategorien von Lebensmitteln angezeigt
- Innerhalb dieser Kategorien kann der Nutzer eine beliebige Anzahl eines Produkts einem Warenkorb hinzufügen (Zusatz für später: Bestellung ist auch per Telefon möglich, Ehrenamtliche mit Call Center Funktion (Dispatcher): Bestellung in Text umwandeln)
- Bezahlung
- Fokus: Digital
- PayPal-Service (Bar bei Abholung)
- Bar bei Lieferung nach Hause / Entgegennahme des Pakets Kassensystem? Wo wird das Bargeld gesammelt?)
Bestellungsannahme durch den Kommissionierer
- Beim Kommissionierer ploppt in der Übersichtstabelle der neue Bestellungsauftrag durch den Benutzer auf
- Bestellung erhält eine Bestellnummer und ein Eingangsdatum/-timestamp
- Bestellungsannahme erfolgt basierend auf einen festgelegten Umkreis (Google Maps API)
- Bestellung gerät in eine Warteschleife - Status Offen, Priorisierung (First in First Out)
Bestellungsbearbeitung durch den Kommissionierer
- Kommissionierer kann den Status der Bestellung bearbeiten (Offen, Kommissionierer zugewiesen, In Bearbeitung, -Bereit zur Abholung / Bereit zur Auslieferung, Ausgeliefert, Zurückgenommen)
- Prüfung des Lagerbestands
- Wartezeiten festlegen und analog zum Status der Bestellung aktualisieren
Lebensmittel-Paket-Annahme durch den Lieferanten
- Bei einer Zustellung an die Adresse des Kunden nimmt der Lieferant das kommissionierte Paket vom Kommissionierer entgegen
- Hierbei muss die Kapazität des Fahrzeugs (Taxi, Lieferwagen) berücksichtigt werden
- Sobald das Paket verladen ist, aktualisiert sich der Status von In Bearbeitung zu Bereit zur Auslieferung → Bestellungsbenachrichtigung an den Verbraucher (E-Mail oder Push Notification)
- Routenoptimierung, Wegzeiten verkürzen, möglichst Kunden in einem Umkreis nacheinander bedienen Bestätigungsmechanismus für Lieferanten und Kunden
Technisch
Aufsetzen einer Datenbank
DB-Schema Produktkategorien Produkte: Preis, Auswahl Anzahl Bestellung speichern Voraussetzung, dass eine Bestellung den Status Offen erhält ist die vorgelagerte Bezahlung der ausgewählten Produkte Bestellstatus: Offen, Kommissionierer zugewiesen, In Bearbeitung, Bereit zur Abholung / Bereit zur Auslieferung, Ausgeliefert, Zurückgenommen (Sonderstatus z.B. weil die Bestellung fälschlicherweise aufgegeben wurde) Ein Kommissionierer kann nur einem Supermarkt zugeordnet, ein Supermarkt kann mehrere Kommissionierer beschäftigen. Der Kommissionierer fragt nach den Pull-Prinzip die Lieferfähigkeit bei Supermärkten in der Nähe an Umkreis festlegen (Umkreisssuche durch Google Maps) SQL-Datenbank (Liquibase: https://www.liquibase.org/)
PayPal REST API
Durch OAuth2 abgesichert https://developer.paypal.com/docs/api/overview/
Routenoptimierung
Recherche: Service der dies anbietet
Aufsetzen eines Backend-Projektes
Package Unterteilung nach Features (z.B. “bestellaufgabe”) Ein Package enthält immer: Entity DB-Repository Service REST-Controller
Aufsetzen eines...
API Dokumentation
Swagger API zur Dokumentation und zum Testen der Endpunkte
Log in or sign up for Devpost to join the conversation.