# FLOWDESK — démonstration Yovareli

Une application fictive pour montrer une automatisation réelle de qualification de briefs. Aucun client réel, aucun outil tiers, aucun envoi de message. Les seuils budgétaires sont illustratifs et ne sont pas une grille commerciale de Yovareli.

## Essayer dans le navigateur

Ouvrir `index.html`. Choisir un exemple, modifier les champs JSON ou les règles, puis exécuter le flux. Le traitement effectue quatre étapes réelles :

1. Validation stricte du schéma et des références uniques.
2. Calcul du score par composantes explicites.
3. Routage selon le budget et le score.
4. Création d’un brouillon par modèle de texte local.

Le résultat affiche sa justification et peut être exporté en JSON ou CSV. Le bouton Réinitialiser interrompt une exécution en cours et efface tous les résultats. Les exports JSON conservent les règles effectivement utilisées lors du calcul, même si les champs sont modifiés ensuite.

Il n’y a aucune dépendance d’exécution, aucun cookie, aucun stockage persistant ni aucun appel API. Les données sont conservées en mémoire dans l’onglet jusqu’à la réinitialisation ou sa fermeture. Les imports sont lus localement, sans téléversement. N’utilisez que des données fictives, sans informations personnelles.

## Exécuter le même moteur avec Node.js

Node.js 18 ou plus récent suffit. Aucune installation npm.

```sh
node cli.cjs exemples.json resultats.json regles.json
node test-engine.cjs
```

`engine.js` est le même moteur que celui utilisé dans l’interface. La CLI lit le JSON, applique les règles et écrit un fichier local ; elle ne se connecte à aucun service.

## Contrat de données

Un objet ou un tableau de 1 à 20 objets. Chaque objet contient exactement :

| Champ | Valeur attendue |
| --- | --- |
| `ref` | 3 à 24 caractères : majuscules, chiffres et tirets ; unique dans le lot |
| `type` | `vitrine`, `ecommerce`, `branding`, `seo`, `video` ou `automation` |
| `budget` | Nombre entre 0 et 1 000 000 ; euros fictifs |
| `deadlineDays` | Entier de 1 à 365 jours |
| `brief` | Texte de 10 à 2 000 caractères |

Les champs supplémentaires, dont les coordonnées personnelles, sont refusés. La limite d’import de l’interface est de 50 Ko.

## Score et routage

Le score est la somme de quatre composantes ; il n’est ni un indicateur d’intelligence artificielle, ni une mesure de succès commercial :

- Service privilégié (sélection modifiable) : 30 points ; autre service reconnu : 20.
- Budget supérieur ou égal au seuil prioritaire : 35 points ; supérieur ou égal au minimum : 20 ; sinon : 0.
- Délai inférieur ou égal au seuil urgent : 20 points ; sinon : 10.
- Brief de 120 caractères ou plus : 15 points ; sinon : 5.

Routage, dans cet ordre :

1. Sous le budget minimum : **hors périmètre**, quel que soit le score.
2. Budget au seuil prioritaire et score au seuil prioritaire : **prioritaire**.
3. Autres demandes conformes : **à clarifier**.

Les règles par défaut (service privilégié : site vitrine ; 800 €, 2 500 €, 21 jours, 80 points) produisent les trois parcours avec les exemples fournis. Les réponses sont des brouillons de modèles textuels, sans recours à une IA distante. Un humain reste nécessaire pour juger du périmètre et approuver un véritable message.

## Fichiers et limites

- `index.html`, `style.css`, `app.js` : interface locale responsive.
- `engine.js` : moteur partagé.
- `cli.cjs` : exécution en ligne de commande.
- `exemples.json`, `regles.json`, `resultats-exemple.json` : entrées, configuration et sortie réelles.
- `test-engine.cjs` et `TESTS.md` : tests et rapport.

Ce projet démontre une logique d’automatisation exécutable. Il n’intègre pas de CRM, de messagerie, de base de données, de calendrier ou de compte n8n/Make. Aucun taux de conversion ou gain de temps fictif n’est affiché. Pour un usage en production, il faudrait définir avec l’équipe les règles, validations humaines, accès et intégrations adaptés.

## Création et crédits

Conception, rédaction, interface et moteur originaux pour le portfolio Yovareli. Illustrations du routage et icône créées en CSS/SVG ; aucune photographie, police distante ou ressource tierce n’est utilisée.
