Planificateur « Suggérer » : 4 stratégies (smart / meilleurs d'abord / équilibré / juste ce qu'il faut), compétences+niveaux par tech (édition inline), niveau requis par compétence + par job, carte des tournées (1 couleur/tech, domicile→arrêts, sélecteur de jour), fenêtre de dispatch auj.+demain (dates sélectionnées), règle week-end + placeholder « en attente du quart », clustering + lasso + filtre-date sur la carte, accès rapide « À assigner » (badge). Boîte : liste /conversations allégée (45 Mo → ~1 Mo, 17×) + messages chargés à l'ouverture. Rapports : cache SWR sur revenue-explorer (22×). Session : keep-alive + timeout fetch global + authFetch durci → fin des rechargements manuels. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
54 lines
3.4 KiB
JavaScript
54 lines
3.4 KiB
JavaScript
// ── Taxonomie des conversations — SOURCE UNIQUE ───────────────────────────────
|
|
// Avant : le « type » d'une conversation vivait dans 4 endroits désynchronisables
|
|
// - TYPES + l'énumération du prompt IA → inbox-triage.js
|
|
// - QUEUE_OF (type→file) + QUEUES → conversation.js
|
|
// Conséquence réelle : `telephonie`/`television` existaient dans QUEUE_OF mais PAS
|
|
// dans TYPES → jamais produits par le triage (clés inertes). On centralise ici pour
|
|
// que toute évolution de catégorie se fasse à UN seul endroit.
|
|
//
|
|
// ⚠️ CONTRAT : le prompt système de `classifyEmail` (inbox-triage.js) énumère les
|
|
// valeurs de TYPES À LA MAIN (contrainte du modèle). Si tu ajoutes un type ici,
|
|
// ajoute-le AUSSI dans cette énumération du prompt, sinon le triage ne le produira pas.
|
|
|
|
// Les 4 FILES de l'inbox partagé (= labels F fiables, vs 30 départements).
|
|
const QUEUES = ['Facturations', 'Service à la clientèle', 'Supports', 'Technicien']
|
|
|
|
// Types de demande que le triage peut produire (doivent matcher l'énumération du prompt IA).
|
|
const TYPES = ['support', 'facturation', 'vente', 'installation', 'autre']
|
|
|
|
// type → FILE de routage. (telephonie/television : réservés — routent vers Technicien si un jour produits.)
|
|
const QUEUE_OF = {
|
|
facturation: 'Facturations',
|
|
vente: 'Service à la clientèle',
|
|
support: 'Supports',
|
|
installation: 'Technicien',
|
|
telephonie: 'Technicien',
|
|
television: 'Technicien',
|
|
autre: '',
|
|
}
|
|
|
|
// type → catégorie de TICKET (ERPNext Issue).
|
|
const CAT = { facturation: 'Facturation', vente: 'Commercial', installation: 'Installation', support: 'Support', autre: 'Autre' }
|
|
|
|
// issue_type (ERPNext Issue — 40+ valeurs héritées de F) → une des 4 FILES omnichannel. '' / absent = non classé.
|
|
// Sert « Mes départements » sur la page Tickets : un agent voit les tickets des files dont il est membre.
|
|
// Les 4 noms de files sont eux-mêmes des Issue Type valides (identité). Mapping éditable — affiner au besoin.
|
|
const ISSUE_TYPE_QUEUE = {
|
|
// → Facturations
|
|
Facturation: 'Facturations', Facturations: 'Facturations', Recouvrement: 'Facturations',
|
|
'Compte Payable': 'Facturations', Suspension: 'Facturations', 'Changement forfait': 'Facturations', Achat: 'Facturations',
|
|
// → Service à la clientèle
|
|
Vente: 'Service à la clientèle', 'Service à la clientèle': 'Service à la clientèle', 'Satisfaction client': 'Service à la clientèle',
|
|
'Rétention': 'Service à la clientèle', Representant: 'Service à la clientèle', Suivi: 'Service à la clientèle', Direction: 'Service à la clientèle',
|
|
// → Supports
|
|
Support: 'Supports', Supports: 'Supports', 'Support Informatique': 'Supports', 'Support COM': 'Supports',
|
|
'Sys Admin': 'Supports', 'Net Admin': 'Supports', ToDo: 'Supports', Projet: 'Supports', Developpement: 'Supports', Conception: 'Supports',
|
|
// → Technicien
|
|
Technicien: 'Technicien', Monteur: 'Technicien', Reparation: 'Technicien', Installation: 'Technicien', Desinstallation: 'Technicien',
|
|
'Téléphonie': 'Technicien', 'Reparation Fibre': 'Technicien', 'Installation Fibre': 'Technicien', Garage: 'Technicien',
|
|
Domotique: 'Technicien', Fusionneur: 'Technicien', Relais: 'Technicien', 'Télévision': 'Technicien', Inventaire: 'Technicien',
|
|
'Install/Reparation Télé': 'Technicien', Activation: 'Technicien',
|
|
}
|
|
|
|
module.exports = { QUEUES, TYPES, QUEUE_OF, CAT, ISSUE_TYPE_QUEUE }
|