feat(ui): add routed operator workflows

This commit is contained in:
2026-07-31 17:19:08 +02:00
parent 22567c5fb1
commit 9023963bf1
14 changed files with 2846 additions and 275 deletions
+43
View File
@@ -337,6 +337,15 @@ class JobInput(BaseModel):
allow_empty: bool = False
class JobPatch(BaseModel):
name: str | None = Field(default=None, min_length=1, max_length=255)
requested_mode: str | None = None
exclusions: list[str] | None = None
retention: dict[str, Any] | None = None
enabled: bool | None = None
allow_empty: bool | None = None
class TokenInput(BaseModel):
scopes: list[str] = Field(min_length=1)
expires_at: datetime | None = None
@@ -1152,6 +1161,40 @@ def create_app(settings: Settings) -> FastAPI:
"state": job.state,
}
@app.patch("/api/v2/jobs/{job_id}")
async def patch_job(
job_id: str,
input_: JobPatch,
request: Request,
db: Annotated[AsyncSession, Depends(session)],
identity: Annotated[tuple[User, set[str], bool], Depends(require)],
) -> dict[str, Any]:
job = await db.get(Job, job_id)
if job is None or job.state != "active":
raise Problem(404, "resource_not_found", "Job was not found.")
changes = input_.model_dump(exclude_unset=True)
if not changes:
raise Problem(422, "validation_failed", "No mutable fields supplied.")
if changes.get("requested_mode") not in {None, "full", "incremental"}:
raise Problem(422, "validation_failed", "Invalid requested mode.")
for field, value in changes.items():
setattr(job, field, value)
await audit(db, request, "update", "job", job.id, "success", identity[0].id)
await db.commit()
await db.refresh(job)
return {
"id": job.id,
"name": job.name,
"source_id": job.source_id,
"repository_id": job.repository_id,
"requested_mode": job.requested_mode,
"exclusions": job.exclusions,
"retention": job.retention,
"enabled": job.enabled,
"allow_empty": job.allow_empty,
"state": job.state,
}
@app.post("/api/v2/jobs/{job_id}/schedule", status_code=201)
async def create_schedule(
job_id: str,