Tools centralise les conversions de format consommées par CRMFlow, ERPFlow, CrossRD, CrossAgents et Chrysalide : PDF ↔ Markdown, audio ↔ texte (Whisper), texte → audio (Piper), Markdown → PDF (WeasyPrint), extraction vidéo (ffmpeg), image resize. Service stateless, cache Redis sur clé SHA256, quotas par organisation, audit log immuable. Une seule équipe maintient les helpers — finie la duplication entre 7 microservices.
Chaque endpoint existe parce qu'au moins deux modules CrossFlow le ré-implémentaient en local. Tools les rassemble derrière une seule API authentifiée.
POST /tools/pdf2md (extraction structurée pypdf, fallback OCR tesseract sur PDFs scannés) et POST /tools/md2pdf (rendu WeasyPrint, templating identique aux factures ERPFlow).
POST /tools/stt — transcription audio MP3/WAV via whisper.cpp local (modèle base.en, ~1 GB RAM). Cache Redis sur SHA256 du fichier — un audio déjà transcrit revient en moins de 50 ms.
POST /tools/tts — synthèse vocale Piper local (~500 MB RAM, voix configurable). Utilisé par Chrysalide pour les audio learning et CrossRD pour les guides audio dérivés.
POST /tools/ffmpeg/extract-audio + extract-keyframes (vidéo MP4 → WAV ou liste d'images représentatives) et POST /tools/youtube-transcript (URL YouTube → transcript JSON). Pipeline ingestion CrossRD.
POST /tools/docx2md et POST /tools/pptx2md — conversion via python-docx / python-pptx, fallback pandoc. Utilisé par CrossRD V1 pour ingérer notes de cadrage et slides existantes.
POST /tools/image-resize — redimensionnement Pillow + watermark configurable. Génère les previews ePlatform V3 (catalogue B2C) et les assets marketing CrossAgents.
3 étapes invisibles côté consommateur : un POST HTTP suffit, le cache et les quotas sont transparents.
CRMFlow, ERPFlow, CrossRD, CrossAgents ou Chrysalide envoie un POST /api/v1/tools/<endpoint> avec header X-Internal-Token et payload (fichier multipart ou URL + paramètres). L'org_id est passé dans le body pour quota tracking.
Le service vérifie le quota mensuel de l'org, calcule SHA256(file_bytes + params), interroge Redis. Cache hit → réponse en <50 ms depuis MinIO bucket tools-cache (rétention 7 jours). Cache miss → conversion à la volée.
Le résultat (texte Markdown, MP3, image redimensionnée, etc.) est renvoyé au module appelant. Une ligne d'audit log est insérée (org_id, endpoint, durée, cache_hit). Le fichier source est purgé du disque immédiatement (sauf entrée cache MinIO).
Tools sortira du stand-by dès qu'un critère de réactivation §5 sera rempli (client payant, ROI mesuré, demande pilote). En attendant, vos retours de priorisation aident à séquencer le V1 — quels endpoints sont les plus urgents pour votre cas d'usage ?
Remonter un besoin Tools