2.2 KiB
2.2 KiB
Sprint 27: Cross-Meeting RAG
Size: M | Owner: Backend + Client | Phase: 5 - Platform Evolution Effort: ~1 sprint | Prerequisites: Sprint 26 (Meeting Q&A MVP)
Objective
Enable workspace-scoped Q&A and annotation suggestions across multiple meetings.
Key Tasks
Task 1: Workspace-Scoped Semantic Search
Extend SegmentRepository with workspace-scoped search:
async def search_semantic_workspace(
self,
query_embedding: list[float],
workspace_id: UUID,
project_id: UUID | None = None,
limit: int = 20,
) -> list[tuple[Segment, float]]:
"""Search segments across all meetings in workspace/project."""
Task 2: WorkspaceQA Graph
Create infrastructure/ai/graphs/workspace_qa.py:
- Similar to MeetingQA but omits
meeting_idfilter - Groups results by meeting for citation display
- Returns cross-meeting citations
Task 3: Annotation Suggester
Add annotation suggestion output to graph:
class SuggestedAnnotation:
text: str
annotation_type: AnnotationType
segment_ids: list[int]
confidence: float
Task 4: Conversation History
Implement thread persistence with checkpointer:
- Store conversation turns in graph state
- Support follow-up questions
- Maintain context across requests
Task 5: Apply Annotation Flow
UI flow to apply suggested annotations:
- Display suggested annotations in AskPanel
- User clicks "Apply" on suggestion
- Call existing
AddAnnotationRPC - Update UI to show applied status
Acceptance Criteria
- Cross-meeting queries return results from multiple meetings
- Suggested annotations can be applied with one click
- Conversation history persists across requests
- Follow-up questions reference previous context
make qualitypasses
Files Created/Modified
| Action | Path |
|---|---|
| Modified | src/noteflow/infrastructure/persistence/repositories/segment_repo.py |
| Created | src/noteflow/infrastructure/ai/graphs/workspace_qa.py |
| Modified | src/noteflow/application/services/assistant/assistant_service.py |
| Modified | client/src/components/meeting/AskPanel.tsx |