ProjectTech4DevAI / ProjectTech4DevAI/kaapi-backend
Async Job: Foreign Key Association for Project and Organization
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 18
- Fork
- 10
- Merge medio
- 2g 20h
- PR unite (30g)
- 14
Descrizione
Describe the current behavior
Async "Job" database model does not have project_id and organization_id FK relation
Describe the enhancement you'd like
Add these relations or use batch_job table for both the celery async job and other batch job status
Why is this enhancement needed?
From a maintainability perspective
Additional context
class Job(SQLModel, table=True):
"""Database model for tracking async jobs."""
__tablename__ = "job"
id: UUID = Field(
default_factory=uuid4,
primary_key=True,
sa_column_kwargs={"comment": "Unique identifier for the job"},
)
task_id: str | None = Field(
nullable=True,
description="Celery task ID returned when job is queued.",
sa_column_kwargs={"comment": "Celery task ID returned when job is queued"},
)
trace_id: str | None = Field(
default=None,
description="Tracing ID for correlating logs and traces.",
sa_column_kwargs={"comment": "Tracing ID for correlating logs and traces"},
)
error_message: str | None = Field(
default=None,
description="Error details if the job fails.",
sa_column_kwargs={"comment": "Error details if the job fails"},
)
status: JobStatus = Field(
default=JobStatus.PENDING,
description="Current state of the job.",
sa_column_kwargs={
"comment": "Current state of the job (PENDING, PROCESSING, SUCCESS, FAILED)"
},
)
job_type: JobType = Field(
description="Type of job being executed (e.g., response, ingestion).",
sa_column_kwargs={
"comment": "Type of job being executed (e.g., RESPONSE, LLM_API)"
},
)
# Timestamps
created_at: datetime = Field(
default_factory=now,
sa_column_kwargs={"comment": "Timestamp when the job was created"},
)
updated_at: datetime = Field(
default_factory=now,
sa_column_kwargs={"comment": "Timestamp when the job was last updated"},
)
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia individuando la definizione Job di SQLModel e i modelli o le tabelle esistenti project, organization e batch_job. Confronta se il job asincrono debba ricevere entrambe le relazioni di chiave esterna o condividere batch_job, quindi esamina le convenzioni correlate dello schema e delle migrazioni. Il lavoro è completato quando il design scelto mantiene le associazioni necessarie senza duplicare i modelli dello stato dei job.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- backend, databases
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100