ProjectTech4DevAI / ProjectTech4DevAI/kaapi-backend
Async Job: Foreign Key Association for Project and Organization
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 18
- Forks
- 10
- Merge moyen
- 2 j 20 h
- PR mergées (30 j)
- 14
Description
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"},
)
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par localiser la définition Job de SQLModel ainsi que les modèles ou tables existants project, organization et batch_job. Comparez si le job asynchrone doit recevoir les deux relations de clé étrangère ou partager batch_job, puis examinez les conventions correspondantes du schéma et des migrations. Le travail est terminé lorsque la conception choisie conserve les associations requises sans dupliquer les modèles d’état des jobs.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- backend, databases
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 35/100