NWT document - adnanh/qa GitHub Wiki

Projektni dokument

Eksterni resursi i linkovi

Zahtjevi i specifikacija aplikacije po modulima

1. System module

  1. Tipovi korisnika u sistemu su: a. Gost korisnik b. Registrirani korisnik
  2. Privilegije registriranih korisnika u sistemu su: a. Standardni korisnik b. Administrator
  3. Baza podataka dolazi sa seedanim osnovnim administratorskim nalogom

2. Registration & login module

  1. Gost korisnik može odabrati registrirati se ili prijaviti se na sistem.
  2. Sistem omogućava registraciju gosta kao novog korisnika. Pri tome gost unosi sljedeće podatke: korisničko ime, email adresu i željeni password.
  3. Korisnička imena su jedinstvena u sistemu i duga minimalno 4 a maksimalno 16 znakova
  4. Korisničke šifre su duge minimalno 6 znakova (maksimalno 16) i čuvaju se hashirane (šifra+salt) kao MD5 hash
  5. Po uspješno obavljenoj registraciji sistem će novoregistriranom korisniku poslati email. Email će sadržavati dva linka. Prvi link je za potvrdu registracije i aktivaciju korisničkog naloga. Drugi link je za prijavu pogrešne registracije i brisanje kreiranog naloga.
  6. Posjećivanjem URL-a datog prvim linkom u emailu korisnički nalog se aktivira i korisnik se može prijaviti na sistem.
  7. Posjećivanjem URL-a datog drugim linkom u emailu korisnički nalog se briše sa sistema.
  8. Registrirani korisnik se prijavljuje na sistem upotrebom svog korisničkog imena i passworda
  9. U slučaju da zaboravi šifru, korisnik može resetovati password. Password se resetuje na način da se na zahtijev šalje email na korisnikovu email adresu. Email sadrži link klikom na kojeg korisnik potvrđuje da želi resetovati password. Tada će mu se omogućiti unos nove šifre i spašavanje ili discardovanje izmjena.
  10. Banovani korisnik ne može se prijaviti na sistem.
  11. Korisnik koji nije potvrdio svoju registraciju ne može se prijaviti na sistem.

3. User module

  1. Registrirani korisnik može koristiti funkcije uređivanja vlastitog profila kao i odjave sa sistema.
  2. Profil registriranog korisnika sadrži korisničko ime (neizmjenjivo), kontakt email (izmjenjiv), korisničku šifru (izmjenjiva), korisnički opisni tekst (izmjenjiv), postavku za javnu vidljivost emaila, renome te historiju korisničke aktivnosti (pitanja i odgovori, pohvale i pokude na pitanja i odgovore, prihvatanje odgovora), vrijeme posljednje prijave na sistem.
  3. Korisnički opisni tekstovi su dugi minimalno 2 a maksimalno 32 znaka
  4. Renome je cjelobrojna vrijednost koja je određena na osnovu doprinosa korisnika zajednici. Renome je funkcija starosti korisničkog računa, broja pitanja, broja odgovora, broja prihvaćenih odgovora i srazmjera pohvala i pokuda za odgovore. Renome se osvježava triput dnevno za sve korisnike.
  5. Korisnik u svakom trenutku može odustati od izmjene profila sve dok ne potvrdi izmjenu.
  6. Svi tipovi korisnika u sistemu mogu pregledati profil svakog registriranog korisnika.

4. Admin module

  1. Korisnik administrator ima pravo pristupa administratorskom dijelu sistema.
  2. Administratorski dio sistema omogućava pregled korisničkih naloga - njihovo izlistavanje, pretraživanje i filtriranje.
  3. Administratorski dio sistema omogućava uređivanje korisničkih naloga - izmjenu korisničkog opisnog teksta, korisničkog imena, banovanje i skidanje bana za korisnika, promoviranje korisnika u administratora i obratno.
  4. Standardni korisnici mogu biti banovani tj. može im biti uskraćen pristup korištenju funkcija za registrirane korisnike.
  5. Administrator ne može banovati drugog administratora.
  6. Administrator ne može smanjiti sam sebi privilegije.

5. Feed module

  1. Svi korisnici imaju pristup feedu na početnoj stranici koji izlistava najnovija, najznačajnija itd. pitanja (zavisno od vremena budemo implementirali različite filtere).

6. Q&A module

  1. Gost korisnik može koristiti funkciju čitanja pitanja i odgovora.
  2. Registrirani korisnik može koristiti funkcije postavljanja i čitanja pitanja, postavljanja i čitanja odgovora. Pitanje se sastoji od naslova, sadržaja pitanja i liste ključnih riječi. Korisnik ne može objaviti pitanje koje ne sadrži makar jedno od navedenog i barem 2 ključne riječi, maksimalno 10.
  3. Administrator može postaviti status pitanja, uređivati sadržaj tuđih pitanja i odgovora, obrisati pitanje, obrisati odgovor. Pitanje ima dva statusa: otvoreno i zatvoreno uz obrazloženje (postavlja i skida administrator)
  4. Za svako pitanje pohranjuju se podaci o: autoru, vremenu objave, broju pregleda stranice pitanja (ne jedinstveni), broju pohvala i broju pokuda, statusu.
  5. Naslov pitanja ima minimalnu dužinu od 10 a maksimalnu od 255 znakova.
  6. Sadržaji koje korisnici unose u sistem su tekstualni i maksimalna dužina im je 10.000 znakova. Pri tome sadržaji mogu biti obični tekst, LaTeX izrazi naznačeni posebnim tagovima, link tagovi, img tagovi i tagovi kojima je određen sadržaj koji je programski kôd (C,C++,C#,Java).
  7. Odgovor se sastoji od sadržaja odgovora.
  8. Registrirani korisnik može postaviti odgovor na bilo koje otvoreno pitanje.
  9. Za svaki odgovor bilježi se matično pitanje, autor, vrijeme objave, broj pohvala, broj pokuda i da li je odgovor odabran kao adekvatan od strane autora pitanja.
  10. Autor može uređivati svoje pitanje ili odgovor, i to na način da je moguće samo dodati novi sadržaj na kraj starog uz automatski dodani header koji naznačava izmjenu.
  11. Sistem bilježi autora i vrijeme posljednjeg uređivanja i javno ih prikazuje.
  12. Svaki registrirani korisnik može prijaviti pitanje ili odgovor adminstraciji.
  13. Prijava šalje privatnu poruku svim administratorima sa linkom na problematizirano pitanje ili odgovor (automatski) i obrazloženjem koje je priložio korisnik koji prijavljuje.
  14. Obrazloženje je maksimalno dugo 1000 znakova.

7. Search module

  1. Svi korisnici mogu koristiti funkciju pretraživanja baze pitanja.
  2. Pretraga se može obavljati po ključnim riječima, ili se može raditi fulltext pretraga po naslovima pitanja ili njihovom sadržaju.
  3. Sistem prikazuje rezultate pretrage od najrelevantnijih prema manje relevantnim (u smislu % preklapanja sa postavljenim upitom)
  4. Dodatni filteri za pretraživanje su: prikaz samo pitanja koja imaju prihvaćene odgovore, … ?

8. Voting module

  1. Registrirani korisnici mogu pohvaliti ili pokuditi tuđa pitanja i odgovore.
  2. Glas se može izmijeniti tako da se u potpunosti poništi ili promijeni u suprotno (npr. pohvala u pokudu).
  3. Autor pitanja može odabrati jedan ili više ponuđenih odgovora i postaviti im status kao "prihvaćeni".
  4. Status prihvaćenosti odgovora može se ukloniti po volji od strane autora pitanja.

9. Private messaging module

  1. Svi registrirani korisnici imaju mogućnost slanja i primanja privatnih poruka od pojedinačnih drugih korisnika.
  2. Privatna poruka sastoji se od naslova i sadržaja.
  3. Naslov i sadržaj su plaintext.
  4. Maksimalna dužina naslova je 255 znakova.
  5. Maksimalna dužina sadržaja je 5000 znakova.
  6. Svaki registrirani korisnik ima pristup vlastitom inboxu i outboxu.
  7. Pohranjuje se maksimalno do 50 primljenih i 50 poslanih poruka.
  8. Svaki korisnik može obrisati poruku ili više njih.
  9. Korisniku se signalizira kada primi novu poruku (provjerava se svakih 5 minuta)

Tehnološka arhitektura aplikacije

Tech Architecture

Tehnološki stack

Tech Stack

Arhitektura aplikacije

Application Architecture

Entity-Relationship dijagram

Please note! Rails polymorphic model slightly differs from the one shown below. However, this is more legible so I'll leave it be. ERD diagram

Specifikacija web servisa

Specifikacija