Έχουμε υλοποιήσει τρία use cases:
- φόρτιση αυτοκινήτου
- αναζήτηση σταθμών
- επεξεργασία δεδομένων.
Στο πρώτο use case υποθέτουμε ότι ένας πελάτης επισκέπτεται ένα σταθμό, διαλέγει ένα φορτιστή και φορτίζει το αυτοκίνητό του. Στη διαδικασία της συναλλαγής δίνει την πινακίδα του στο σταθμό, από την οποία ο σταθμός μπορεί να βρει τα στοιχεία του από τη βάση δεδομένων του υπουργείου. Πριν ξεκινήσει η φόρτιση, ο πελάτης επιλέγει πόση ενέργεια θέλει να βάλει και του δίνεται μια εκτίμηση του κόστους αυτής, ώστε να βεβαιωθεί ότι επιθυμεί να γίνει η συναλλαγή. Στη συνέχεια έχει επιλογή να πληρώσει με μετρητά ή με κάρτα και (προαιρετικά) να αξιολογήσει το σταθμό. Τέλος, όλα τα δεδομένα της φόρτισης εισάγονται στη βάση ως ένα νέο session.
Στο δεύτερο use case θεωρούμε ότι ένας πελάτης αναζητεί σταθμό για να φορτίσει το αυτοκίνητό του. Για αυτό το σκοπό, με βάση την τοποθεσία του πελάτη η εφαρμογή μας του προτείνει τους κοντινότερους σταθμούς στην περιοχή του και του δίνει τις αντίστοιχες πληροφορίες. Επειδή δεν ήταν εφικτό να υπολογίζουμε όντως κάποια απόσταση σαν ένα πραγματικό σύστημα gps, έχουμε απλουστεύσει το πρόβλημα προτείνοντας όλους τους σταθμούς που βρίσκονται στην ίδια πολιτεία με τον πελάτη. Το σύστημά μας επίσης υπολογίζει μια εκτίμηση του χρόνου αναμονής για καθέναν από τους σταθμούς, με βάση το πόσους ενεργούς φορτιστές διαθέτει ο καθένας και πόσα αυτοκίνητα περιμένουν σε αυτόν. Ο χρήστης έχει τη δυνατότητα να κάνει sort τους σταθμούς που του επιστρέφονται, είτε με βάση το χρόνο αναμονής είτε με βάση τις αξιολογήσεις χρηστών (δηλαδή τον μέσο όρο των ratings που προκύπτουν από το προηγούμενο use case).
Στο τρίτο use case θεωρούμε ότι ένας σταθμός επεξεργάζεται τα δεδομένα των transactions για κάποια χρονική περίοδο που επιλέγει ο ίδιος. Με βάση αυτά τα δεδομένα, ο σταθμός μπορεί να επιλέξει είτε να του εμφανιστούν διαγράμματα για τις φορτίσεις ανά μέρα, είτε να του εμφανιστούν αναλυτικά στοιχεία συνολικά για την επιλεγμένη περίοδο, είτε να εκδώσει λογαριασμό για κάποιο όχημα για την ίδια περίοδο.
Για την ανάπτυξη του συστήματος χρησιμοποιήθηκαν οι εξής τεχνολογίες:
- Back-end:
Java
σε συνδυασμό μεSpring
(framework),Gradle
(building tool),JDBC
(σύνδεση με βάση) καιApache Tomcat Server
. - Παραγωγή των δεδομένων της βάσης:
Python 3
με τα επιπρόσθετα modulesFaker
καιNumpy
, καθώς και το αρχείοelectric_vehicles_data.json
(από τη σελίδα του μαθήματος). - CLI:
Javascript
με χρήσηNode.js
καιaxios
requests, για επικοινωνία μεταξύ back-end και API. - Front-end:
React.js
framework, με τις βιβλιοθήκεςchart.js
,react-chartjs-2
καιreact-router-dom
.
Για εγκατάσταση του project:
- Εγκατάσταση του back-end ακολουθώντας τις οδηγίες του README στον αντίστοιχο φάκελο.
- Κατασκευή της βάσης και παραγωγή των δεδομένων της ακολουθώντας τις οδηγίες του README στο φάκελο Database.
- Εγκατάσταση του CLI με τις οδηγίες του αντίστοιχου README.
- Ομοίως για το front-end.