feat(chat): Add document action endpoints for comparison, summarization, and analysis
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-uuidtoujours 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