Planifications
L'écran Planifications vous permet d'exécuter un agent selon une expression cron, dans un fuseau horaire, avec une entrée fixe, puis de modifier, mettre en pause ou supprimer ces planifications. Chemin dans le portail : /agents/schedules. Les développeurs, les responsables d'application et les administrateurs du tenant gèrent les planifications de leurs agents. L'écran est dessiné par portal/src/screens/agents.tsx.
Ce que montre l'écran
- Tableau Planifications, lu par
GET /v1/schedules(toutes les planifications du tenant en un appel, les plus anciennes d'abord). Colonnes : Identifiant, Identifiant d'agent, Cron, Fuseau horaire, Activé, Prochaine exécution, Dernière exécution. - Liste vide : Aucune planification, avec l'aide Exécutez un agent chaque jour, semaine ou mois. et le bouton Nouvelle planification.
- Le menu de ligne Voir le détail affiche tous les champs de la ligne dans un panneau latéral (l'API n'a pas de route de détail pour une planification).
- Nouvelle planification ouvre un panneau latéral avec les champs Identifiant d'agent (obligatoire), Cron (obligatoire, exemple
0 8 * * 1-5), Fuseau horaire (défautEurope/Paris), Entrée (JSON, défaut{}), Activé (coché par défaut).
Actions
| Bouton ou action | Ce qu'il fait | Appel d'API | Rôles |
|---|---|---|---|
| Actualiser (icône) | Recharge la liste. | GET /v1/schedules | Tout membre du tenant |
| Nouvelle planification | Crée la planification ; le Control Plane vérifie l'expression cron et le fuseau horaire et calcule la prochaine exécution. | POST /v1/schedules | tenant_admin, developer, application_owner |
| Menu Voir le détail | Affiche la ligne dans un panneau latéral. | Aucun | Tout membre du tenant |
| Menu Modifier | Formulaire Cron (obligatoire) et Activé, envoyé par Modifier. Décochez Activé pour mettre la planification en pause. | PATCH /v1/schedules/{schedule_id} | tenant_admin, developer, application_owner |
| Menu Supprimer | Ouvre Confirmer une action destructive ; saisissez l'identifiant de la planification, puis Confirmer. | GET /v1/lineage/graph, puis DELETE /v1/schedules/{schedule_id} | tenant_admin, developer, application_owner |
| Réessayer (état d'erreur) | Relance la lecture qui a échoué. | Même appel | Mêmes rôles |
Le formulaire Nouvelle planification envoie ce corps :
{"agent_id": "invoice-assistant", "cron": "0 8 * * 1-5", "timezone": "Europe/Paris", "input": {}, "enabled": true}
0 8 * * 1-5 exécute l'agent à 08:00, du lundi au vendredi, dans le fuseau horaire choisi.
Rôles
Le portail ne masque aucun bouton. Dans services/control-plane/src/eai/domains/agents/routes.py, la création, la modification et la suppression contrôlent WRITE_ROLES (tenant_admin, developer, application_owner, définis dans services/control-plane/src/eai/domains/agents/kit.py) ; la liste demande seulement un tenant. platform_admin passe tous les contrôles de rôle. L'exécution lancée par une planification suit les mêmes règles que toute exécution : l'agent doit être actif et dans ses budgets.
Tâches courantes
Exécuter un agent chaque jour ouvré
- Trouver l'agent. Une planification vise un seul agent. Copiez son identifiant ou son nom depuis le Registre. Résultat attendu : vous avez la référence de l'agent. En cas d'échec : si l'agent manque, enregistrez-le d'abord.
- Créer la planification. L'expression cron fixe le rythme. Cliquez sur Nouvelle planification, remplissez Identifiant d'agent, saisissez
0 8 * * 1-5dans Cron, gardez ou changez le Fuseau horaire, ajoutez une Entrée si l'agent en a besoin, puis cliquez sur Créer. Résultat attendu : le message Créé et une ligne avec sa Prochaine exécution. En cas d'échec :invalid_cron(422) donne la raison, corrigez l'expression ou le fuseau ;scheduler_unavailable(503) signifie que le moteur de planification Temporal a refusé la planification, contactez l'équipe plateforme. - Vérifier la première exécution. Le planificateur lance l'exécution à la date suivante. Après cette heure, ouvrez l'écran Exécutions. Résultat attendu : une nouvelle exécution de l'agent ; la planification affiche une Dernière exécution. En cas d'échec : vérifiez que Activé est coché et que l'agent est actif dans le Registre.
Mettre une planification en pause
- La modifier. La pause garde la planification pour plus tard. Dans le menu de ligne, cliquez sur Modifier, décochez Activé, puis cliquez sur Modifier. Résultat attendu : le message Terminé et Activé décoché dans la ligne. En cas d'échec :
schedule_not_found(404) signifie que la planification a été supprimée entre-temps ; cliquez sur Actualiser.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
invalid_cron (422) : « Expression cron invalide : ... » | L'expression ou le fuseau horaire n'est pas valide. | Utilisez cinq champs (minute, heure, jour, mois, jour de semaine) et un fuseau IANA comme Europe/Paris. |
agent_not_found (404) sur Créer | Identifiant d'agent ne désigne aucun agent du tenant. | Copiez l'identifiant ou le nom depuis le Registre. |
schedule_not_found (404) | La planification n'existe plus. | Cliquez sur Actualiser. |
scheduler_unavailable (503) sur Créer ou Modifier | Le moteur de planification Temporal est configuré mais ne répond pas. | Demandez à l'équipe plateforme de vérifier le service Temporal, puis recommencez. |
forbidden (403) avec required_roles | Vos rôles ne sont pas tenant_admin, developer ou application_owner. | Demandez l'un de ces rôles à un administrateur du tenant. |
| JSON invalide sous Entrée | L'entrée n'est pas du JSON valide. | Corrigez le JSON, par exemple {}. |
| Aucune nouvelle exécution à l'heure prévue | Activé est décoché, ou l'agent est suspendu ou arrêté et ses nouvelles exécutions sont refusées. | Cochez Activé, ou reprenez l'agent. |