Architektúrális leírás (Megnyitható UMLet-tel.)
A cél egy olyan SAAS alkalmazás készítése, ami cégek számára karbantartható módon tudja kezelni a vállalatok autóflottáját.
Ehhez tartozik az flották autóinak számon tartása, valamint azok tulajdonosának. Az üzemanyag fogyasztás és a megtett kilométerek számolása a fő cél. Ennek a folyamatnak a gördülékeny, intuitív megoldása.
A cégvezetők számára a havi kerettúllépések, és azoknak a számontartása szükséges funkció. Ezt átláthatóan és egyszerűen kell tudniuk megtenni a lehető legkevesebb időpazarlással.
- Bejelentkezés
- Kijelentkezés
- Regisztráció
- Flották megtekintése
- Flotta létrehozása
- Flotta módosítása
- Flotta törlése
- Flottakezelők módosítása
- Autók megtekintése
- Autó létrehozása
- Autó módosítása
- Autó deaktiválása
- Autóhoz tartozó bejegyzések megtekintése
- Bejegyzés létrehozása
- Bejegyzés töröltre állítása
- Összegzés megtekintése
- Összegzés jóváhagyása
- Befizetések listázása
- Befizetés jóváhagyása
- Szervíz figyelmeztetések megtekintése
- Szervíz feltételek létrehozása
- Szervíz feltételek törlése
- Szervízalkalmak megtekintése
- Szervízalkalmak létrehozása
- Szervízalkalmak törlése
- A felhasználó regisztrál, majd bejelentkezik. Létrehoz egy flottát, majd autókat is vesz fel bele. Beállítja az autók szervíz feltételeit.
- Belép a felhasználó és ellenőrzi, kell-e szervízelni az autókat.
- Tankolt üzemanyagot a felhasználó, majd rögzíti a rendszerbe. Ehhez belép és felveszi az autójához az adatot.
- A flottakezelő pénzt kap az autó használójától. Ezt felviszi a rendszerbe, majd elfogadja az összeget.
- A flotta új politikája miatt nincs szükség fél éves szervízre. A flottakezelő törli a szabályt.
- Egy autót nem használ senki hosszútávon. A flottakezelő deaktiválja az autót.
- Hónap végén a flotta kiadásait ellenőrzik. Az autók összesítőjét ellenőrzi a flottakezelő, majd elfogadja őket.
- Szervízelni vitték az autót. Felvesz a flottakezelő egy szervízalkalmat a rendszerbe.
- Az alkalmazás használható legyen az örökzöld webböngészőkből.
- A folyamatok a lehető legegyszerűbbek legyenek.
- Az üzleti logikai szabályokat rendszerezve szervezzük.
- Authorizáció
- Mobilnézet támogatása.
- Authentikáció bővíthetősége.
- Robosztus adatbázis kezelés.
- Biztonságos, OWASP-nak megfelelő megvalósítások.
- Tesztelhetőség.
Az architektúrális leírás interfészeinek részletezése.
Az authentikációt két interfész írja le. Egyik az Identity Server felé, másik a további providerek felé az OAuth.
Az adatbázis felé a MongoDB saját Wire Protocollján keresztül kommunikálunk.
Az alkalmazás API-ját különböző módszerekkel ajánljuk ki. Ez lehet WebApi vagy WebSocket, ami a Blazorrel kompatibilis. Ezt az alkalmazás fejlesztése során hozott döntésektől függ.
Egy bejelentkezett felhasználót azonosít. A belépés módját meghatározza, és ezeket össze lehet kötni a segítségével.
- azonosító
- felhasználónév
- e-mail cím
- jelszó
Az egység, ami összefogja a felhasználók autóit és az ehhez kapott jogosultságait.
- azonosító
- név
- hozzá tartozó autók
- flottakezelők
A felhasználók birtokolják az autókat. Minden autó egy céghez tartozik.
- rendszám
- havi költhető keret
Ezek az egységei a méréseknek. Minden mérés egy autóhoz tartozik. Minden tankolás esetén készül ilyen bejegyzés. Ezekkel lehet dologozni és mérni később a feladat során.
- km óra állása
- időpont
- helyszín
- mennyiség
- összeg
Ez egy aggregált adat. A gyorsabb adatelérés érdekében aggregálva is gyűjtük a historikus adatokat. Előfizetés nélkül egy hónapig tartja meg a szolgáltatás a bejegyzéseket.
- havi összes összeg
- havi keret
- megtett km-ek
- jóváhagyva
A keretet túllépve meg kell fizetni a túlköltött összeget. Ezt a program automatikusan méri. Befizetést hoz létre a hónap végén, amit minden jóváhagyott összesítőből készít.
- összeg
- befizetve
A szervíz egy autóhoz köthető időpont, amikor az autó szervízben járt.
- km óra állás
- időpont
- szervíz típusa (Javítás, karbantartás, kötelező szervíz)
Egy adott szabály, ami egy adott idő megteltével jelez, hogy az autót szervízbe kell vinni. Autóhoz köthető.
- gyakoriság
Egy adott szabály, ami egy adott km megteltele után jelez, hogy az autót szervízbe kell vinni. Autóhoz köthető.
- km
Az alkalmazás a frontenddel fog kommunikálni. Ehhez szükségesek a kommunikáció alapját adó DTO-k.
Minden flottát visszaad, amihez a felhasználó hozzáfér.
Response:
- id
- név
Új flottát hoz létre.
Request:
- név
Response:
- id
Flotta módosítása.
Request:
- név
Flotta törlése.
Kezelő felvétele a flottába.
Request:
- kezelőazonosító
Kezelő törlése a flottából. Ha ő lenne az utolsó, akkor nem lehet.
Flotta autóinak listázása.
Request:
- rendszám
- szervizKell
- oldalszám
- oldalhossz
Response:
- autók
- id
- rendszám
- aktív
- kell-e szervíz
Autót hoz létre.
Request:
- rendszám
- havi keret
Response:
- id
Autót módosít.
Request:
- rendszám
- havi keret
Autó törölt jelzése.
Bejegyzéseit listázza egy autónak.
Response:
- bejegyzésk:
- dátum
- km óra állása
- időpont
- helyszín
- mennyiség
- összeg
Bejegyzést hoz létre. Csak olyan hónapra lehet, aminek még nincs havi összesítője.
Request:
- km óra állása
- időpont
- helyszín
- mennyiség
- összeg
Response:
- id
Bejegyzés törölt jelzése. Csak akkor lehet, ha még nincs havi összesítője jóváhagyva.
Autónak a havi összesítőit kéri le.
Request:
- oldalszám
- oldalhossz
Response:
- összegzések:
- havi összes összeg
- havi keret
- megtett km-ek
- jóváhagyva
- befizetések:
- összeg
- befizetve
Jóváhagyja a havi összesítőt. Csak akkor lehet, ha még nem volt jóváhagyva vagy elutasítva.
Elutasítja a havi összesítőt. Csak akkor lehet, ha még nem volt jóváhagyva vagy elutasítva.
Autónak a befizetéseit kéri le.
- befizetések:
- összeg
- befizetve
Jóváhagyja a befizetés teljesülését. Csak akkor lehet, ha még nem volt jóváhagyva.
Az autó szervízfeltételeit mutatja.
Response:
- Feltételek:
- id
- típus
- típusnak megfelelő adatok
Új idő alapú szervízfeltételt hoz létre.
Request:
- időintervallum
Response:
- type
- id
Új km alapú szervízfeltételt hoz létre.
Request:
- km
Response:
- type
- id
Töröl egy szervízfeltételt.
Lekéri egy autó szervízelési időpontjait.
Request:
- oldalszám
- oldalhossz
Response:
- szervízidőpontok:
- id
- km óra állás
- időpont
- szervíz típusa
Létrehoz egy szervízalkalmat.
Request:
- km óra állás
- időpont
- szervíz típusa
Response:
- id
Töröltre állít egy szervízalkalmat.
A service réteget CQRS segítségével tervezem megvalósítani. Minden service hívás a Dto-k alapján készült ViewModelleket kapják meg, valamint a lekérdező felhasználó azonosítóját. Minden CQRS híváshoz tartozik egy függvény a BLL rétegben, amit a keretrendszer fog meghívni automatikusan.
A servicek fogják leképezni az információkat a viewmodellek között az adatbázis műveletekre. Feladatuk a hozzáférés szabályozása, valamint az üzleti szabályok betartatása. Ezeket fentebb a végpontoknál részleteztem.
A servicek a model rétegbe létrező aggregate rootokat fogják használni. Ez jól látszik az Adatbázis struktúrán
A /flotta/id kezdetű végpontokat csak akkor hívhatja, ha flottakezelője az adott flottának.
A felületek többnyire egyszerű listázó felületek. Ezeket egyszerű drótvázakkal szemlétetem. Link elérhető itt.
A létrehozó felületen minden adatot meg kell adni, ami szükséges.