Systém zámluv pokojů
Tento dokument vznikl jako vnější popis fungování systému zámluv pokojů a principů, které za ním stojí. Systém se používá již čtyři roky na koleji 17. listopadu, v různých letech se pak přidávaly i další koleje. V roce 2016 se v našem systému rezervovaly pokoje v kolejích 17. listopadu, Kajetánka, Na Větrníku a Hvězda.
Axiomy
Celý systém vychází z několika jenoduchých axiomů, na které pak navazuje konkrétní implementace. Tyto axiomy jsou:
- Minimalizace počtu stěhování ("když někde bydlíš, tak tam bydli").
- Možnost vybrat si spolubydlicí.
- Stejné podmínky pro všechny.
Systém kol
Zámluvy probíhají v několika kolech, které jsou rozděleny tak, aby uspokojily požadavky axiomů.
1. kolo je určeno pro ty ubytované, kteří bydlí na koleji během letních prázdnin. V tomto kole si mohou zarezervovat jen a pouze ten pokoj, na kterém bydlí k rozhodnému datu (obvykle 1. srpna). Abychom minimalizovali počet opomenutí a nucených stěhování, automaticky rezevujeme všem ubytovaným, kteří bydlí přes prázdniny, pokoj na kterém bydlí. První kolo tedy slouží především k ověření správnosti dat a případnému zrušení rezervace na svůj pokoj v případě, že v něm ubytovaný již dále nehodlá zůstávat.
2. kolo je určeno pro ty, kteří bydleli na koleji během školního roku. V tomto kole si mohou rezervovat jen a pouze ten pokoj, na kterém bydleli k rozhodnému datu (obvykle 1. června), pokud není tento pokoj již obsazen z prvního kola.
3. kolo je speciální. V průběhu tohoto kola si mohou ti, kteří zarezervovali pokoj v prvním nebo druhém kole, přitáhnout k sobě na pokoj nebo buňku ty, se kterými chtějí bydlet. K vyjádření tohoto zájmu o společné bydlení slouží aliance (viz níže).
4. kolo je volným výběrem. V tomto kole může kdokoliv zarezervovat kterýkoliv pokoj, který je ještě volný. Na začátku tohoto kola dochází k největšímu náporu na systém, je potřeba s tím počítat a ideálně naplánovat začátek 4. kola pro různé koleje na různá data (nebo alespoň časy).
Poznámka: Na některých kolejích (např. na Hvězdě) preferují prohození 1. a 2. kola. Náš systém toto bez problému umožňuje, ale na 17. listopadu máme výše zmíněné pořadí, kvůli uspokojení 1. axiomu.
Aliance
Aliance jsou způsobem, jak může několik osob zarezerovat ubytování společně. Po založení aliance může kterýkoliv její člen nastěhovat celou alianci na pokoj nebo buňku jediným kliknutím.
Náš systém, původně navržený pouze pro 17. listopad, v současnosti neumožňuje aliance mezi osobami s různým typem ubytování (např. mezi jednolůžkovými a dvoulůžkovými pokoji). To vytváří problémy na koleji Kajetánka, kde existují buňky, které kombinují různé typy ubytování. Bylo by dobré s tím při vývoji nového systému počítat.
Profil uživatele
V profilu uživatele lze nastavit např. popis, který se zobrazí ostatním, což může pomoci v rozhodování při výběru spolubydlícího. Bylo by vhodné, aby nový systém umožňoval posílání zpráv mezi uživateli (aniž by přitom odhalil jejich soukromé e-mailové adresy). V profilu se také nachází důležité nastavení, zda je osoba ochotna bydlet na pokoji s osobami opačného pohlaví. Možnost omezit pohlaví osob na celé buňce neumožňujeme, protože by mohla vést k deadlocku.
Administrace
Administrační práce je v našem systému umožněna díky tzv. převtělování. Administrátor může vyhledat libovolného uživatele a jedním klikem se do něj převtělit. V tu chvíli získá jeho identitu, může jej ovšem nastěhovat na libovolný pokoj (pro Administrátory platí celou dobu pouze 4. kolo) – to je využíváno pro řešení nestandardních situací. V logu lze ovšem dohledat záznam o převtělení a je jasně odlišitelné, které akce provedl uživatel sám a které za něj vykonal převtělený administrátor.
Přidávání nových uživatelů
Přidávání nových uživatelů probíhá automaticky, jakmile o nich dostaneme informaci od Mefista (řádově desítky minut až hodiny od vytvoření rezervace v REHOSu). Ve chvíli, kdy uživatele naimportujeme, zašleme mu informační e-mail o zámluvách (obsah se liší mezi kolejemi).
Osoby, které si platí celý dvoulůžkový pokoj
Na kolejích existují osoby, které si platí i druhé lůžko na dvoulůžkovém pokoji, aby na něm mohli bydlet sami. Tyto osoby řešime tak, že jim přidáme do aliance virtuálního uživatele, který se stěhuje s nimi a blokuje druhé lůžko na dotčeném pokoji.