Files
life-echo/api/app/tasks/memory_enrichment_tasks.py

46 lines
1.5 KiB
Python
Raw Normal View History

"""
Memory enrichment Celery task runs asynchronously after ingest to generate
summaries, facts, and timeline events without blocking the memoir hot path.
"""
from celery import shared_task
from sqlalchemy.orm import Session
from app.core.config import settings
from app.core.db import get_sync_db
from app.core.logging import get_logger
logger = get_logger(__name__)
@shared_task(bind=True, max_retries=2, default_retry_delay=30)
def enrich_memory_source(self, user_id: str, source_id: str):
"""
Post-ingest enrichment: session summary, rolling summary, facts, timeline.
Runs outside the memoir Phase1 hot path so narrative generation isn't blocked.
"""
if not settings.memory_enrichment_enabled:
return {"status": "disabled"}
try:
with get_sync_db() as db:
from app.features.memory.enrichment import enrich_memory_after_ingest_sync
enrich_memory_after_ingest_sync(db, user_id, source_id, llm=None)
db.commit()
logger.info(
"event=memory_enrichment_done user_id={} source_id={}",
user_id,
source_id,
)
return {"status": "success", "source_id": source_id}
except Exception as e:
logger.warning(
"event=memory_enrichment_failed user_id={} source_id={} exc={} exc_type={}",
user_id,
source_id,
e,
type(e).__name__,
)
raise self.retry(exc=e) from e