HARA_E2E_Workflow

Avancé

Ceci est unEngineering, AI Summarizationworkflow d'automatisation du domainecontenant 16 nœuds.Utilise principalement des nœuds comme ConvertToFile, ManualTrigger, ReadWriteFile, Agent, ExtractFromFile. Automatiser la conformité ISO 26262 pour l'analyse de sécurité automobile avec GPT-4

Prérequis
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "Z59iv0jcVPieE4iB",
  "meta": {
    "instanceId": "e23a10c38a84aff056a546290ab44e4d0883223400a2378b1f2a9dd2f5a8af2a",
    "templateCredsSetupCompleted": true
  },
  "name": "HARA_E2E_workflow",
  "tags": [
    "safety",
    "ISO26262",
    "AI"
  ],
  "nodes": [
    {
      "id": "5d95ae17-a4aa-416d-9603-129e65f90f1c",
      "name": "Lors du clic sur 'Exécuter le flux de travail'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -680,
        -120
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7a74d970-30f9-4256-bba1-4dd586a7a2a5",
      "name": "Agent IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -120,
        -120
      ],
      "parameters": {
        "text": "=const description = {{ $json.data }}.binary.data.toString('utf-8');\\nconst prompt = `Analyze this system for hazards:\\n${description}\\n\\nOutput:\\n1. 5 potential hazards\\n2. Likely root causes\\n3. ISO 26262 relevant clauses`;\\nreturn [{ json: { prompt } }];",
        "options": {
          "systemMessage": "You are a helpful FuSA assistant"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "3682f8df-16a8-4ec5-83ee-cb99121497f3",
      "name": "AI_Hazard_Analysis",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        480,
        300
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "vrJ0hwKixLk44aS4",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7ed4df13-d81e-4426-9607-de7cefaa5fb0",
      "name": "Une fenêtre de mémoire simple",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1560,
        320
      ],
      "parameters": {
        "sessionKey": "={{ $execution.id }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 20
      },
      "typeVersion": 1.3
    },
    {
      "id": "b8e8ff87-3675-4036-8738-31dc1e8e73b5",
      "name": "Lire Systems_Description",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        -480,
        -120
      ],
      "parameters": {
        "options": {},
        "fileSelector": "/data/inputs/1_hazard_identification/systems_description.txt"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "328cd6cc-0d09-460a-98ad-ef23f1f550ca",
      "name": "Convertir l'entrée en données binaires",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -280,
        -120
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "b262dce7-2db9-4f54-a418-534abde45bbc",
      "name": "Convertir en fichier",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        220,
        -120
      ],
      "parameters": {
        "options": {},
        "operation": "toText",
        "sourceProperty": "output"
      },
      "typeVersion": 1.1
    },
    {
      "id": "5359da29-26c1-492d-90ab-a8494d809e29",
      "name": "Potential_risks_report.txt",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        440,
        -120
      ],
      "parameters": {
        "options": {
          "append": false
        },
        "fileName": "=/data/outputs/1_hazard_identification/Report_Hazard Identification.txt_{{ $now.toString() }}",
        "operation": "write"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "cddc0b4a-cfdf-4a62-bbe5-a80a6407657a",
      "name": "Update_risk_estimation_report",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        1400,
        -120
      ],
      "parameters": {
        "options": {
          "append": false
        },
        "fileName": "=/data/outputs/2_risk_estimation/Report_Risk_Estimation.txt_{{ $now.toString() }}",
        "operation": "write"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "d2137c3b-003f-46b6-8b2c-0ab84fd7de52",
      "name": "Agent IA1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        860,
        -120
      ],
      "parameters": {
        "text": "=const description = \"### Hazards to Analyze:\\n\\t{{ $json.data }}\"",
        "options": {
          "systemMessage": "Act as a functional safety expert. Analyze these hazards and estimate risk per ISO 26262 (S/E/C). \\n\\tAct as a functional safety expert. Analyze these hazards and estimate risk per ISO 26262 (S/E/C):\\n\\t\\n\\t### Input Hazards:\\n\\t{Insert hazard list from file (1-5)}\\n\\t\\n\\t### Task:\\n\\t1. **Severity (S)**: Assign S0-S3 based on potential injury:\\n\\t\\t- S0: No injuries\\n\\t\\t- S1: Light-moderate injury\\n\\t\\t- S2: Severe/life-threatening injury\\n\\t\\t- S3: Fatalities\\n\\t\\n\\t2. **Exposure (E)**: Rate E0-E4 for scenario probability:\\n\\t\\t- E0: Incredibly unlikely\\n\\t\\t- E1: Very low (≤1% of operating time)\\n\\t\\t- E2: Low (≤10%)\\n\\t\\t- E3: Medium (≤50%)\\n\\t\\t- E4: High (>50%)\\n\\t\\n\\t3. **Controllability (C)**: Classify C0-C3:\\n\\t\\t- C0: Controllable by most drivers\\n\\t\\t- C1: Controllable by average drivers\\n\\t\\t- C2: Difficult to control\\n\\t\\t- C3: Uncontrollable\\n\\t\\n\\t### Output Format:\\n\\tFor each hazard, provide:\\n\\t1. [Hazard ID] | [Hazard Description]\\n\\t2. **Rating**: S[value]-E[value]-C[value]\\n\\t3. **ASIL**: QM/A/B/C/D (per ISO 26262 Table 6)\\n\\t4. **Rationale**: 1-sentence justification\\n\\t\\n\\t### Example Output:\\n\\t1. HZ-01 | False automatic braking triggered by debris\\n\\t\\t- **Rating**: S2-E3-C1\\n\\t\\t- **ASIL**: B\\n\\t\\t- **Rationale**: Sudden braking could cause rear-end collisions (S2), occurs in urban areas (E3), but drivers often regain control (C1).\\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "4db38299-87c5-45df-98bd-f91dbcec829b",
      "name": "Convertir l'entrée en données binaires1",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        640,
        -120
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "9d303ef5-da40-485c-8d5e-4d568fcb67f9",
      "name": "Convertir en fichier1",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1180,
        -120
      ],
      "parameters": {
        "options": {},
        "operation": "toText",
        "sourceProperty": "output"
      },
      "typeVersion": 1.1
    },
    {
      "id": "4a382915-1e35-4b40-acfd-d04a1ef4e3e2",
      "name": "Risks_mitigation.txt",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        2320,
        -120
      ],
      "parameters": {
        "options": {
          "append": false
        },
        "fileName": "=/data/outputs/3_mitigation_strategy/Report_Risk_mitigation.txt_{{ $now.toString() }}",
        "operation": "write"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "b7a292b2-277e-4831-ad6f-ce689070e926",
      "name": "Agent IA2",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1780,
        -120
      ],
      "parameters": {
        "text": "=Generate ISO 26262-compliant mitigation strategies for these ASIL-rated hazards:\\n\\n{{$json.data}}",
        "options": {
          "systemMessage": "**Role**: Functional Safety Engineer (ISO 26262 Expert)  \n**Task**: Generate technical and process mitigations for ASIL-rated hazards for each hazard.  \n**Input**: Hazard list with S/E/C ratings and ASIL classifications  \n\n---\n\n### **Rules for Mitigation Design**\n1. **ASIL-Driven Controls**:\n   - ASIL D: Mandatory hardware redundancy + SIL-4 software  \n   - ASIL C: One safety mechanism + SIL-3 software  \n   - ASIL B: Diagnostic monitoring + SIL-2  \n   - ASIL A/QM: Warning systems or procedural controls  \n\n2. **Mitigation Types**:\n   - **Technical**:  \n     - Redundancy (e.g., dual-channel sensors)  \n     - Monitoring (e.g., heartbeat checks)  \n     - Diversity (e.g., heterogeneous algorithms)  \n   - **Process**:  \n     - Testing (e.g., 100% MC/DC coverage)  \n     - Documentation (e.g., safety case evidence)  \n     - Maintenance (e.g., OTA update protocols)  \n\n3. **ISO 26262 Alignment**:  \n   - Clause 5: Hardware qualification  \n   - Clause 6: Software safety requirements  \n   - Clause 7: Verification and validation  \n\n---\n\n### **Output Format**\n```markdown\n### [Hazard ID] | [Hazard Description] (ASIL X)\n- **Technical Controls**:\n  1. [Solution 1] (ISO 26262-[Clause]-[Section])  \n     - *Rationale*: [1-sentence justification]  \n  2. [Solution 2]  \n     - *Rationale*: [1-sentence justification]  \n- **Process Controls**:  \n  - [Measure] (ISO 26262-[Clause]-[Section])  \n    - *Validation Method*: [Test/Review/Analysis]  \n\n**Traceability**: Links to [Hazard ID], [Risk Rating]  "
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "e7e2180f-9bcc-4ff3-a807-49ae2eba9ffd",
      "name": "Convertir l'entrée en données binaires2",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1620,
        -120
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "0be1af89-2253-4fe2-bf17-baf39b1c2730",
      "name": "Convertir en fichier2",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        2120,
        -120
      ],
      "parameters": {
        "options": {},
        "operation": "toText",
        "sourceProperty": "output"
      },
      "typeVersion": 1.1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "fc97d1e1-986b-4181-8ae7-a3054c97d3ba",
  "connections": {
    "7a74d970-30f9-4256-bba1-4dd586a7a2a5": {
      "main": [
        [
          {
            "node": "b262dce7-2db9-4f54-a418-534abde45bbc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d2137c3b-003f-46b6-8b2c-0ab84fd7de52": {
      "main": [
        [
          {
            "node": "9d303ef5-da40-485c-8d5e-4d568fcb67f9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b7a292b2-277e-4831-ad6f-ce689070e926": {
      "main": [
        [
          {
            "node": "0be1af89-2253-4fe2-bf17-baf39b1c2730",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b262dce7-2db9-4f54-a418-534abde45bbc": {
      "main": [
        [
          {
            "node": "5359da29-26c1-492d-90ab-a8494d809e29",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9d303ef5-da40-485c-8d5e-4d568fcb67f9": {
      "main": [
        [
          {
            "node": "cddc0b4a-cfdf-4a62-bbe5-a80a6407657a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0be1af89-2253-4fe2-bf17-baf39b1c2730": {
      "main": [
        [
          {
            "node": "4a382915-1e35-4b40-acfd-d04a1ef4e3e2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3682f8df-16a8-4ec5-83ee-cb99121497f3": {
      "ai_languageModel": [
        [
          {
            "node": "7a74d970-30f9-4256-bba1-4dd586a7a2a5",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "d2137c3b-003f-46b6-8b2c-0ab84fd7de52",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "b7a292b2-277e-4831-ad6f-ce689070e926",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "4a382915-1e35-4b40-acfd-d04a1ef4e3e2": {
      "main": [
        []
      ]
    },
    "7ed4df13-d81e-4426-9607-de7cefaa5fb0": {
      "ai_memory": [
        [
          {
            "node": "7a74d970-30f9-4256-bba1-4dd586a7a2a5",
            "type": "ai_memory",
            "index": 0
          },
          {
            "node": "d2137c3b-003f-46b6-8b2c-0ab84fd7de52",
            "type": "ai_memory",
            "index": 0
          },
          {
            "node": "b7a292b2-277e-4831-ad6f-ce689070e926",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "b8e8ff87-3675-4036-8738-31dc1e8e73b5": {
      "main": [
        [
          {
            "node": "328cd6cc-0d09-460a-98ad-ef23f1f550ca",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5359da29-26c1-492d-90ab-a8494d809e29": {
      "main": [
        [
          {
            "node": "4db38299-87c5-45df-98bd-f91dbcec829b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "328cd6cc-0d09-460a-98ad-ef23f1f550ca": {
      "main": [
        [
          {
            "node": "7a74d970-30f9-4256-bba1-4dd586a7a2a5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4db38299-87c5-45df-98bd-f91dbcec829b": {
      "main": [
        [
          {
            "node": "d2137c3b-003f-46b6-8b2c-0ab84fd7de52",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e7e2180f-9bcc-4ff3-a807-49ae2eba9ffd": {
      "main": [
        [
          {
            "node": "b7a292b2-277e-4831-ad6f-ce689070e926",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cddc0b4a-cfdf-4a62-bbe5-a80a6407657a": {
      "main": [
        [
          {
            "node": "e7e2180f-9bcc-4ff3-a807-49ae2eba9ffd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5d95ae17-a4aa-416d-9603-129e65f90f1c": {
      "main": [
        [
          {
            "node": "b8e8ff87-3675-4036-8738-31dc1e8e73b5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Ingénierie, Résumé IA

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds16
Catégorie2
Types de nœuds7
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur

A software professional with interest in building up DIY projects in embedded system software on bare-metal to POSIX compliant OS, with automation workflows on Arduinos, Raspberry Pi, STM32 controllers, ESPIf and so on

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34