0002 — Stanje instance je TPH; prehod zamenja entiteto
Kontekst
Instanca teka/backtesta se premika skozi stanja (pending → scheduled → starting → running → terminal).
Stanje modeliramo z EF Core Table-Per-Hierarchy (TPH): vsako stanje je podtip
(StartingRunInstance, RunningRunInstance, …). EF-jev TPH diskriminatorski stolpec se ne more spremeniti na
obstoječi vrstici.
Odločitev
Prehod stanja zamenja entiteto z novo instanco podtipa namesto mutiranja polja statusa. Ker je vrstica zamenjana, se ID instance spremeni med starting → running → terminal. ID posode je stabilen in se nosi čez prehode; agent HTTP vozlišča je ključen s ključem ID posode za status/poročilo/stop/dnevnike.
Posledice
- Vsako stanje je posebna vrsta z le polji in metodami, veljavnimi v tem stanju — neveljavni prehodi in nesmiselni dostopi do polj so napake pri prevajanju, ne preverki med izvajanjem.
- Klicatelji ne smejo predpomnilnik ID instance čez prehod; uporabite ID posode kot stabilen ročaj za karkoli, kar traja med stanji.
- Logika prehoda se nahaja v
InstanceTransitions; sprememba ID je namenorna, ne napaka.