Salta el contingut

Pràctica 4: Integració de Serveis

Objectiu

Crear un sistema d'automatització complet que integri serveis reals (Gmail, APIs externes, Google Sheets) demostrant el domini dels quatre blocs del curs.

Enunciat

Crea un sistema de gestió d'incidències automatitzat amb n8n. El sistema ha de tenir dues parts:

Part A: Recepció d'incidències via Webhook

Crea un workflow P4A - Recepció Incidències [nom] que:

  1. Rebi incidències via webhook (POST /webhook/incidències)
  2. Validi les dades rebudes:
  3. Camps obligatoris: títol, severitat (baixa/mitjana/alta), reporter_email
  4. Si falten camps: respon 400 Bad Request amb missatge d'error
  5. Generi un ID únic per a cada incidència (INC-YYYY-NNNNN)
  6. Classifiqui per severitat:
  7. Alta: envia correu urgent al reporter i notifica a Google Chat
  8. Mitjana: envia correu de confirmació al reporter
  9. Baixa: només registra (sense notificació immediata)
  10. Registri totes les incidències a un Google Sheet amb:
  11. ID, títol, severitat, reporter_email, data/hora, estat (obert)
  12. Respongui 201 Created amb les dades de la incidència creada
flowchart TD
    A[POST /webhook/incidencies] --> B{Validar\ndades}
    B -->|Invalid| ERR[Respond 400\nmissatge error]
    B -->|Valid| C[Code\nGenerar ID]
    C --> D{Switch\nseveritat}
    D -->|Alta| E[Gmail\nCorreu urgent] --> H[Google Chat\nNotificacio]
    D -->|Mitjana| F[Gmail\nCorreu confirmacio]
    D -->|Baixa| G[Set\nnomes registre]
    E --> I[Merge]
    F --> I
    G --> I
    H --> I
    I --> J[Google Sheets\nRegistrar incidencia]
    J --> K[Respond 201\nJSON incidencia]

Part B: Informe setmanal automatitzat

Crea un workflow P4B - Informe Setmanal [nom] que:

  1. S'executi cada dilluns a les 9:00
  2. Llegeixi totes les incidències del Google Sheet
  3. Calculi estadistiques de la setmana anterior:
  4. Total d'incidències
  5. Per severitat (baixa, mitjana, alta)
  6. Temps mitjà de resolució (si tens el camp "data_tancament")
  7. Enviï un correu amb el resum setmanal en format HTML
  8. Notifiqui a Google Chat amb un resum breu

Específicacions tecniques

Estructura del Google Sheet

Crea un Google Sheet amb el nom Incidències n8n [el-teu-nom] amb les columnes:

ID Títol Severitat Reporter Data creació Data tancament Estat

Format de les peticions al webhook

{
  "titol": "Servidor de produccio no respon",
  "severitat": "alta",
  "reporter_email": "alumne@example.com",
  "descripcio": "El servidor web porta 10 minuts sense respondre"
}

Format del correu de notificació per alta severitat

Assumpte: [URGENT] Nova incidencia: INC-2025-00001 - Servidor de produccio no respon

Benvolgut/da,

S'ha obert una nova incidencia de severitat ALTA:

ID: INC-2025-00001
Titol: Servidor de produccio no respon
Reporter: alumne@example.com
Data/Hora: 15/01/2025 09:35:00

Descripció: El servidor web porta 10 minuts sense respondre

Si us plau, actua amb urgencia.

Proves que has de realitzar

Documenta la prova de cadascuna d'aquestes peticions:

# Incidencia d'alta severitat
curl -X POST http://localhost:5678/webhook/incidencies \
  -H "Content-Type: application/json" \
  -d '{"titol":"Fallada servidor","severitat":"alta","reporter_email":"tu@example.com"}'

# Incidencia de severitat baixa
curl -X POST http://localhost:5678/webhook/incidencies \
  -H "Content-Type: application/json" \
  -d '{"titol":"Slow query a BD","severitat":"baixa","reporter_email":"tu@example.com"}'

# Peticio invalida (sense camp obligatori)
curl -X POST http://localhost:5678/webhook/incidencies \
  -H "Content-Type: application/json" \
  -d '{"titol":"Test sense email"}'

Lliurament

Lliura al campus virtual:

  • Fitxers JSON dels dos workflows exportats
  • Captures de pantalla dels dos workflows (canvas complet)
  • Captures de les execucions de les tres proves (alta, baixa, invàlida)
  • Captura del Google Sheet amb almenys 3 incidències registrades
  • Captura del correu rebut per a la incidència d'alta severitat
  • (Opcional) Captura de la notificació a Google Chat
  • Document de reflexió (max 2 pàgines):
  • Descripció de les decisions de disseny
  • Dificultats trobades i com les has resolt
  • Que afegiries per fer el sistema més robust
  • Que has après durant el curs

Rúbrica d'avaluació PRN8N04

Criteri Insuficient (0-4) Suficient (5-6) Notable (7-8) Excel·lent (9-10)
Webhook funcional No respon Respon però sense validació Respon amb validació bàsica Validació completa i resposta estructurada
generació de ID Absent Format incorrecte Format correcte Format correcte i únic
Classificació severitat Absent o incorrecta 1-2 branques Totes les branques Totes les branques amb contingut personalitzat
Integració Gmail Absent Envia correus sense format Correus amb contingut correcte Correus amb HTML i camp personalitzat
Google Sheets Absent Registra però sense tots els camps Tots els camps Tots els camps i formatat
Informe setmanal Absent Executa sense errors Càlculs correctes Càlculs correctes, bon format i notificació
documentació Absent Molt breu Adequada Detallada amb reflexió crítica

Consell per a l'excel·lència

Per anar més enllà, afegeix un sistema de tancament d'incidències: un segon webhook (POST /webhook/incidències/{id}/tancar) que actualitzi l'estat i la data de tancament al Google Sheet.