Meeskond:DamageReport
Meeskond
Liikmed:
- Tiina Pukk
- Lea Tuberik (projektijuht)
- Ülari Kalamees
Idee
DamageReport on WPF rakendus reisikulude jagamiseks.
Rakendus on mõeldud seltskonnale reisikaaslastele reisiga seotud kulude haldamiseks ja omavahel õiglaselt jagamiseks. Rakendus võimaldab sisestada erinevaid kulutüüpe (poes käigud, restorani arved jmt) ning mis kõige tähtsam, inimese, kes arve tasus. Süsteem jagab automaatselt arve kaaslaste vahel ning reisi lõpuks on täpne ülevaade, palju on reisi jooksul kokku kulutusi ning kes on need kinni maksnud.
Projekti analüüs
Probleemi püstitus ja töö eesmärgid
Probleem
Reisides seltskonnaga, kellega ei ole ühine rahaott, tuleb ette olukordi, kus on mõistlik tasuda arveid ühel inimesel ning hiljem jagada summa omavahel ära. Tihti tuleb selliseid olukordi reisi jooksul rohkesti ette ning reisi lõppedes võib olla raske ja kindlasti tüütu hakata uuesti meenutama, kes kellele ja palju võlgu on.
Projekti ülevaade
DamageReport on veebipõhine rakendus reisikulude arvestuse pidamiseks ning lõplikuks jagamiseks reisiseltskonna liikmete vahel. Reisi jaoks luuakse kasutajate grupp. Rakendus võimaldab sisestada põhiinfo reisi kohta: toimumise aeg, sihtkoht, transiitriigid, võimalik kulude valuuta. Igal kasutajal on võimalik lisada rakendusse enda poolt grupi huvides kantud kuluühikuid, märkides ära summa, kulu lühikirjelduse (restoran, takso, laevapiletid vm) ja milliste grupi liikmete vahel läheb kulu jagamisele (default kõigi). Kuluühiku sisestamise kuupäev on tuvastatav. Kuluühiku juurde on võimalik lisada foto kuludokumendist, näiteks mobiiliga pildistatud restoranitsekk vms. Rakendus liidab jooksvalt kulud kokku ning arvestab välja sisestatud summade jaotuse grupi liikmete vahel. Iga grupi liige näeb enda ja teiste n.ö jooksvat saldot.
Projekti raames loodava rakenduse funktsionaalsed eesmärgid jagunevad kaheks:
- Baasfunktsionaalsus (must have) - kursuse raames reaalselt töötava lahenduse näol implementeeritavad rakenduse omadused.
- Laiendatud funktsionaalsus (nice to have) - piisava ajaressursi olemasolul loodavad lisavõimalused.
Kasutajarollid
Rakenduse kasutamiseks peab isik end registreerimisvormi alusel süsteemi kasutajaks registreerima. Rakenduses eristatakse kolm erinevat rolli:
Osaleja
- rakendusse sisse logida ei saa
- omab administraatori poolt loodud profiili
Kasutaja
- võib rakendusse sisse logida
- võib muuta oma profiili andmeid
- võib luua ja salvestada uusi kulukandeid
- näeb ülevaadet reisikulude hetkeseisu kohta
- saab kustutada ja muuta enda sisestatud kuluridu
Administraator
- võib teha kõike, mida saab teha kasutaja
- võib lisada / muuta / kustutada valuutakursse
- võib genereerida kasutajale uue salasõna
Kulude jagamise algoritm
Iga inimese jaoks luuakse eraldi konto. Makstud summa järgi arvutatakse, kui palju iga inimene peab maksma (kulu/osalejate arv). Iga inimese jaoks registreeritakse see väärtus negatiivse kuluna. Järgmiseks salvestatakse kulu, mis iga inimene on arvet tasudes maksnud, lisades see summa tema kasutaja kontole. Selliselt on inimestel, kes on arveid rohkem tasunud (laenuandjad) on positiivne saldo, ja inimesed, kes ei ole arveid tasunud (laenuvõtjad), on negatiivsed saldod. Kui kõik kontod on nullid, on kõik võrdselt maksnud.
Kasutatavad andmebaaside tabelid
- Kasutajad - administraatori, kasutajate ja osalejate andmed
- Kululiigid - mis liiki kulu on: transport, majutus, söök, meelelahutus jne
- Kulukanded - kasutajate poolt lisatud kulukanded
- Logi - kes mida millal tegi
- Reisid - erinevad reisi-projektid
- Valuutakursid - administraatori poolt koostatav tabel erinevate valuutakursside haldamiseks
- (Kulutüübid - võimalik on valida isiklik kulu või grupi huvides tehtud kulu)
Must have funktsionaalsus
Uue reisi sisestamine
- Administraator peab saama algatada uut reisi-projekti.
Reisiprojekti loomisel peab saama määrata:
- reisi algus ja lõpp
- reisil osalejad
- reisi sihtkoht
- käibiv valuuta(d)
- teiste kasutajate õigused
Kasutajahaldus
- Administraatoril peab olema võimalus sisestada uusi kasutajaid või reisil osalejaid.
Uue kasutaja lisamisel saab sisestada järgmised andmed:
- email (kasutaja nimi)
- eesnimi
- perenimi
- parool
- isikukood
- pangakonto
- passi / ID kaardi number
- roll
Kohustuslikud väljad on email, eesnimi, parool, roll.
Kulukannete sisestus
- Kasutajal peab olema võimalus sisestada kulukandeid ning sinna juurde märkida:
- milliste inimeste vahel kulukanne jagamisele läheb (kas kõigi või valitud nimede)
- kulu hetk
- kulu kirjeldus
- kulu suurus
- kulu valuuta
- kulu liik (meelelahutus, transport, söömine, öömaja, ...)
- kes kulu maksis (üks või mitu inimest)
- palju maksis
- kulu valuuta
- (kulu tüüp (ühiskulu, erakulu, laen, ...))
Reisiülevaade
- Kasutajal peab olema võimalus igal hetkel näha ülevaadet reisikulude hetkeseisu kohta. Ülevaates peab kajastuma kõikide reisil osalejate kulude hetkeseis (kes on omadega plussis, kes on miinuses).
Lõppraport
- Lõppraport kuvab reisiülevaate ning arvutab välja, kes kellele palju maksma peab.
Logi
- Süsteem peab pidama logi, kes millal, mida tegi.
Nice to have
Kuludokumendi üleslaadimine
- Kasutajal võiks olla võimalus kuludokument ka üles laadida, kas pildi, pdf või muu faili näol.
Off-line kasutusvõimalus
- Veebijuurdepääsu puudumisel saab iga kasutaja oma kulusid ikka sisestada ja esimesel veebikontaktil arvestatakse vahepeal sisestatud kulud juurde.
Filtreeritav reisiülevaade
- Kasutajal võiks olla võimalus reisiülevaadet filtreerida vastavalt huvipakkuvale kulutüübile, kasutajale, valuutale või ajavahemikule.
Tööjaotus
- Tiina - front end
- Lea - andmebaas
- Ülari - back end
Ohukohad
Loome selle veebilahendusena, mis tähendab, et eeldame reisiseltskonnal veebiühenduse olemasolu. See võib esialgu kasutust piirata. Probleemseks võib osutuda erinevate valuutade ümberarvestamiseks optimaalse lahenduse leidmine.
Logi
22.10.2014 Arutlus idee üle
24.10.2014 Wiki loomine
25.10.2014 TFS ülespanek (kutse õppejõule saadetud)
1.11.2014 Tehtud analüüs meeskonnale E-rent
13.11.2014 Meeskonna koosolek - andmebaasi tabelite läbi vaatamine, vaadete arutamine
23.11.2014 Meeskonna skype koosolek - vaadete kommentaaride läbivaatamine ja muudatuste tegemine
Meie live blogi on koondnud Skype grupivestluseks ja kahetsusväärselt ei kajastu need siin korrektselt. Teen mõned tagantjärgi sisestused
05.12.2014 Kohtusime, et rakenduse ülesehitus kokku leppida. Vaated ja funktsionaalsus (algsega võrreldes veidi kärbitud kujul) läksid lukku. Üheskoos katsetasime kuidas me Visual Studiot kasutama hakkame, kuidas versioonihaldus käima peaks jne. Ülari ütles kuulsa lause "siit edasi köki-möki". Lisaks jagasime ära töölõigud: Lea peale jäi teha reisi lisamisega seotud vaated ning kulude liikidega seonduv, Tiina peale jäi kasutajatega seotud vaated ning Ülari anus endale matemaatikat puudutavat. Tulime talle vastu.
29.12.2014-31.12.204 Ülari aheldas end kolmeks päevaks arvuti külge, et lahendada andmetabelite ja andmete töötlemise matemaatilis-loogilisi probleeme ning neid koodiks kirjutada. Lea oli testija rollis, sest VS-i ja tehnikat üldse me ei usalda. Mitu korda tunnis sai Lea zip faili ja Ülari tagasi kriitikarahe. Igaks õhtuks oli asi parem kui varem. Tiina vaatas hirmunult loengusalvestusi ja skype's toimuvat.
2.01.2015 Meeskonna koosolek - projekti ülevaade. Viidud sisse muudatused tulude jaotamise loogikas (transactions, transaction types), lisatud traveller tabel. Osad vaated puudu. Target - prototüübi kaitsmine 9.01.
7.01.2015 Ülari lammutas päeval viimaste põhiliste matemaatiliste küsimustega, mis olid seotud logi kokkupanemisega. Lea ja Tiina kohtusid õhtul rakenduse igakülgseks testimiseks ja koodi kommenteerimiseks. Kuigi kõik lingid ja nupud töötasid, siis nii mõneski kohas ilmnes vajadus andmeid rohkem kuvada ja ligipääsetavamaks teha. Põhifunksionaalsusest on puudu ainult matemaatika - kuidas reisi lõpus nõudeid-kohustusi jagada, et kõik nulli saaks.
8.01.2014 Istume jälle kolmekesi koolis. Ülari silub vigu, mis Lea ja Tiina eelmine õhtu leidsid. Lea ja Tiina alustavad retsensioonide kirjutamist.
9.01.2014 Prototüüp kommenteerimiseks üleva!