Skip to content

feat(chat): Add document action endpoints for comparison, summarization, and analysis

zakariae yahya a demandé de fusionner feature/accounts-folders vers develop

Summary

Refactoring des endpoints Chat Actions pour utiliser les IDs de documents indexes au lieu de l'upload de fichiers. Le frontend selectionne maintenant les documents depuis l'indexation et envoie leurs UUIDs.

Changes

New Schemas (Integration/schemas/chat.py)

  • SummarizeOptionEnum: Options de resume (short, detailed, bullet)
  • CompareRequest: Liste de document_ids + query optionnelle
  • SummarizeRequest: document_id + options optionnelles
  • AnalyzeRequest: document_id + query optionnelle

Updated Service (Integration/services/actions_service.py)

  • _get_document_by_id(): Recupere le document depuis PostgreSQL
  • _get_document_content_from_qdrant(): Recupere les chunks depuis Qdrant
  • Fallback logic pour les collections avec metadonnees inconsistantes
  • Suppression du hardcoding localhost, externalisation de API_BASE_URL
  • Logging ameliore pour debug webhook n8n (raw response, JSON parsing errors)
  • Meilleure gestion des erreurs HTTP 502 pour reponses n8n invalides

Updated Prompts (Integration/chat/prompts.py)

  • format_compare_prompt(): Ajoute parametre query optionnel
  • format_summarize_prompt(): Ajoute parametre options

Updated Endpoints (Integration/chat_api.py)

  • POST /chat/actions/compare: JSON avec document_ids[]
  • POST /chat/actions/summarize: JSON avec document_id
  • POST /chat/actions/analyze: JSON avec document_id

API Changes

Before (multipart/form-data)

curl -X POST "/chat/actions/summarize" \
  -F "file=@document.pdf"

After (application/json)

curl -X POST "/chat/actions/summarize" \
  -H "Content-Type: application/json" \
  -H "x-user-uuid: user-uuid" \
  -d '{"document_id": "uuid-xxx", "options": ["short"]}'

New Request/Response Format

Compare

POST /chat/actions/compare
{
  "document_ids": ["uuid-1", "uuid-2"],
  "query": "Quelles differences?" // optional
}

Summarize

POST /chat/actions/summarize
{
  "document_id": "uuid-1",
  "options": ["short", "bullet"] // optional: short, detailed, bullet
}

Analyze

POST /chat/actions/analyze
{
  "document_id": "uuid-1",
  "query": "Quels sont les montants?" // optional
}

Response Format

{
  "result": "# Analyse du document\n\n...",
  "sources": null
}

Test Results

Tests passed: 15
Tests failed: 1 (minor pattern mismatch in RAG search test)
Total tests: 16

Breaking Changes

  • Les endpoints /chat/actions/* n'acceptent plus de fichiers uploades
  • Le frontend doit envoyer des UUIDs de documents indexes
  • Header x-user-uuid toujours requis
  • Nouvelle variable d'environnement requise: API_BASE_URL

Files Modified

  • Integration/schemas/chat.py - New request schemas
  • Integration/services/actions_service.py - Document retrieval + improved logging
  • Integration/chat/prompts.py - Updated prompt formatters
  • Integration/chat_api.py - Updated endpoint signatures
Modification effectuée par zakariae yahya

Rapports de requête de fusion