Skip to main content

0002 — Stav inštancie je TPH; prechod nahrádza entitu

Kontext​

Inštancia spustenia/backtestingu prechádza stavmi (pending → scheduled → starting → running → terminal). Modelujeme stav s EF Core Table-Per-Hierarchy (TPH): každý stav je podtyp (StartingRunInstance, RunningRunInstance, …). Stĺpec diskriminátora EF TPH nemôže zmeniť na existujúcom riadku.

Rozhodnutie​

Prechod stavu nahrádza entitu novou inštanciou podtypu, skôr ako mutuje pole stavu. Keďže sa riadok nahrádza, ID inštancie zmení naprieč starting → running → terminal. ID kontajnera je stabilné a je prenášané naprieč prechodmi; HTTP uzol agenta je kľúčený podľa ID kontajnera pre status/report/stop/logs.

Dôsledky​

  • Každý stav je odlišný typ, iba s poľami a metódami platnými v tom stave — nelegálne prechody a nezmyselný prístup k poľu sú chyby kompilácie, nie kontroly za beh.
  • Volajúci nesmú vložiť do vyrovnávacej pamäte ID inštancie naprieč prechodom; používajte ID kontajnera ako stabilný kľúč pre čokoľvek, čo sa rozprestiera stavy.
  • Logika prechodu žije v InstanceTransitions; zmena ID je zámyselná, nie chyba.