Přeskočit obsah

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 users a související identity data.

Související dokumenty