show completion in frontend
This commit is contained in:
+24
-3
@@ -452,21 +452,42 @@ def get_holidays() -> dict[str, Any]:
|
||||
return {"dates": sorted(db.list_holidays(DB_PATH))}
|
||||
|
||||
|
||||
@app.get("/api/schedule/versions")
|
||||
def get_schedule_versions() -> dict[str, Any]:
|
||||
return {"versions": db.get_schedule_versions(DB_PATH)}
|
||||
|
||||
|
||||
@app.get("/api/schedule/week")
|
||||
def get_schedule_week(start: str | None = None) -> dict[str, Any]:
|
||||
def get_schedule_week(start: str | None = None, version: int | None = None) -> dict[str, Any]:
|
||||
week_start = start or date.today().isoformat()
|
||||
try:
|
||||
datetime.strptime(week_start, "%Y-%m-%d")
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail="start must be YYYY-MM-DD") from exc
|
||||
if version is not None and version <= 0:
|
||||
raise HTTPException(status_code=400, detail="version must be a positive integer")
|
||||
|
||||
week_start_date = datetime.strptime(week_start, "%Y-%m-%d").date()
|
||||
rows = db.get_schedule_week(week_start, DB_PATH)
|
||||
all_rows = db.get_schedule_rows_for_latest_version(DB_PATH)
|
||||
selected_version = db.resolve_schedule_version(version, DB_PATH)
|
||||
if version is not None and selected_version is None:
|
||||
raise HTTPException(status_code=404, detail=f"Schedule version {version} was not found")
|
||||
|
||||
rows = db.get_schedule_week(week_start, selected_version, DB_PATH)
|
||||
|
||||
# Log completed tests on the current schedule
|
||||
completed_count = sum(1 for row in rows if row.status == 'completed')
|
||||
if completed_count > 0:
|
||||
print(f"[api] /schedule/week: {completed_count} test(s) marked as completed on calendar")
|
||||
for row in rows:
|
||||
if row.status == 'completed':
|
||||
print(f" - {row.test_id} on {row.device} (scheduled {row.scheduled_date})")
|
||||
|
||||
all_rows = db.get_schedule_rows(selected_version, DB_PATH)
|
||||
completion_date = max((row.scheduled_date for row in all_rows), default=None)
|
||||
holiday_dates = db.list_holidays(DB_PATH)
|
||||
return {
|
||||
"start_date": week_start,
|
||||
"schedule_version": selected_version,
|
||||
"items": [_serialize_schedule_row(row) for row in rows],
|
||||
"total_scheduled_tests": len(all_rows),
|
||||
"completion_date": completion_date,
|
||||
|
||||
Reference in New Issue
Block a user