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

https://www.figma.com/proto/bTJJEkGnSbgpQUZdLXv7bz/digital-einkaufen?node-id=6%3A2&scaling=scale-down

Pitch-Video

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

+ 1 more
Share this project:

Updates