Финална имплементација на случаи на употреба
Додатни случаи на употреба опфатени во финалната верзија:
ID | Use Case |
7 | Најава на корисник со Google профил преку OAuth2 |
8 | Нотификации за измена на цена и продажба / купување на акција |
9 | Експорт / импорт на податоци |
ИД: 7 - Најава на корисник со Google профил преку OAuth2
Корисникот сака да се логира со Google налог наместо да внесува username и password. Ако Google налогот постои, корисникот се логира. Ако Google налогот не е поврзан со internal account, корисникот треба да го поврзе.
Компонентата GoogleLogin од @react-oauth/google се користи. На onSuccess, се повикува handleGoogleLogin која праќа credential token до backend.
Ако backend врати 409, се чува pendingToken и се отвора modal за поврзување со internal account.
Backend прима credential од frontend, проверува дали корисникот постои.
case A: email не е пронајден - се креира корисник, се генерира токен.
case B: email постои но само со интерен акаунт - backend враќа 409 и pending token
case C: Корисникот постои со google акаунт, се креира JWT и се враќа на frontend.
Кај pendingToken токените се валидни само за кратко време (expiresAt), поради сигурност.
ИД: 8 - Нотификации за измена на цена на акција
Корисникот има достапен Watchlist, прикажува листа на акции кои се следат, Има Trash icon за бришење на акција, може да додава нова акција (Price Above / Price Below).
Frontend праќа GET request до /api/watchlist со Authorization header (JWT), POST request до /api/watchlist за додавање нов entry, DELETE request до /api/watchlist/{id} за бришење.
Во backend, GET /api/watchlist-враќа листа на акции за тековниот корисник. POST /api/watchlist- додава нов WatchlistEntry, DELETE /api/watchlist-брише entry.
Секој 60 секунди се проверува дали акциите се над/под поставените граници.
Mail се праќа со истата логика и кога админ/брокер, ќе одобри/одбие tradeRequest.
ИД: 7 - Експорт / импорт на податоци
Корисникот сака да ги управува своите финансиски трансакции со можност за import на CSV фајлови и export на веќе постоечките трансакции.
Кога ќе се кликне на export, се прави GET request до backend endpoint /api/transactions/export. Фајлот се симнува автоматски на корисникот.
/api/transactions/export генерира CSV од базата и го враќа.
Endpoint /api/transactions/import прима CSV фајл (@RequestPart("file") MultipartFile file) и ги парсира редовите. При import на трансакции се запишува во базата како EXTERNAL, поради сигурносни причини.
Attachments (22)
- loginGoogle.png (32.1 KB ) - added by 3 weeks ago.
- modal.png (55.0 KB ) - added by 3 weeks ago.
- frontendGoogle1.png (111.7 KB ) - added by 3 weeks ago.
- frontendGoogle2.png (111.1 KB ) - added by 3 weeks ago.
- backendLogic1.png (112.4 KB ) - added by 3 weeks ago.
- backendLogic2.png (127.4 KB ) - added by 3 weeks ago.
- pending1.png (136.1 KB ) - added by 3 weeks ago.
- pending2.png (43.5 KB ) - added by 3 weeks ago.
- watchlistFrontend.png (97.1 KB ) - added by 3 weeks ago.
- watchlistFrontend2.png (100.3 KB ) - added by 3 weeks ago.
- watchlistFrontend3.png (40.5 KB ) - added by 3 weeks ago.
- watchlistFrontend4.png (24.3 KB ) - added by 3 weeks ago.
- reactWatchlist1.png (111.2 KB ) - added by 3 weeks ago.
- reactWatchlist2.png (106.9 KB ) - added by 3 weeks ago.
- backendWatch1.png (117.1 KB ) - added by 3 weeks ago.
- mails.png (127.1 KB ) - added by 3 weeks ago.
- tradeReqMail.png (112.9 KB ) - added by 3 weeks ago.
- transactions.png (35.1 KB ) - added by 3 weeks ago.
- exportFrontend.png (84.2 KB ) - added by 3 weeks ago.
- importFrontend.png (87.9 KB ) - added by 3 weeks ago.
- exportBackend.png (80.3 KB ) - added by 3 weeks ago.
- importBackend.png (113.9 KB ) - added by 3 weeks ago.
Download all attachments as: .zip