Files
xiaoxia-saas/packages/application/classification_jobs.py
T
Xiaoxia AI a8177c1268 feat: add asset classification pipeline
- domain: ClassificationJob entity with AssetClassification enum (scenic, product, person, animal, food, tech, sport, music, other)
- ports: ClassificationJobRepository interface
- application: SubmitClassificationJobUseCase
- adapters: InMemoryClassificationJobRepository
- worker: classify_asset task with mock classification logic
- tests: full classification pipeline test
- all 8 integration tests passing
2026-06-15 15:39:28 +08:00

27 lines
851 B
Python

from __future__ import annotations
from dataclasses import dataclass
from packages.domain import ClassificationJob
from packages.ports.classification_job_repository import ClassificationJobRepository
@dataclass(slots=True)
class SubmitClassificationJobCommand:
workspace_id: str
project_id: str
asset_id: str
class SubmitClassificationJobUseCase:
def __init__(self, classification_job_repository: ClassificationJobRepository):
self.classification_job_repository = classification_job_repository
def execute(self, command: SubmitClassificationJobCommand) -> ClassificationJob:
job = ClassificationJob.create(
workspace_id=command.workspace_id,
project_id=command.project_id,
asset_id=command.asset_id,
)
return self.classification_job_repository.create(job)