Add ability to end a run as victory or defeat
Add End Run button to run dashboard with a confirmation modal offering Victory/Defeat choice. Backend auto-sets completedAt timestamp and validates only active runs can be ended. Ended runs show a completion banner with date and duration, rename team to "Final Team", and hide encounter logging and status change interactions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Response
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
@@ -73,6 +75,15 @@ async def update_run(
|
||||
raise HTTPException(status_code=404, detail="Run not found")
|
||||
|
||||
update_data = data.model_dump(exclude_unset=True)
|
||||
|
||||
# Auto-set completed_at when ending a run
|
||||
if "status" in update_data and update_data["status"] in ("completed", "failed"):
|
||||
if run.status != "active":
|
||||
raise HTTPException(
|
||||
status_code=400, detail="Only active runs can be ended"
|
||||
)
|
||||
update_data["completed_at"] = datetime.now(timezone.utc)
|
||||
|
||||
for field, value in update_data.items():
|
||||
setattr(run, field, value)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user