--- title: Approval Workflow Hub url: https://blog.guigpap.com/fr/workflows/approval-workflow/ url_md: https://blog.guigpap.com/fr/workflows/approval-workflow.md category: automation date: '2026-03-28' maturite: production techno: - n8n - telegram - claude - docker application: - automation - operations --- # Approval Workflow Hub > Centralisation des demandes d'approbation multi-sources avec boutons Telegram ## 1. Quoi ? — Definition et contexte Mises a jour Docker, operations MCP critiques, remediations d'incidents — plusieurs workflows ont besoin d'une approbation humaine avant d'agir. Plutot que chacun reimplemente sa propre logique de validation, le **Approval Workflow Hub** centralise toutes les demandes dans un format uniforme avec des boutons Telegram [Approuver] / [Rejeter]. > **Note - Approbation humaine** > > Dans une infrastructure automatisee, certaines actions sont trop risquees pour etre executees sans validation : mettre a jour un service en production, supprimer un workflow, ou executer un script de remediation. L'approbation Telegram permet de valider depuis le mobile en un clic. ### Sources d'approbation | Source | Exemple | Callback | |--------|---------|----------| | **Docker DIUN** | Mise a jour image applicative | `notif_approve_` | | **MCP Gateway** | Ecriture workflow N8N | `mcp_approve_` | | **Incident Response** | Remediation automatique | `incident_execute_` | | **File Provider** | Rebuild image custom | `approve_file_` | --- ## 2. Pourquoi ? — Enjeux et motivations ### Problemes resolus | Probleme | Sans hub | Avec hub | |----------|----------|----------| | **Logique dupliquee** | Chaque workflow gere ses propres boutons | Format et stockage unifies | | **Pas de suivi** | Approbation perdue si Telegram plante | Data Table avec audit trail | | **Timeout silencieux** | Pas de reponse = rien ne se passe | Timeout configurable avec action par defaut | --- ## 3. Comment ? — Mise en oeuvre technique ### Architecture ```mermaid flowchart TD subgraph Sources["Sources de demande d'approbation"] direction TB Docker["Docker DIUN · update applicatif"] MCP["MCP Gateway · écriture workflow"] Incident["Incident Response · remédiation"] File["File Provider · rebuild custom"] end Hub["Approval Workflow Hub · normalisation"] DT["Data Table Pending Approvals · audit trail"] Notif["Notification Hub · Telegram boutons"] Wait["Wait for callback · timeout configurable"] Router{"Route by type"} ApproveDocker["SSH update command"] ApproveMCP["HTTP POST cli-ollama gateway"] ApproveIncident["Run remediation script"] ApproveFile["Trigger Docker rebuild"] Sources --> Hub --> DT --> Notif --> Wait --> Router Router --> ApproveDocker Router --> ApproveMCP Router --> ApproveIncident Router --> ApproveFile ``` Le hub normalise chaque demande en un format commun stocke dans la Data Table `Pending Approvals` : | Champ | Description | |-------|-------------| | `approval_id` | Identifiant unique | | `type` | claude / docker / incident / file_provider | | `source` | Workflow declencheur | | `context` | Payload contextuel (JSON) | | `callback_url` | URL de retour (pour MCP gateway) | | `status` | pending / approved / rejected / expired | Quand l'utilisateur clique sur un bouton, le callback est route par type : - **Docker** → Execute la commande SSH de mise a jour - **MCP** → HTTP POST vers le gateway cli-ollama - **Incident** → Lance le script de remediation - **File Provider** → Declenche le rebuild Docker > **Caution - Admin requis** > > Toutes les approbations necessitent le flag `is_admin = true` dans la table des utilisateurs autorises. Un utilisateur non-admin voit "Action reservee aux admins". --- ## 4. Et si ? — Perspectives et limites ### Limites actuelles | Limite | Impact | Mitigation | |--------|--------|------------| | **Single admin** | Un seul approbateur | Suffisant pour usage solo | | **Pas d'escalade** | Timeout = rien ne se passe | Notification de rappel prevue | ### Scenarios d'evolution **Si equipe** : - Approbation multi-signatures (2 admins sur 3) - Delegation temporaire (vacances) - Historique des approbations dans Grafana --- ## Pages liees ### Workflows - [Docker Auto-Updates](/fr/workflows/docker-updates/) — Approbations mises a jour - [Systeme Conversationnel](/fr/workflows/systeme-conversationnel/) — Confirmations MCP - [Notification Hub](/fr/workflows/notification-hub/) — Routage des demandes ### Infrastructure - [Security Stack](/fr/infrastructure/security-stack/) — Caddy bloque les webhooks externes ## Metadonnees agent - Cet article est issu du blog GuiGPaP Lab. - Contexte global du blog: https://blog.guigpap.com/llms.txt - Contact auteur: https://odoo.guigpap.com/mon-cv - Licence: CC-BY-SA 4.0