51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
|
|
"""Memory enrichment scheduling boundary."""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from dataclasses import dataclass
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass(frozen=True)
|
||
|
|
class MemoryEnrichmentRequest:
|
||
|
|
user_id: str
|
||
|
|
source_id: str
|
||
|
|
memoir_correlation_id: str | None = None
|
||
|
|
|
||
|
|
|
||
|
|
class MemoryEnrichmentScheduler:
|
||
|
|
"""Adapter around the Celery enrichment task name and queue policy."""
|
||
|
|
|
||
|
|
def schedule(self, request: MemoryEnrichmentRequest) -> str | None:
|
||
|
|
from app.tasks.memory_enrichment_tasks import schedule_memory_enrichment
|
||
|
|
|
||
|
|
return schedule_memory_enrichment(
|
||
|
|
request.user_id,
|
||
|
|
request.source_id,
|
||
|
|
memoir_correlation_id=request.memoir_correlation_id,
|
||
|
|
)
|
||
|
|
|
||
|
|
def schedule_many(
|
||
|
|
self,
|
||
|
|
user_id: str,
|
||
|
|
source_ids: list[str],
|
||
|
|
*,
|
||
|
|
memoir_correlation_id: str | None = None,
|
||
|
|
) -> list[str]:
|
||
|
|
task_ids: list[str] = []
|
||
|
|
for source_id in source_ids:
|
||
|
|
if not source_id:
|
||
|
|
continue
|
||
|
|
task_id = self.schedule(
|
||
|
|
MemoryEnrichmentRequest(
|
||
|
|
user_id=user_id,
|
||
|
|
source_id=source_id,
|
||
|
|
memoir_correlation_id=memoir_correlation_id,
|
||
|
|
)
|
||
|
|
)
|
||
|
|
if task_id:
|
||
|
|
task_ids.append(task_id)
|
||
|
|
return task_ids
|
||
|
|
|
||
|
|
|
||
|
|
__all__ = ["MemoryEnrichmentRequest", "MemoryEnrichmentScheduler"]
|