Software archive

isEDU

Pavel Bartoš

Studijní evidence více škol, studenti, lektoři, programy, předměty a sylaby. Centrální přihlášení a MySQL přes eLoader.

Documentation and check-in manual

Releases

  • 0.3.12 · 2026-09-17 · ZIP · JSON
  • 0.3.11 · 2026-09-17 · ZIP · JSON
Older versions (16)

README

# isEDU 0.1.0 Autor: PB · 13. 9. 2026 První provozní etapa studijního informačního systému pro více škol. Aplikace běží v eLoaderu, používá jeho společné knihovny `./lib/`, templates, přihlášení, MySQL spojení a centrální log. Dokumenty a testy patří do dalších samostatných aplikací. ## Instalace 1. Aktualizujte eLoader **1.12.0 nebo 1.13.0** na přiloženou **1.14.0**. Vydání zachovává nové funkce 1.13.0 (Composer, CentralLog a databázové profily) a doplňuje deklarativní `login.json` a informace pro SDK isEDU. 2. V eLoaderu otevřete **Nastavení → Databázová připojení**. Založte povolený profil MariaDB/MySQL s hostem, portem, uživatelem a heslem. U profilu vyplňte existující databázi a použijte **Testovat spojení**. Heslo spravuje výhradně eLoader. 3. V **Aplikace → ZIP** nahrajte `isedu-0.1.0.zip`, prohlédněte balíček a nainstalujte jej. Stejný ZIP lze publikovat jako projekt isEDU na eUpdate a instalovat z jeho odkazu. 4. V **Databázová připojení → Přidělení aplikacím** vyberte isEDU, typ MySQL, vytvořený profil a jméno databáze. 5. Otevřete isEDU jako superadmin. Zadejte název organizace a vytvořte tabulky. Vzniknou pouze tabulky `isedu_*` v přidělené MySQL. 6. V **Školy** založte své tři školy. Nejsou dodána smyšlená jména ani omezení počtu škol. 7. Volitelně spusťte **Import SQLite** podle postupu níže. Import se nespustí při instalaci, otevření aplikace, vložení souboru ani aktualizaci. 8. V eLoaderu ve správě aplikací povolte isEDU jako zdroj přihlášení. E-mailové SSO pro další aplikace povolujte samostatně podle požadované důvěry. Nastavte doručování PINů v eLoaderu. 9. Přidělte zaměstnancům role a lektorům programy, předměty nebo třídy. Účet bez takového přiřazení studenty neuvidí. ## První rozsah - Více škol v jedné organizaci; oddělené rozsahy oprávnění zaměstnanců. - Studentské a lektorské profily nad společnou evidencí osob a přihlašovacích účtů. - Více studií jedné osoby, vazba na konkrétní publikovanou verzi studijního plánu. - Programy, předměty, ECTS, EQF, zakončení, třídy a členství. - Verze studijních plánů: koncept lze upravovat, publikovaný plán je uzamčen. Kopie vytváří novou verzi. - Sylaby CZ/EN, cíle, výstupy, osnova, literatura, rozsah, historie verzí a publikování. - Seznamy, hledání, řazení, stránkování, formuláře, mobilní zobrazení. - Ruční import, centrální logy, instalace modulů a aktualizace z eUpdate i ZIPu. ## Přihlašování a stav účtu Kořenový **login.json** popisuje tabulky, sloupce a podmínky. MySQL čte eLoader; isEDU neimplementuje vlastní ověřování PINu nebo hesla. Přihlašovací identita má stabilní tvar `u:<id účtu>`. Lze hledat přihlašovacím jménem, e-mailem a původním ID; při nejednoznačném výsledku se přihlášení odmítne. Importované loginy mají tvar `s:<původní ID>` a `l:<původní ID>`. - Nový student: `pending`. Po ověření kontaktu PINem má přístup pouze k aktivaci. Stisknutím **Aktivovat můj účet** získá běžný přístup. - Aktivovaný student: `active`. Aktivní studium není podmínkou přístupu. - Absolvent: `graduated`. Nemá studentský přístup. Historie jeho dat zůstává zachována. - Blokovaný student: `blocked`. Nemá studentský přístup. - Lektor musí mít `active=1`. Vidí studenty přiřazeného programu, předmětu nebo třídy, vždy v příslušné škole. - Další zaměstnanecká nebo lektorská role téže osoby se posuzuje samostatně. Pro zákaz všech rolí vypněte přihlašovací účet `enabled=0`. - Stav **studia** `completed` neoznačuje automaticky celou osobu za absolventa; může mít souběžná studia. Celkový stav absolventa nastavuje studijní oddělení na kartě studenta. Student upravuje vlastní jméno, tituly a kontaktní údaje. Přihlašovací e-mail a telefon pro PIN jsou oddělené od kontaktů a spravuje je administrátor. Student si nemůže změnit roli, aktivaci/absolvování ani studijní zařazení prostřednictvím editace profilu. ## Ruční import SQLite vložte do `./import/` isEDU nebo nahrajte ve formuláři. Podporován je také trvalý adresář `private/app/isedu/import/` při standardním nasazení eLoaderu a soukromá složka `Context::dataPath()/import/`. Všechny tyto cesty mají zůstat mimo veřejný kořen hostingu. Preferujte trvalou složku; adresář konkrétního vydání může být při aktualizaci nahrazen. 1. **Načíst a zkontrolovat**: ověří integritu a zobrazí počty zdrojových tabulek. Nic nezapisuje do MySQL. 2. Přiřaďte každý program a třídu ke škole. Zvolte školu pro osoby bez studia i bez třídy. Zdroj nerozlišuje školy dostatečně jednoznačně, proto nejsou hádány z číselných rozsahů. 3. Používejte stále stejný identifikátor zdroje, například `legacy-main`. 4. Potvrďte přiřazení a stiskněte **Spustit import**. Import ověří i SHA-256 souboru proti náhledu a provede zápis v jedné MySQL transakci. 5. Zkontrolujte souhrn a centrální události `isedu.import.*`. Import zachovává původní ID a mapuje je do nových vnitřních ID/UUID. Předměty zachovávají textové kódy. Zdroj je otevřen pouze pro čtení. Opakovaný import nevytváří duplicity a nepřepisuje nové editace; změněné původní řádky se hlásí jako konflikty. Jde o vložení/mapování dat, nikoli trvalou obousměrnou synchronizaci. Chybějící rodičovský záznam se nevymýšlí. Řádek zůstane v importním archivu MySQL a nevyřešená vazba se zapíše do centrálního logu. Neznámý stav studia dostane `unmapped`, nikoli domyšlený běžný stav. Importovaný historický `students.active=1` je považován za již aktivovaný účet; stav 2 je absolvent a 9 blokovaný/stornovaný. Import nepřenáší staré PINy, API klíče ani implicitní administrátorská práva. Nepřenáší automaticky nejednoznačné přiřazení výuky z volného textu `lectors.teach`. Administrátor je nastaví v novém modelu. Data pro dokumentovou a testovou aplikaci zůstávají v původním souboru; odpovídající aplikace dostanou vlastní importní kroky. ## Aktualizace a moduly Sekce **Moduly a aktualizace** nabízí kontrolu uloženého zdroje isEDU, nový odkaz na eUpdate, modul z eUpdate a ruční ZIP. Operace přechází do instalačního náhledu eLoaderu, který kontroluje kompatibilitu a aktivuje vydání. isEDU samo nepřepisuje sdílené knihovny. Instalace je oprávnění superadmina eLoaderu. Příklad instalovatelného modulu je `examples/student-list-1.0.0.zip`. Je volitelný a ukazuje použití filtrovaného `ModuleApi`. Uživatel jej spouští v sekci **Doplňky**. Dokumentace je v `docs/MODULES.md`. Konfigurace isEDU obsahuje pouze lokální nastavení organizace, nikoli databázové heslo. MySQL data zůstávají ve společné DB. Před budoucí nekompatibilní migrací použijte konzistentní zálohu DB a kódu; návrat ZIPu nenahrazuje obnovu databáze. Verze 0.1.0 vytváří schéma 1 při ručním prvním zprovoznění a neprovádí automatické následné migrace. ## Logy isEDU nemá vlastní logovací databázi ani logové soubory. Události zapisuje přes `Context::log()` do CentralLogu eLoaderu. Zápis obsahuje zdroj aplikace, identitu aktéra, čas, událost, typ/ID dotčeného záznamu a názvy změněných polí. Rodná čísla, obsah sylabů, databázová hesla ani celé importované řádky se do logu nevkládají. Audit eviduje operaci a měněná pole, nikoli kompletní historii předchozích osobních hodnot. Hledání, filtry, stránkování, retence a výmaz jsou v **eLoader → Diagnostika → CentralLog**. Uchování zpráv i aplikačních událostí je společné (1–3650 dní, výchozí 30). Události isEDU mají prefix `isedu.` a samostatně vyplněné ID aplikace. Konzistentní záloha centrálního SQLite patří k záloze privátních dat eLoaderu. ## Technické požadavky PHP 8.2–8.x, rozšíření `pdo_mysql`, `pdo_sqlite`, `mbstring` a požadavky eLoaderu. SQL používá InnoDB, utf8mb4, připravené dotazy, cizí klíče a transakce. Ověřeno na PHP 8.3.6 a MariaDB 10.11.7. MySQL 8 je cílově kompatibilní, samostatný běh na serveru MySQL 8 nebyl proveden. Nepotřebuje Node.js ani Composer na produkčním serveru; knihovny dodává eLoader. Při připojování provozní databáze doporučujeme nejprve provést ruční import do testovací kopie a zkontrolovat přiřazení škol. Distribuční balíček neobsahuje osobní údaje ani původní SQLite.

Articles, citations and 9 most viewed · PIVO