Tools — Utility PaaS — Module CrossFlow

Une seule boîte à outils
pour tous vos modules.

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.

10
Endpoints V1
Cache
Redis SHA256
Quotas
Par organisation
API
X-Internal-Token

Conversions de format, industrialisées.

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.

PDF ↔ Markdown

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).

Speech-to-Text Whisper

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.

Text-to-Speech Piper

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.

Vidéo & YouTube

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.

Office (DOCX / PPTX) → Markdown

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.

Image resize + watermark

POST /tools/image-resize — redimensionnement Pillow + watermark configurable. Génère les previews ePlatform V3 (catalogue B2C) et les assets marketing CrossAgents.

Pourquoi un service dédié plutôt qu'un helper local par module

  • Aujourd'hui, ERPFlow et CrossRD embarquent chacun WeasyPrint — deps Pango/Cairo/GDK installées en double, builds Docker plus lourds.
  • CrossAgents (skill marketing podcast_pipeline) et CrossRD (ingestion audios) ré-implémentent Whisper séparément — pas de cache partagé, factures qui doublent.
  • Aucun module ne mesure son usage : impossible de répondre à 'combien de minutes Whisper consommées par CrossBiz ce mois ?'.
  • Les fichiers temporaires traînent dans /tmp de chaque container — risque RGPD diffus, pas de purge centralisée.
  • Quand un bug pdf2md est découvert dans CrossAgents, il faut le patcher 3 fois (CrossRD, CrossAgents, ERPFlow) avant que tous les services soient à jour.

Ce que Tools centralise

  • Un seul service stateless service-tools:8010, un seul Dockerfile (poppler/tesseract/ffmpeg/weasyprint/pandoc), une seule équipe de mainteneurs.
  • Cache Redis sur clé SHA256(file_bytes + params) : chaque conversion identique est servie sans recomputation, hit attendu > 30 %.
  • Quotas par organisation dans public.tools_org_quotas (transcription_minutes, conversions, image_resize) avec alerting > 80 %.
  • Audit log immuable public.tools_audit_log (org_id, endpoint, taille fichier, durée, cache_hit, status) — observabilité complète et conformité RGPD.
  • Auth X-Internal-Token uniquement (pattern erp_internal.py) : pas exposé en B2C, accès réservé aux microservices CrossFlow + agents IA via paas.call.

Comment un module appelle Tools

3 étapes invisibles côté consommateur : un POST HTTP suffit, le cache et les quotas sont transparents.

01

Le module appelle l'endpoint

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.

02

Tools vérifie quota, hash et cache

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.

03

Réponse + audit log

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).

Questions fréquentes

Pourquoi pas d'interface utilisateur sur tools.crossbizconsulting.com ?
Tools est une PaaS d'infrastructure interne, pas un produit B2B autonome. Aucun utilisateur final n'appelle directement /tools/pdf2md — ce sont les autres modules CrossFlow (CRMFlow, ERPFlow, CrossRD, etc.) qui consomment via X-Internal-Token. Cette landing existe pour clarifier la mission et la roadmap, pas pour proposer un signup. Un mini-dashboard d'observabilité super_admin (usage, quotas, cache stats, audit log) est prévu en V2 sous /panel/tools/.
Quel est le statut actuel de Tools PaaS ?
STAND-BY (Scénario B retenu le 26/04). En contexte free-only mono-VPS, CrossRD utilise pour l'instant des helpers internes (whisper.cpp local, Piper TTS local, pypdf). Les 3 sub-agents Claude Code (tools-tech-lead, tools-backend-engineer, tools-frontend-engineer) sont créés et prêts à être activés. Réactivation conditionnée à : (1) au moins 1 client externe paye une licence couvrant le coût LLM, OU (2) ROI mesuré sur ≥ 3 contenus library validés en mode free, OU (3) demande explicite d'un partenaire pilote.
Quels endpoints exactement en V1 ?
10 endpoints : POST /tools/pdf2md, /tools/stt (Whisper proxy), /tools/youtube-transcript, /tools/docx2md, /tools/pptx2md, /tools/md2pdf (WeasyPrint), /tools/tts (Piper), /tools/image-resize, /tools/ffmpeg/extract-audio, /tools/ffmpeg/extract-keyframes. Effort total estimé 10 jours. Spec complète dans docs/sprint_crossrd/05_BRIEF_TOOLS_PAAS.md.
Comment se compare Tools à AWS Lambda ou Cloudflare Workers ?
Tools n'est pas un FaaS générique — c'est une bibliothèque de conversions opinionées spécifiques à CrossFlow. Pas de runtime arbitraire à déployer, pas de cold start, pas de facturation à la milliseconde. Le service est partagé sur le même VPS que les 7 autres microservices, avec cache Redis local et stockage MinIO. Coût marginal : zéro tant que le quota org n'est pas dépassé.
Et la conformité RGPD sur les fichiers transmis ?
Politique no-PII stricte : les fichiers sources sont supprimés du disque immédiatement après conversion (sauf entrée cache MinIO, rétention 7 jours, ILM automatique). L'audit log stocke uniquement métadonnées (taille, durée, hash) — pas le contenu. Le module appelant reste responsable de la base légale (consentement, intérêt légitime). Pas de transfert hors UE car whisper.cpp et Piper tournent en local sur le VPS.
Tools est-il consommable par les agents IA CrossAgents ?
Oui, via le méta-tool paas.call (Phase 3.A CrossAgents v2, livrée 2026-04-26). Une fois Tools activé, ses 10 endpoints seront enregistrés dans le registry endpoints_registry avec confirmation flow ActionCard pour les opérations onéreuses (Whisper > 5 min, ffmpeg > 1 GB). Pour l'instant les agents utilisent les helpers internes CrossRD.

Une boîte à outils. Sept modules consommateurs.

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
14 jours gratuits Sans carte bancaire RGPD natif