[Quality] Job-Dict typisieren mit Pydantic-Modell #31

Open
opened 2026-05-27 14:00:10 +02:00 by ferdi2go · 0 comments
Owner

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

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.

## 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.
ferdi2go added the maintenancepriority: low labels 2026-05-27 14:00:10 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ferdi2go/OnlyFrames#31