Dokumentace
Centrum nápovědyDoménaDoménový model
docs/cs/02-domain/domain-model.md

Doménový model

Tento dokument popisuje konceptuální doménový model. Záměrně je nezávislý na databázovém schématu a UI implementaci.

Klíčové koncepty

Organizace (tenant)

Reprezentuje zákaznický účet a primární hranici vlastnictví dat.

Klíčové invarianty

  • Vlastní Projekty, Assets, Blueprints a související záznamy.
  • Membership určuje, kteří Uživatelé mohou v rámci tenanta jednat.

Uživatel

Reprezentuje autentizovanou identitu (spravovanou Supabase Auth), která může patřit do jedné nebo více Organizací.

Klíčové invarianty

  • Identita je globální, oprávnění jsou tenant-scoped.
  • Uživatel jedná v kontextu aktivní Organizace.

Projekt (kanonická entita)

Reprezentuje jeden výpočetní “případ” s perzistovanými vstupy, výsledky a auditní stopou.

Klíčové invarianty

  • Vlastněn přesně jednou Organizací.
  • Má neměnnou identitu a v čase měnitelné verze (nebo historii verzí).
  • Výsledky výpočtu jsou svázané s verzí enginu, která je vytvořila.

ScaffoldSystem

Definuje typ/konfiguraci lešenářského systému (např. rámové, modulové, trubkové) a sadu komponent a omezení dostupných pro modelování.

Klíčové invarianty

  • Určuje dostupné vstupy a validační pravidla.
  • Musí být explicitně uveden ve vstupu Projektu, aby se předešlo nejednoznačným výsledkům.

BuildingModel

Reprezentuje geometrii/prostředí, které ovlivňuje konfiguraci lešení a jeho omezení.

Klíčové invarianty

  • Má normalizovanou reprezentaci vhodnou pro deterministický výpočet.
  • Jakékoli odvozené veličiny musí být reprodukovatelné ze vstupu.

CalculationResult

Deterministický výstup vytvořený výpočetním enginem z normalizovaného vstupu Projektu.

Klíčové invarianty

  • Vypočten z explicitního vstupu + verze enginu.
  • Obsahuje metriky, varování, BOM/spotřebu materiálu a případné compliance-relevantní signály.

Vztahy (konceptuálně)

  • Organizace 1—N Projekt
  • Organizace 1—N Asset
  • Organizace 1—N Blueprint
  • Uživatel N—N Organizace (membership)
  • Projekt 1—1 ScaffoldSystem (explicitně)
  • Projekt 1—1 BuildingModel (explicitně)
  • Projekt 1—N CalculationResult (pokud verzujeme), jinak 1—1 “aktuální výsledek”

Hranice domény

  • Doména neví o Supabase, Prisma, Next.js ani o síťových voláních.
  • Doména exportuje:
  • validované typy vstupů
  • čisté výpočetní funkce
  • doménové error typy (validace/porušení omezení)