Architecture et services Cloudflare
ResolveHQ s’exécute comme un unique Cloudflare Worker dans le compte du client. Le framework Hono sert à la fois l’API REST et l’application React, ce qui minimise la latence entre le front‑end et le back‑end. Les données structurées – tickets, clients et métadonnées – sont stockées dans Cloudflare D1, tandis que les pièces jointes sont conservées dans Cloudflare R2. Les flux de travail de messagerie, entrants et sortants, sont orchestrés par Cloudflare Queues, assurant une exécution asynchrone fiable. L’arrivée du courrier est gérée par Cloudflare Email Routing, qui redirige les messages vers le Worker, et les réponses sont envoyées via le service Resend, qui fournit des accusés de réception, des tentatives de renvoi et des webhooks idempotents.
Un cron interne déclenché toutes les cinq minutes relance les jobs de messagerie bloqués et purge les données orphelines, garantissant la cohérence du système sans intervention manuelle.
Fonctionnalités de gestion de tickets
Le produit propose une boîte de réception partagée avec isolation par locataire, incluant la classification par statut, priorité, tags et recherche plein texte. Les réponses sont conformes au RFC 5322, ce qui empêche le spoofing de l’objet entre tickets. Les agents peuvent utiliser des réponses sauvegardées, des notes internes et, de façon optionnelle, des réponses générées par OpenAI (modèle par défaut gpt-4o-mini) lorsqu’une clé API est fournie dans les secrets du Worker. La rétention des tickets est paramétrable via la variable d’environnement TICKET_RETENTION_DAYS, qui déclenche une suppression programmée des tickets résolus et de leurs pièces jointes après le nombre de jours indiqué.
Les exportations sont possibles au format JSON pour chaque client, ou sous forme de CSV pour des rapports d’activité, facilitant l’audit et l’analyse de la charge de travail.
Gestion du courrier électronique et automatisations
Les e‑mails entrants sont réceptionnés par Email Routing, placés dans une file d’attente, puis traités par le Worker qui crée ou met à jour les tickets correspondants. Les pièces jointes sont stockées dans R2 après validation d’autorisation, garantissant l’intégrité des fichiers. Les réponses sortantes utilisent Resend, qui ajoute les pièces jointes liées et assure la traçabilité grâce aux webhooks de statut de livraison. Les files d’attente mortes (dead‑letter) sont drainées vers des enregistrements durables, permettant une récupération post‑mortem.
Des règles d’automatisation basées sur le contenu ou les métadonnées du ticket permettent de réassigner automatiquement les tickets, de modifier leur priorité ou de déclencher des notifications in‑app. Les agents reçoivent ces notifications en temps réel, ce qui accélère le temps de réponse.
Limites, exigences et déploiement
ResolveHQ fonctionne sur le plan Free de Cloudflare Workers tant que la consommation reste dans les quotas de Workers, D1, R2, Queues, Cron Triggers et Email Routing. Les opérations d’authentification ou de parsing intensif peuvent nécessiter le plan Paid, d’où l’importance de benchmarker chaque déploiement. R2 requiert une activation de compte et une facturation séparée, tandis que Resend impose ses propres limites d’envoi.
Le déploiement s’effectue via le bouton « Deploy to Cloudflare », suivi de la configuration d’un domaine et d’une règle Email Routing pointant vers le Worker. Le processus de mise en route inclut les commandes suivantes :
npm install
cp .dev.vars.local.example .dev.vars
npm run db:migrate:local
npm run db:seed:local
npm run dev
Ces scripts préparent la base de données locale D1, injectent les variables d’environnement et lancent le serveur Vite sur http://localhost:5173, avec le proxy API vers Wrangler sur http://localhost:8787. L’ensemble du système repose sur des composants natifs de Cloudflare, ce qui réduit la surface d’attaque et simplifie la maintenance, mais impose une dépendance forte à l’infrastructure Cloudflare et à ses limites tarifaires.