-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Vertaisarviointi tehty 2.6.2025 klo 15.00.
Web-sovelluksen idea ja keskeiset toiminnot on kuvattu hyvin README:ssä. Sovellus toimii halutulla tavalla, mutta virhetilanteiden käsittelyssä, syötteiden tarkistuksessa ja visuaalisessa ilmeessä on vielä kehitettävää.
Välipalautus 2:n vaatimukset pääosin toteutuvat:
- Käyttäjä pystyy luomaan tunnuksen ja kirjautumaan sisään sovellukseen.
- Käyttäjä pystyy lisäämään, muokkaamaan ja poistamaan tietokohteita.
- Käyttäjä näkee sovellukseen lisätyt tietokohteet.
- Käyttäjä pystyy etsimään tietokohteita hakusanalla tai muulla perusteella.
- README.md-tiedoston tulee kuvata, mikä on sovelluksen nykyinen tilanne.
Ehdottaisin lisäämään README-tiedostoon ohjeet web-sovelluksen käyttöönottoon sekä toteutetut ja toteuttamattomat ominaisuudet.
Web-sovellus täyttää myös välipalautus 3:n vaatimukset:
- Sovelluksessa on käyttäjäsivut, jotka näyttävät tilastoja ja käyttäjän lisäämät tietokohteet.
- Käyttäjä pystyy valitsemaan tietokohteelle yhden tai useamman luokittelun. Mahdolliset luokat ovat tietokannassa.
- Käyttäjä pystyy lähettämään toisen käyttäjän tietokohteeseen liittyen jotain lisätietoa, joka tulee näkyviin sovelluksessa.
Arvostelusivun yksityiskohtaisia vaatimuksia on vielä toteuttamatta:
[Kommentit hakasulkeissa]
Sovelluksen perusvaatimukset (7 p)
- Käyttäjä pystyy luomaan tunnuksen ja kirjautumaan sisään sovellukseen
- Käyttäjä pystyy lisäämään, muokkaamaan ja poistamaan tietokohteita
- Käyttäjä näkee sovellukseen lisätyt tietokohteet
- Käyttäjä pystyy etsimään tietokohteita hakusanalla tai muulla perusteella
- Käyttäjäsivu näyttää tilastoja ja käyttäjän lisäämät tietokohteet
- Käyttäjä pystyy valitsemaan tietokohteelle yhden tai useamman luokittelun
- Käyttäjä pystyy lisäämään tietokohteeseen toissijaisia tietokohteita
Tekniset perusvaatimukset (8 p)
- Sovellus toteutettu kurssimateriaalin mukaisesti
- Sovellus toteutettu Pythonilla käyttäen Flask-kirjastoa
- Sovellus käyttää SQLite-tietokantaa
- Kehitystyössä käytetty Gitiä ja GitHubia
- Sovelluksen käyttöliittymä muodostuu HTML-sivuista
- Sovelluksessa ei ole käytetty JavaScript-koodia
- Tietokantaa käytetään suoraan SQL-komennoilla (ei ORMia)
- Kirjaston flask lisäksi käytössä ei muita erikseen asennettavia kirjastoja
Toimivuus ja käytettävyys (15 p)
- Käyttäjän yleiskokemus sovelluksen toimivuudesta
- Käyttäjän yleiskokemus sovelluksen käytettävyydestä
- Käyttäjän lähettämässä tekstissä rivinvaihdot näkyvät selaimessa
- Kuvissa käytetty alt-attribuuttia (jos sovelluksessa kuvia)
- Lomakkeissa käytetty label-elementtiä
- CSS:n avulla toteutettu ulkoasu (itse tehty, ei CSS-kirjastoa)
Versionhallinta (10 p)
- Kehitystyön aikana on tehty commiteja säännöllisesti
- Commit-viestit on kirjoitettu englanniksi
- Commitit ovat hyviä kokonaisuuksia ja niissä on hyvät viestit
- Versionhallinnassa ei ole sinne kuulumattomia tiedostoja
- Tiedosto README.md antaa hyvän kuvan sovelluksesta [README:tä voisi vielä täydentää]
Ohjelmointityyli (15 p)
- Yleiskuva koodin laadusta (selkeys, luettavuus ja tyyli)
- Sisennyksen leveys on neljä välilyöntiä [html-sivuissa sisennys on kaksi välilyöntiä]
- Koodi on kirjoitettu englanniksi
- Muuttujien ja funktioiden nimet muotoa total_count (ei totalCount)
- Merkkijonoissa käytetty aina joko ' tai " [review.py-tiedostossa on käytetty '-merkkejä]
- Välit oikein =-merkin ympärillä
- Välit oikein ,-merkin ympärillä
- Ei koodia tyyliin if success return True else return False
- Jos funktio palauttaa arvon, tulee olla useita mahdollisia palautusarvoja
- Ei sulkeita if- ja while-rakenteiden ehtojen ympärillä
- Ei ehtoja tyyliin result == None ja result is None [app.py rivi 115: if review is None:]
Tietokanta-asiat (15 p)
- Taulut ja sarakkeet on nimetty englanniksi
- Taulut ja sarakkeet on nimetty hyvin
- Käytetty REFERENCES-määrettä, kun viittaus toiseen tauluun
- Käytetty UNIQUE-määrettä, kun tulee olla eri arvo joka rivillä
- Ei kyselyjä muotoa SELECT *
- Pitkät SQL-komennot jaettu usealle riville
- Kaikki tiedot haetaan yhdellä SQL-kyselyllä, jos järkevästi mahdollista
- Koodissa ei tehdä asioita, jotka voi mielekkäästi tehdä SQL:ssä
- Käytetty try/except SQL-komennon ympärillä vain aiheellisesti
Sovelluksen turvallisuus (20 p)
- Salasanat tallennetaan tietokantaan asianmukaisesti
- Käyttäjän oikeus nähdä sivun sisältö tarkastetaan
- Käyttäjän oikeus lähettää lomake tarkastetaan [create_review ja create_review ei tarkista, että kyseessä on oikea käyttäjä]
- Käyttäjän syötteet tarkastetaan ennen tietokantaan lisäämistä [tarkistetaan vain syötteen pituus, vuosilukua ei, syötteitä ei puhdisteta HTML/JS-koodista, mikä mahdollistaa XSS-hyökkäyksen]
- SQL-komennoissa käytetty parametreja
- Sivut muodostetaan sivupohjien kautta
- Lomakkeissa on estetty CSRF-aukko
Suuren tietomäärän käsittely (5 p)
- Sovellusta testattu suurella tietomäärällä ja raportoitu tulokset
- Sovelluksessa käytössä tietokohteiden sivutus
- Tietokantaan lisätty indeksi, joka nopeuttaa suuren tietomäärän käsittelyä
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels