Diagrammes de séquence - TitusVM/stonksmanager GitHub Wiki
Diagramme 1: l'interaction de l'utilisateur avec le programme en début d'exécution
sequenceDiagram
participant Utilisateur
participant Programme
participant Données
loop Until correct
Utilisateur ->> Programme : Connexion
activate Programme
alt Wrong Password
Programme ->> Utilisateur : ERROR, wrong Password
else Correct Password
Programme ->> Utilisateur : OK
end
end
Programme ->> Utilisateur : Demande d'informations (bancaires)
Utilisateur ->> Programme : Charge les informations
Programme ->> Données : Requête des Données
activate Données
Données ->> Programme : Réponse avec les informations de la période donnée
deactivate Données
Programme ->> Utilisateur : Affichage des données sous formes variées
deactivate Programme
Lors de la requête du programme vers la partie Données, le programme envoie un json
qui incorpore une partie spécifications. Cette-dernière permet de définir quel sorte de données le programme nécessite.
Un exemple serait:
{
"json_type": "request",
"specifications": [
"period_start": "01-10-2021",
"period_end": "31-10-2021",
"account_holder": "Stephen Bills",
"holder_adress": "BahnhofStr. 2, 8001, Zürich",
"account_number": "12317469420",
"account_tag": "Debit",
"card_number": "4523745298603256",
"card_tag": "Visa"
]
}
Cette requête peut être générée par le programme (en début d'execution par exemple) comme par l'utilisateur (nécessitant un extrait de compte sur une période précise).
Diagramme 2: l'interaction de récupération des données du Backend
sequenceDiagram
participant Programme
participant Cache
participant Banque
loop
Programme ->> Cache: Requête json
activate Cache
Cache->> Banque : Requête selon spécifications json
activate Banque
Banque ->> Cache: Réponse de la banque
Cache->> Programme : Retour avec les informations standardisés
deactivate Cache
end
La réponse de la banque n'est pas standardisée - on peut attendre un json
, un csv
ou autre et les requêtes diffèrent aussi. C'est pour cela qu'il est nécessaire de faire un cache qui peut avoir des configurations différentes en fonction des réponses des banques. Pour notre projet, il sera question d'une réponse qui se présente sous la forme suivante:
{
"json_type": "reply",
"statement": [
{
"issued_on": "01-11-2021",
"period_start": "01-10-2021",
"period_end": "31-10-2021",
"account_holder": "Stephen Bills",
"holder_adress": "BahnhofStr. 2, 8001, Zürich",
"account_number": "12317469420",
"account_tag": "Debit",
"card_number": "4523745298603256",
"card_tag": "Visa"
},
{
"transactions": [
{
"date": "Friday, 1 October 2021 12:28:47",
"type": "payment",
"beneficiary": "COOP PESEUX, RUE DES UTTINS 1, 2034 PESEUX",
"amount": "17,23",
"currency": "CHF"
},
{
"date": "Friday, 1 October 2021 17:43:12",
"type": "payment",
"beneficiary": "MEDIAMARKT MARIN, RUE DE LA FLEUR-DE-LYS 26, 2074 LA TÈNE",
"amount": "1486.89",
"currency": "CHF"
},
{
"date": "Saturday, 2 October 2021 06:52:01",
"type": "credit",
"creditor": "CONCORDIA NEUCHÂTEL, RUE DE L'EPERVIER 7, 2053 CERNIER",
"amount": "65.74",
"currency": "CHF"
}
]
}
]
}
Il sera donc nécessaire de lire ces données dans le cache pour ensuite retourner des transactions ou des soldes standardisés au programme.
Diagramme récapitulatif
sequenceDiagram
participant Guest
participant Member
participant App
participant Cache
loop Until correct
Guest ->> App : Authenticate
activate App
alt Wrong Password
App ->> Guest : ERROR
else Correct Password
App ->> Member : OK
end
end
App ->> Member : Request information
loop Until valid information
Member ->> App : Upload bank statement
alt Error while reading file
App ->> Member : ERROR
else OK
App ->> Cache : Request readout of file
end
activate Cache
end
alt Error reading file in cache
Cache ->> App : ERROR
App ->> Member : ERROR
else OK
Cache ->> App : Return readout
deactivate Cache
end
App ->> Member : Show graphs and stuff
deactivate App