models.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from __future__ import annotations
  2. from dataclasses import dataclass, field
  3. from datetime import datetime
  4. from typing import Any
  5. @dataclass(frozen=True)
  6. class IngestionJobSpec:
  7. source_uid: str
  8. job_type: str
  9. parser_version: str
  10. artifact_uid: str | None = None
  11. parameters: dict[str, Any] = field(default_factory=dict)
  12. force_rerun: bool = False
  13. @dataclass(frozen=True)
  14. class IngestionJobRecord:
  15. uid: str
  16. source_uid: str
  17. job_type: str
  18. parser_version: str
  19. idempotency_key: str
  20. actor_uid: str | None
  21. artifact_uid: str | None = None
  22. parameters: dict[str, Any] = field(default_factory=dict)
  23. status: str = "created"
  24. statistics: dict[str, Any] = field(default_factory=dict)
  25. last_error: str | None = None
  26. force_rerun: bool = False
  27. created_at: datetime | None = None
  28. updated_at: datetime | None = None
  29. started_at: datetime | None = None
  30. finished_at: datetime | None = None
  31. @dataclass(frozen=True)
  32. class JobTransition:
  33. source_status: str
  34. target_status: str