Technický přehled skautIS v2
Přehled komponent a technologií. Diagram celkového toku viz Diagramy → Přehled systému.
Přehled komponent
| Komponenta | Technologie | Zodpovědnost |
|---|---|---|
| SSO Service | Python, FastAPI, Authlib, JWT, PostgreSQL | Identity – OIDC endpointy, hashování hesel, vydávání tokenů |
| Skautis Core (BE) | FastAPI (modulární monolith) | Veškerá business logika, validace JWT, žádná hesla |
| Databáze aplikace | SurrealDB | Persistence dat aplikace (ne uživatelů/hesel) |
| Frontend | libovolné | Přesměrování na SSO pro přihlášení, volání API s JWT |
SSO Service (Python / FastAPI)
- Úložiště: PostgreSQL – tabulka
users(identity, hesla nikdy neopouštějí SSO). - Funkce: OIDC endpointy (Authlib), hashování hesel, vydávání JWT.
- Výstup: JWT tokeny podepsané privátním klíčem; veřejný klíč pro validaci poskytuje backendu.
API Gateway / Backend (Skautis Core)
- Typ: Modulární monolith – jedna FastAPI aplikace, uvnitř striktně oddělené routery a složky.
- Zodpovědnost: Veškerá business logika. Jednotlivé domény viz Domény.
- Auth: Validace JWT veřejným klíčem z SSO. Backend nedrží hesla, pouze ID uživatelů (např. pro vazby v SurrealDB).
- Databáze: SurrealDB pro aplikační data.
Frontend
- Přesměruje uživatele na SSO pro přihlášení.
- Po přihlášení dostane JWT a posílá ho v hlavičce při volání API (Skautis Core).
- Konkrétní stack není pro architekturu podstatný.
User a Person v jádře systému
V jádře systému (backend, SurrealDB) existují dvě entity a vztah mezi nimi:
- User (uživatel) – přihlášený uživatel systému; reprezentuje identitu pro přihlášení (vazba na SSO). User je ten, kdo se do skautIS v2 přihlásí a provádí akce v rozhraní.
- Person (osoba) – fyzická osoba v organizaci (člen, vedoucí, rodič, …); nese osobní údaje, členství v jednotkách, historii. Person je to, koho systém eviduje v rámci Junáka.
Vztah: User a Person mezi sebou mají vazbu (např. 1:1 nebo 0:1 – jedna osoba může mít přihlašovací účet, ale ne každá evidovaná osoba musí mít účet). Business logika a oprávnění se typicky opírají o Person (např. „jaká jednotka a role má tato osoba“), přičemž aktuální přihlášení je určeno Userem a jeho propojením na Person. Detail domény osob viz Doména: Osoby a členové.
Databáze
- SurrealDB – hlavní databáze aplikace (entity, vztahy, business data). Ukládá mimo jiné User a Person a vztah mezi nimi; User odkazuje na identitu v SSO.
- PostgreSQL – pouze v SSO službě pro tabulku
usersa související identity data.
Související dokumenty
- Oprávnění – úroveň oprávnění User pro jednotku, hierarchická platnost pro podřízené jednotky
- Diagram toku
- Integrace s existujícími systémy
- Architektonická rozhodnutí