fi-ksi / web-frontend

Frontend for web written in Embej.JS
https://ksi.fi.muni.cz/
MIT License
2 stars 2 forks source link

Hodnocení jednotlivých úloh #302

Closed BorysekOndrej closed 5 years ago

BorysekOndrej commented 7 years ago

Návrh z porady: Řešitelé by mohli hodnotit jednotlivé úlohy, které vypracovávají. Třeba jednou až pěti hvězdičkami.

Osobně bych asi radši umožnil hodnocení pouze lidem, kteří odevzdali úlohu, nelimitoval bych to však na ty, kteří ji mají správně.

horacekj commented 7 years ago

Poslední domluva s @Krejdom a dalšími byla "něco vyskovacího", co se zobrazí po úspěšném odevzdání úlohy. Chceme, aby řešitelé hodnotili náročnost až po té, co úlohu vyřeší. Hvězdíček může být víc kategorií, např.:

horacekj commented 7 years ago

Počty lidí, kteří úlohy odevzdali, ale nevyřešili, umím vytáhnout z databáze, tam mi hvězdičky nepomohou, spíš by mi pomohlo nějaké textové pole "na čem jste se zasekli".

BorysekOndrej commented 6 years ago

Analýza feedbacku od řešitelů (návrh)

Hodnocené oblasti (dále označováno jako kategorie)

Tohle by chtělo lépe specifikovat a možná to nebudeme vědět už hned na začátku a budeme chtít měnit v průběhu. Takže radši psát obecně.

Hodnocení úlohy nebo modulu

Povinné vyplňovat?

Jak zobrazovat řešitelům?

Původní návrh byl něco vyskakovacího, ale to je docela agresivní. Jsem spíš pro to, aby se možnost feedbacku objevovala na stejném místě, jako je aktuálně tlačítko přejít na další úlohu.

Pokud nízké hodnocení v některé z kategorií, vyjet boxík textu žádajícího o vysvětlení do běžného, vždy zobrazovaného, komentářového boxu.

Jak zobrazovat orgům?

Neporovnávat automaticky hodnocení s dalšími úlohami (třeba percentily). To by mohlo být depresivní. Ukázat souhrn:

Následně výpis všech vyplněných textových feedbacků - u každého zobrazit i příslušné hodnocení od řešitele

Potřebná API:

model feedback (for front-end)

getUserFeedbackOnTask(userID, taskID)

returns JSON of single feedback according to the model

setUserFeedbackOnTask(userID, taskID)

updates DB from JSON request containing single feedback according to the model

getFeedbackOnTask(taskID)

return a JSON containing:

horacekj commented 6 years ago

Já bych byl to klidně zobrazoval jako vyskakovací okno a dal možnost to vyskakování vypnout.

horacekj commented 6 years ago

jak dobře je vysvětlená látka? jak je srozumitelné zadání?

Tyto dvě otázky mi přijdou dost podobné, sloučil bych do jak dobře je vysvětlená látka?. Podle mě to bohatě stačí.

horacekj commented 6 years ago

Za mě je tu velká otázka, jestli chceme umožnit různé otázky u různých úloh. Já moc nevidím důvod, proč to dělat. Je nějaký? Osobně bych zafixoval otázky a hardcodoval je do frontendu, backendu i databáze:

Navíc bych pro textové komentáře nechal jen jedno pole, nevidím moc důvod mít ke každému hodnocení speciální textové pole. Těch textových komentářů bude tak málo, že nebude problém je číst po jednom.

A místo zábavná bych dal zajímavá. Já vím, že je to abstraktní, ale mně stačí subjektivní pocit řešitelů, na ten cílím. Ať si v tom každý najde co chce

explained: int 0-5 
interesting : int 0-5
difficult: int 0-5
comment: Text
BorysekOndrej commented 6 years ago

jak dobře je vysvětlená látka? jak je srozumitelné zadání?

Tyto dvě otázky mi přijdou dost podobné, sloučil bych do jak dobře je vysvětlená látka?. Podle mě to bohatě stačí.

Rozdíl mezi nimi je, zda se týkají teorie nebo úlohy. Myšleno:


Za mě je tu velká otázka, jestli chceme umožnit různé otázky u různých úloh. Já moc nevidím důvod, proč to dělat. Je nějaký? Osobně bych zafixoval otázky a hardcodoval je do frontendu, backendu i databáze:

Tak jsem to nemyslel. Myslel jsem to tak, že možná v průběhu zjistíme, že se ptáme na špatné věci a budeme to chtít změnit.


Navíc bych pro textové komentáře nechal jen jedno pole, nevidím moc důvod mít ke každému hodnocení speciální textové pole. Těch textových komentářů bude tak málo, že nebude problém je číst po jednom.

Souhlasím, i v původním návrhu jsem to zamýšlel jako jedno společné okno pro komentáře (viz. "žádajícího o vysvětlení do běžného, vždy zobrazovaného, komentářového boxu.")


A místo zábavná bych dal zajímavá. Já vím, že je to abstraktní, ale mně stačí subjektivní pocit řešitelů, na ten cílím. Ať si v tom každý najde co chce

Jo, to zní líp.


Pokud by se nespojovaly "explained" a "understandable", tak máme 4 různé kategorie hodnocené hvězdičkami. To už by nám nikdo nevyplňoval. Něco asi potřeba vyškrtnout je. @GiraffeReversed mě přesvědčuje, že nejvíc postradatelné je "understandable". Asi s tím taky souhlasím, ale rád bych nechal otevřená vrátka případným vylepšením. Osobně bych tedy byl proto, to napsat obecně. Na straně frontendu by to neměl být problém, na straně DB si myslím, že taky ne.


Uvědomil jsem si, že pro napsání obecně chybí jeden atribut v modelu single category a to atribut categoryOrder, který bu určoval pořadí zobrazení otázek řešitelům. Přidávám do analýzy.

horacekj commented 6 years ago

jak dobře je vysvětlená látka? jak je srozumitelné zadání?

Tyto dvě otázky mi přijdou dost podobné, sloučil bych do jak dobře je vysvětlená látka?. Podle mě to bohatě stačí.

Rozdíl mezi nimi je, zda se týkají teorie nebo úlohy. Myšleno:

  • jak dobře je vysvětlena teorie
  • jak je srozumitelné zadání úlohy

Rozdíl vidím, ale myslím, že ho řešitelé neuvidí. Pořád si stojím za tím sloučit do jedné otázky. Ať je to rychle vyplněné.

Tak jsem to nemyslel. Myslel jsem to tak, že možná v průběhu zjistíme, že se ptáme na špatné věci a budeme to chtít změnit.

Až to zjistíme, tak to přehardcodujeme. Fakt nevidím důvod to psát obecně. Zbytečně si tím všichni komplikujeme život. Když to budeš psát konkrétně, můžeš například jednoduše odlišit hvězdičky a jiné škály (např. vhodnost pro explained vs difficult). Jak sám píšeš, když to není pro to mít u různých úloh víc škál, obecné řešení nemá smysl. Radši to teď vymysleme dobře a bude to navždy. Až se budou chtít přidávat další pole, klidně ti přidám sloupečky do databáze a ty si na frontendu zobrazuj ty pole, které se ti líbí. Snadné a jenoduché.

BorysekOndrej commented 6 years ago

ok, tak ty otázky sjednoťme. 👍


Až to zjistíme, tak to přehardcodujeme. Fakt nevidím důvod to psát obecně.

Nevím, proč se tak bráníš obecnému řešení. Co jsem se zamýšlel nad implementací backendu a DB, tak by ji to nemělo nějak zásadně komplikovat. Pokud ale preferuješ dát to tam napevno, můžeme. V nejbližší době to snad měnit nebudeme muset a až budeme, tak to nějak vyřešíme.

horacekj commented 6 years ago

Přijde mi několikanásobně jednodušší mít prostě 4 sloupečky v databázi na 4 otázky, než nějaký "seznam otázek", kde si u každé musím pamatovat její pořadí, text a jestli je typu "hvězdička/textové pole/číslo". Nemyslíš?

BorysekOndrej commented 6 years ago

Jako, už mi přijde celkem jedno, zda jsou dvě tabulky:

Nebo jen jedna tabulka s více sloupci. Množství kódu by to nemělo moc zvýšit a je to výrazně čistější co se API týče. Ale klidně můžeme hardcodit.

horacekj commented 6 years ago

Mně zase přijde, že nad těmi poli s odpověďmi potenciálně chceš dělat aritmetické operace, které je výhodné dělat přímo v databázi, tedy nemít content, ale konkrétní sloupce. Představ si, že chceš na konci ročníku udělat nějakou komplikovanější statistiku. Prostě jen položíš SQL dotaz a máš to. Kdyby bylo všechno uložené v content, musíš psát nějaký skript...

Už vidím tu situaci na závěrečné schůzi, kdy se nás někdo zeptá, jaká úloha měla největší poměr těžká vs. zábavná... SQL dotazem tohle umíš odpovědět za 5 minut přímo na schůzi.

A také se ti to bude na frontendu snáze programovat, můžeš udělat UI na konkrétní pevné prvky. Navíc nemusím nějak parsovat content. Udělám to tedy hardcodovaně, ano?

TL;DR: preferuji mít data v databázi snadno dostupná

BorysekOndrej commented 6 years ago

vypadl mi internet, pisu z mobilu Skript na parsovani možná třeba bude, ale stejně by to nebyl tak jednoduchý SQL dotaz, jak si ho představujes. Třeba potřebujes odfiltrovat orgy.

Návrh: napisu to cele já. Backend i frontend

On Sun, Aug 12, 2018, 15:42 Jan Horacek notifications@github.com wrote:

Mně zase přijde, že nad těmi poli s odpověďmi potenciálně chceš dělat aritmetické operace, které je výhodné dělat přímo v databázi, tedy nemít content, ale konkrétní sloupce. Představ si, že chceš na konci ročníku udělat nějakou komplikovanější statistiku. Prostě jen položíš SQL dotaz a máš to. Kdyby bylo všechno uložené v content, musíš psát nějaký skript...

Už vidím tu situaci na schůzi, kdy se nás někdo zeptá, jaká úloha měla největší poměr těžká vs. zábavná... SQL dotazem tohle umíš odpovědět za 5 minut přímo na schůzi.

A také se ti to bude na frontendu snáze programovat, můžeš udělat UI na konkrétní pevné prvky. Navíc nemusím nějak parsovat content. Udělám to tedy hardcodovaně, ano?

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/fi-ksi/web-frontend/issues/302#issuecomment-412343761, or mute the thread https://github.com/notifications/unsubscribe-auth/AGo1JXwKvPJI94MAfWSMrof4INCCSKTNks5uQDDGgaJpZM4PXiI8 .

horacekj commented 6 years ago

Můžu se zeptat, proč to chceš obecně? Jaké to má výhody? Pořád nevidím důvod, proč to dělat složitější než je třeba.

BorysekOndrej commented 6 years ago

Nevěřím, ze na první pokus trefime správně, co chceme sbírat za data.

Taky di nechci uzavřít možnost sbírat víc věci, například pro Seminář adaptabilbiho učení.

On Sun, Aug 12, 2018, 15:55 Jan Horacek notifications@github.com wrote:

Můžu se zeptat, proč to chceš obecně? Jaké to má výhody? Pořád nevidím důvod, proč to dělat složitější než je třeba.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/fi-ksi/web-frontend/issues/302#issuecomment-412344514, or mute the thread https://github.com/notifications/unsubscribe-auth/AGo1JUyz9qG4y1eU3ymzn0XeJcJCvMtGks5uQDO4gaJpZM4PXiI8 .

horacekj commented 6 years ago

Ok, budiž tedy. Jdu to naprogramovat.

BorysekOndrej commented 6 years ago

Díky, cením si toho, že si mi vyšel vstříc.

On Sun, 12 Aug 2018 at 16:14, Jan Horacek notifications@github.com wrote:

Ok, budiž tedy. Jdu to naprogramovat.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/fi-ksi/web-frontend/issues/302#issuecomment-412345730, or mute the thread https://github.com/notifications/unsubscribe-auth/AGo1JaZX9_fy9oCKi_WL8VQGHn2LE3bSks5uQDgrgaJpZM4PXiI8 .

horacekj commented 6 years ago

Ty kategorie mám zatím v plánu hardcodovat na backendu, až budeme chtít dělat nějaké skopičiny (speciální otázky jen pro 0. vlnu, speciální otázky jen pro některé úlohy so tvého semináře...) budeme to řešit (třeba vyrobíme tabulku). Až přibudou další otázky, stávající stuktura se tím nerozbije a to je podle mě důležité.

horacekj commented 6 years ago

(v dtabázi bude content)

horacekj commented 6 years ago

Navrhuji zrušit order v kategorii. Jedná se o uspořádaný seznam, pořadí není třeba. Jak si představuješ, že se ze serveru dozvíš kategorie, když uživatel otevře feedback pole? Mám pro to připravit další endpoint?

BorysekOndrej commented 6 years ago

Moje původní myšlenka byla, že by getUserFeedbackOnTask endpoint vracel "JSON of single feedback according to the model" a tedy userAnswer pro každou z kategorí by byl NULL, nebo třeba prázdný.

horacekj commented 6 years ago

Ok.

horacekj commented 6 years ago

Submitování feedbacku implementováno, prohlížení ze strany orgů bych rád ještě rozmyslel, nejsem si jistý, jestli má cenu posílat na frontend tak jemná data (pro každého řešitele).

Endpointy:

Pro všechny požadavky je třeba být přihlášen.

Nasazeno v testovacím provozu na kyzikosu, koukni na formát dat, jestli ti vyhovuje.

BorysekOndrej commented 6 years ago

Implementace v Emberu je naprosto šílená. Dělám na tom už výrazně přes 10 hodin a stále bojuji s náhodnými nedokumentovanými chováními Emberu. Zobrazování už jsem víceméně rozchodil, ale posílání zpět na server asi radši napíšu v jQuery.

Ember má nějaké požadavky na formát API, které tvé naprosto rozumně designované API nesplňuje. Prozatím používám reverse proxy, abych si ten formát upravoval, časem se nějak dohodneme.

f:\Github\ksi\web-frontend>mitmdump -p 3002 --mode reverse:https://kyzikos.fi.muni.cz:3000 --replace /"~s ~u tasks"/\"details\":/\"feedbacks\":132,\"details\": --replace /"~s ~u feedbacks"/taskId/id  --replace /"~s ~u feedbacks"/type/testType

V GET feedbacks chybí defaultní userAnswer, už jsem ale přišel na to, jak se bez něj obejít. A type je něco explicitního v tom, co Ember čeká v API.

Oficiálně vzdávám jakékoliv pokusy odeslat to zpět pomocí Emberu, na to už vážně nemám nervy. jQuery to bude.

BorysekOndrej commented 5 years ago

Od 22.9.2018 mohou řešitelé snadněji upravovat hodnocení hvězdiček, před tím se spíše jednalo o první zaznačený názor. Textových hodnocení a slideru se to nijak nedotýká.

horacekj commented 5 years ago

Hotovo.