Renumber the 15 reference docs into pillar groups (recipe -> anatomy): - 01 Build Recipe (entry), 02 Composition Root - domains: 10 Layering Rules - contract: 20 Spec-First Routing, 21 CRUD Template, 22 Auth Integration - interfaces/infra: 30 Infra Adapters - UI: 40 UI: Auto-Rendered Admin & Custom Pages (new; @aetoskia packages, client template, x- catalog via react-openapi MCP module) - pipelines: 50 Pipeline Scaffold, 51 Worker & Progress, 52 Human-in-the-Loop - delivery/meta: 90 Drone Pipelines, 91 Versioning & Changelog, 92 Genericity Matrix, 93 Library Registry, 94 Repository Inventory MCP module names are unchanged (NN_ prefix stripped); all cross-references (wiki, templates, hooks, registry) updated; lib index rewritten pillar-first; build recipe bootstraps the client template. Bundle + HTML sites regenerated.
30 lines
885 B
Python
30 lines
885 B
Python
"""# Summary
|
|
|
|
Job domain model — a pipeline work item consumed by the background worker.
|
|
"""
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class Job(BaseModel):
|
|
"""A unit of background work.
|
|
|
|
Attributes:
|
|
id (int | None): Server-assigned identifier. Defaults to None.
|
|
name (str): Job name.
|
|
status (str): Lifecycle status. Defaults to "pending".
|
|
retry_count (int): Times the job failed. Defaults to 0.
|
|
error_message (str | None): Last failure message. Defaults to None.
|
|
payload (dict | None): Arbitrary job payload. Defaults to None.
|
|
"""
|
|
|
|
id: int | None = None
|
|
name: str
|
|
status: Literal["pending", "processing", "done", "failed"] = "pending"
|
|
retry_count: int = Field(default=0)
|
|
error_message: str | None = None
|
|
payload: dict | None = None
|
|
|
|
model_config = {"extra": "ignore"}
|