_jobs ist aktuell dict mit ad-hoc Keys (status, result, error, done, total, phase, owner, created_at, zip_id, failed). Code-Reader muss alle Set-Stellen lesen, um zu wissen welche Keys erwartet werden. Statische Pruefer koennen Tippfehler nicht fangen.
Aus #27 ausgegliedert. HTTP-Status-Codes wurden dort vereinheitlicht. Job-Typing ist groesserer Refactor (alle _jobs[...]-Stellen), besser mit Test-Setup gemeinsam.
## Problem
`_jobs` ist aktuell `dict` mit ad-hoc Keys (`status`, `result`, `error`, `done`, `total`, `phase`, `owner`, `created_at`, `zip_id`, `failed`). Code-Reader muss alle Set-Stellen lesen, um zu wissen welche Keys erwartet werden. Statische Pruefer koennen Tippfehler nicht fangen.
## Fix
```python
from typing import Literal
class JobStatus(BaseModel):
status: Literal["running", "done", "error"]
owner: str
created_at: float
done: int = 0
total: int = 0
phase: str | None = None
result: dict | None = None
error: str | None = None
zip_id: str | None = None
failed: list = []
```
Helfer `_set_job(job_id, **kw)` fuer atomare Updates.
## Ausgliederung
Aus #27 ausgegliedert. HTTP-Status-Codes wurden dort vereinheitlicht. Job-Typing ist groesserer Refactor (alle `_jobs[...]`-Stellen), besser mit Test-Setup gemeinsam.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
_jobsist aktuelldictmit ad-hoc Keys (status,result,error,done,total,phase,owner,created_at,zip_id,failed). Code-Reader muss alle Set-Stellen lesen, um zu wissen welche Keys erwartet werden. Statische Pruefer koennen Tippfehler nicht fangen.Fix
Helfer
_set_job(job_id, **kw)fuer atomare Updates.Ausgliederung
Aus #27 ausgegliedert. HTTP-Status-Codes wurden dort vereinheitlicht. Job-Typing ist groesserer Refactor (alle
_jobs[...]-Stellen), besser mit Test-Setup gemeinsam.