Implement AI orchestration wedding demo
This commit is contained in:
33
backend/app/memory/context_builder.py
Normal file
33
backend/app/memory/context_builder.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from collections import deque
|
||||
from typing import Any
|
||||
|
||||
from app.domain.schemas import TranscriptChunk
|
||||
|
||||
|
||||
class ContextBuilder:
|
||||
"""Maintains a Redis-compatible meeting context; uses memory for offline tests."""
|
||||
|
||||
def __init__(self, window_size: int = 12) -> None:
|
||||
self.window_size = window_size
|
||||
self._transcript: deque[TranscriptChunk] = deque(maxlen=window_size)
|
||||
self._participants: set[str] = set()
|
||||
self._recent_decisions: deque[dict[str, Any]] = deque(maxlen=10)
|
||||
|
||||
def add_chunk(self, chunk: TranscriptChunk) -> None:
|
||||
self._transcript.append(chunk)
|
||||
self._participants.add(chunk.speaker)
|
||||
|
||||
def add_decision(self, decision: dict[str, Any]) -> None:
|
||||
self._recent_decisions.append(decision)
|
||||
|
||||
def snapshot(self, app_state: dict[str, Any] | None = None) -> dict[str, Any]:
|
||||
return {
|
||||
"meeting": {"id": "demo-meeting", "title": "Wedding Planning Review"},
|
||||
"participants": sorted(self._participants),
|
||||
"transcript_window": [chunk.model_dump(mode="json") for chunk in self._transcript],
|
||||
"recent_ai_decisions": list(self._recent_decisions),
|
||||
"application_state": app_state or {},
|
||||
}
|
||||
|
||||
def transcript(self) -> list[TranscriptChunk]:
|
||||
return list(self._transcript)
|
||||
Reference in New Issue
Block a user