Files
documente/prompts/3-chat-functionality.md
Luca Sacchi Ricciardi 081f3f0d89 feat(api): add chat functionality (Sprint 3)
Implement Sprint 3: Chat Functionality

- Add ChatService with send_message and get_history methods
- Add POST /api/v1/notebooks/{id}/chat - Send message
- Add GET /api/v1/notebooks/{id}/chat/history - Get chat history
- Add ChatRequest model (message, include_references)
- Add ChatResponse model (message, sources[], timestamp)
- Add ChatMessage model (id, role, content, timestamp, sources)
- Add SourceReference model (source_id, title, snippet)
- Integrate chat router with main app

Features:
- Send messages to notebook chat
- Get AI responses with source references
- Retrieve chat history
- Support for citations in responses

Tests:
- 14 unit tests for ChatService
- 11 integration tests for chat API
- 25/25 tests passing

Related: Sprint 3 - Chat Functionality
2026-04-06 01:48:19 +02:00

2.3 KiB

Prompt Sprint 3 - Chat Functionality

🎯 Sprint 3: Chat Functionality

Iniziato: 2026-04-06
Stato: 🟡 In Progress
Assegnato: @sprint-lead


📋 Obiettivo

Implementare la funzionalità di chat per interrogare le fonti dei notebook. Gli utenti potranno inviare messaggi e ricevere risposte basate sulle fonti caricate.


🏗️ Architettura

Pattern (stesso di Sprint 1 & 2)

API Layer (FastAPI Routes)
    ↓
Service Layer (ChatService)
    ↓
External Layer (notebooklm-py client)

Endpoints da implementare

  1. POST /api/v1/notebooks/{id}/chat - Inviare messaggio
  2. GET /api/v1/notebooks/{id}/chat/history - Ottenere storico chat
  3. POST /api/v1/notebooks/{id}/chat/save - Salvare risposta come nota (v2)

📊 Task Breakdown Sprint 3

Fase 1: Specifiche

  • SPEC-006: Analisi requisiti Chat
  • Definire flusso conversazione
  • Definire formato messaggi

Fase 2: API Design

  • API-005: Modelli Pydantic (ChatMessage, ChatRequest, ChatResponse)
  • Documentazione endpoints chat

Fase 3: Implementazione

  • DEV-012: ChatService
  • DEV-013: POST /chat
  • DEV-014: GET /chat/history

Fase 4: Testing

  • TEST-006: Unit tests ChatService
  • TEST-007: Integration tests chat API

🔧 Implementazione

ChatService Methods

class ChatService:
    async def send_message(
        notebook_id: UUID, 
        message: str, 
        include_references: bool = True
    ) -> ChatResponse:
        """Send message and get response."""
        
    async def get_history(notebook_id: UUID) -> list[ChatMessage]:
        """Get chat history for notebook."""

Modelli

class ChatRequest(BaseModel):
    message: str
    include_references: bool = True

class ChatResponse(BaseModel):
    message: str
    sources: list[SourceReference]
    timestamp: datetime

class ChatMessage(BaseModel):
    id: UUID
    role: str  # "user" | "assistant"
    content: str
    timestamp: datetime
    sources: list[SourceReference] | None

🚀 Prossimi Passi

  1. @sprint-lead: Attivare @api-designer per API-005
  2. @api-designer: Definire modelli chat
  3. @tdd-developer: Iniziare implementazione ChatService

Dipende da: Sprint 2 (Source Management)
Blocca: Sprint 4 (Content Generation) 🔴