summaryrefslogtreecommitdiff
path: root/makima/src/server/handlers/contracts.rs
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src/server/handlers/contracts.rs')
-rw-r--r--makima/src/server/handlers/contracts.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/makima/src/server/handlers/contracts.rs b/makima/src/server/handlers/contracts.rs
index b704586..01b4610 100644
--- a/makima/src/server/handlers/contracts.rs
+++ b/makima/src/server/handlers/contracts.rs
@@ -1461,6 +1461,22 @@ pub async fn change_phase(
.await
{
Ok(PhaseChangeResult::Success(updated_contract)) => {
+ // Save supervisor state on phase change (Task 3.3)
+ // This is a key save point for restoration
+ let new_phase_for_state = updated_contract.phase.clone();
+ let contract_id_for_state = updated_contract.id;
+ let pool_for_state = pool.clone();
+ tokio::spawn(async move {
+ if let Err(e) = repository::update_supervisor_phase(&pool_for_state, contract_id_for_state, &new_phase_for_state).await {
+ tracing::warn!(
+ contract_id = %contract_id_for_state,
+ new_phase = %new_phase_for_state,
+ error = %e,
+ "Failed to save supervisor state on phase change"
+ );
+ }
+ });
+
// Notify supervisor of phase change
if let Some(supervisor_task_id) = updated_contract.supervisor_task_id {
if let Ok(Some(supervisor)) = repository::get_task_for_owner(pool, supervisor_task_id, auth.owner_id).await {