Workers Documents - Support du Contexte
Date : 2026-01-24
Statut : ✅ Implémenté
📋 Modifications apportées
1. Types TypeScript mis à jour
Fichier : backend/src/workers/worker-doc/document.service.ts
- ✅
DocumentRowinclut maintenantsession_idetcontact_id - Les workers peuvent maintenant accéder au contexte des documents
2. Logs améliorés
Tous les processors documentaires incluent maintenant le contexte dans les logs :
DocIngestProcessor
- Logs de début et de completion incluent
SessionIDet/ouContactIDsi disponibles - Format :
... | SessionID: abc123... | ContactID: def456...
DocOcrProcessor
- Logs de début et de completion incluent le contexte
- Permet de tracer facilement quel document appartient à quelle session/contact
DocExtractStructuredProcessor
- Logs incluent le contexte pour l'extraction structurée
- Utile pour comprendre d'où viennent les données extraites
3. Fonctionnalités existantes conservées
- ✅ Les workers fonctionnent exactement comme avant
- ✅ Le contexte est automatiquement disponible via
documentService.findById() - ✅ Aucun changement de comportement, seulement amélioration des logs
🔄 Workflow complet
1. Upload document avec contexte session/contact
→ POST /documents/sessions/:id/documents
→ Document créé avec session_id ou contact_id
↓
2. Worker doc:ingest
→ Charge document (inclut session_id/contact_id)
→ Logs incluent le contexte
→ Crée document_pages
→ Enqueue doc:ocr
↓
3. Worker doc:ocr (par page)
→ Charge document (inclut session_id/contact_id)
→ Logs incluent le contexte
→ Exécute OCR
→ Met à jour document status = OCR_DONE
↓
4. Worker doc:extract_structured (optionnel)
→ Charge document (inclut session_id/contact_id)
→ Logs incluent le contexte
→ Extrait données structurées
→ Met à jour document status = EXTRACTED
📊 Exemples de logs
Avant
Processing document ingest → JobID: abc123 | DocumentID: def456 | OrgID: ghi789
Après
Processing document ingest → JobID: abc123 | DocumentID: def456 | OrgID: ghi789 | SessionID: xyz012...
✅ Avantages
- Traçabilité : Facile de voir quel document appartient à quelle session/contact dans les logs
- Debugging : Plus simple de déboguer les problèmes en connaissant le contexte
- Monitoring : Possibilité de filtrer les logs par session/contact
- Pas de breaking changes : Les workers fonctionnent exactement comme avant
🚀 Prochaines améliorations possibles
- Extraction de pages PDF spécifiques : Actuellement traite tout le PDF (TODO dans
doc-ocr.processor.ts) - Notifications : Notifier la session/contact quand un document est traité
- Métriques : Statistiques par session/contact sur les documents traités
- Auto-application : Appliquer automatiquement les données extraites aux notes/tags de session
📝 Notes
- Les workers n'ont pas besoin de connaître le contexte pour fonctionner
- Le contexte est stocké dans la DB et accessible via les endpoints GET
- Les logs incluent le contexte uniquement pour améliorer la traçabilité
- Aucun changement de comportement des workers