@startuml uc-05-train-stat autonumber title UC-05 Train Stat (design sequence) actor Player participant "GymBoundary\n«/api/characters/{id}/gym»" as boundary <> participant "TrainingService\nsb-core::services::train_stat" as control <> participant "ResourceRegenerator\napply_regen" as regen <> participant "TrainingGrounds\nTRAINING_GROUNDS + training_cost" as entity <> == Train == Player -> boundary : POST stat name boundary -> regen : apply_regen(character) regen --> boundary : character (regenerated) boundary -> control : train_stat(character, stat) control -> entity : cost = training_cost (x1.3 per 10 points) alt not enough energy control --> boundary : 422 (DomainError) else not enough gold control --> boundary : 422 (DomainError) else unknown stat control --> boundary : 400 (DomainError) else ok control -> entity : stat +1 (energy -1, gold -cost) control -> entity : constitution: recompute max HP (clamp current) control --> boundary : {success, message, character} boundary --> Player : {success, message, character} end @enduml