Closed BorysekOndrej closed 5 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ř.:
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".
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ě.
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.
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
returns JSON of single feedback according to the model
updates DB from JSON request containing single feedback according to the model
return a JSON containing:
Já bych byl to klidně zobrazoval jako vyskakovací okno a dal možnost to vyskakování vypnout.
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čí.
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
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.
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é.
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.
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íš?
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.
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á
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 .
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.
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 .
Ok, budiž tedy. Jdu to naprogramovat.
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 .
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é.
(v dtabázi bude content
)
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?
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ý.
Ok.
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:
/feedbacks/id
: podporuje GET, PUT, DELETE
Vrátí feedback k úloze id
, uživatel se nezadává, bere se automaticky z autorizace. PUT umí vytvořit nový nebo aktualizovat feedback, DELETE ho umí smazat./feedbacks
: podporuje POST
POST umí vytvořit nový feedback.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.
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.
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á.
Hotovo.
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ě.