Allicce / engeto-hackethon-team-3

0 stars 0 forks source link

[backend] prepare initial state for application #3

Open Allicce opened 1 week ago

Allicce commented 1 week ago
hanzbzz commented 1 week ago

Tak ja navrhuju tento stack

hanzbzz commented 5 days ago

Transakce id cislo uctu příjemce (null) cislo uctu odesílatel (null) castka datum kategorie (enum) clen rodiny (null) poznámka

GET /transactions parametry: from: int = timestamp vymezuji zacatek intervalu (default = null) to: int = timestamp vymezuje konec intervalu (default=null) vraci array transakci. Pokud je from null, bere se jako zacatek timestramp =0, pokud je to null, bere se timestamp.now() Example: [ {“id”:1, “from_account”: null, “to_account”:null, “amount”:500, “date”:424546456, “category”:”jidlo”, “member_id”:null, “desctiption” : “Nakup v lidlu”}]

POST /transactions vlozeni arraye transakci manuálne možno doplnit komu je transakce adresovana clen rodiny defaultně ALL Example : [{“amount”:500, “timestamp”:123352478, “category”:”jidlo”, “description”:”Nakup v lidlu”}]

POST /transactions/import vstup je jmeno banky a csv. vystup je array transakci - predripraveno pro request na POST / transactions Example: {“bank”:”csob”,”csv” : ‘’....”} return : [{“amount”:500, “timestamp”:123352478, “category”:”jidlo”, “description”:”Nakup v lidlu”}] MVP Import CSV jen pro jednu banku (upravené csv) CSV v očekávané struktuře výběr z roletky bank, ( funkční jen jedna) importní soubor z ostatních bank
možnost integrace na banky

PUT /transactions/{id} upravi transakci s id = {id}. (NEVIM jestli potrebujeme)

Prijmy / vydaje

nebude tabulka v databazi(vypocet bude z transactions) GET /income paramatry: from: timestamp od kdy chceme pocitat prijmy to : timestamp do kdy vrati prijmy, vydaje, a celkovy stav uctu. pokud budou specifikovany from/to prametry, tka upravi interval. defaultne vraci za cely cas. example: {‘income’:25000, ‘exapnses’:20000, ‘total’:5000}

Info o uctech cislo uctu nazev kategorie

tahle tabulka bude slouzit k tomu, abysme automaticky mohli rozpoznat kategorii/nazev transakce. Potom co uzivatel nahraje transakci, ktera bude obsahovat cislo uctu, tak ho ulozime do teto tabulky spolecne s nazvem a kategorii teto transakce. Kdyz priste nekdo uvede stejne cislo uctu, tak uz bude kategorie a popis teto transakce predvyplneno. Tohle bude fungovat interne v backandu, nebudou zadne verejne endpointy. MVP - jednou zadáš všichni již mají tuto kategorii, neměné

Clen rodiny

id rodiny (pokud budeme podporovat vice rodin) id clena rodiny jméno člena rodiny

GET /members vraci array jmen clenu rodiny example : [‘john’,’jane’,’julia’]

GET /members/{id} vraci detail o clenovi rodiny s {id}. Detail obsahuje jmeno, id, a seznam transakci tohoto clena example {‘id’:1,’name’:’johm’,’transactions’:[....]}

POST /members/ vytvori clena rodiny input: {‘name’:’julia’}

PUT /members/{id} upravi info o clenovy s {id}

Rozpocet

id rodiny byldeni jidlo … ( asi musime predem definovat ktere kategorie chceme podporovat) GET /budget vraci hodnoty, ktere uzivatel vyplnil example: {‘jidlo’:5000, ‘bydleni’:15000}

POST /budget ulozi hodnoty pro rozpocet v databazi example: {‘jidlo’:5000, ‘bydleni’:15000}

GET /budget/calculate parametry: interval (celé měsíce) členo domácnosti (null)

Jednoduse se podiva na to, jaky budget uzivatel nastavil a od toho odecte castky z transakci, a vrati uzivatelu vysledek (za dany mesic). Je moznost specifikovat ktery clen domacnosti nas zajima. To pak odegte od uzivatelova budgetu.

example: {‘jidlo’: -125, ‘bydleni’: 150}

GET /budget/predict Podiva se na uzivatelovi transakce za soucasny mesic, zprumeruje to a vrati to predpokladany stav na konci mesice example: {‘jidlo’: -125, ‘bydleni’: 150}

Cíl spoření

id nazev popis cilova castka

GET /goals vrati vsechny cile z database example: [{‘id’:1,’name’: ‘novy dum’, ‘description’ : ‘sporeni na novy dum’, ‘amount’: 1000000}]

POST /goals vytvori novy cil v databazi input: {’name’: ‘novy dum’, ‘description’ : ‘sporeni na novy dum’, ‘amount’: 1000000}

GET /goals/{id}/when parametry: additonal_savings Podiva se na uzivatelovi transakce (napr za poslednich 6 mesicu) a vrati timestamp, kdy uzivatel dosahne cilove castky. Pokud bude vyplnen parametr additional savings, tak vrati upraveny timestamp, kdyz uzivatel mesice usetri navic castku additional_savings

AI GET /reccomendations podiva se na transakce za posledni mesic a vrati tipy a rady. udela to AI