Matrice complète Commandes × Groupes × Responsables × Risques :
Elle est directement exploitable dans GRCA100 / UGAIA© / AFEES©, et structurée pour intégration immédiate dans un tableau Excel, une fiche COMEX ou une infographie A3. Matrice “Audit Interne” automatisée avec exemple de la procédure en fin de ce document.
🧩 Matrice complète : Commandes × Groupes × Responsables × Risques
📌 Légende rapide
- Groupe = un des 13 groupes GRCA100
- Responsable = rôle maître du contrôle
- Risque = risque principal si la commande est mal exécutée ou non appliquée
🧱 1. Bloc STRUCTURE (Rôles, groupes, permissions)
| Commande | Groupe concerné | Responsable | Risques principaux |
|---|---|---|---|
| set-governance-policy | 106 Gouvernance | Responsable Gouvernance | Gouvernance floue, dérives, non‑conformité IA‑Act |
| create-group | 106 Gouvernance | Admin Communauté | Mauvaise segmentation, confusion des flux |
| set-role | 106 Gouvernance | Admin + Gouvernance | Accès inadaptés, escalade non maîtrisée |
| set-permission | 106 Gouvernance | Gouvernance + RSSI | Sur‑exposition des données, fuite d’information |
| assign-group-owner | 106 Gouvernance | Gouvernance | Absence de responsabilité, zones grises |
| set-escalation-path | 106 Gouvernance | Gouvernance + RSSI + DPO | Incidents non traités, retards, sanctions |
🔐 2. Bloc IDENTITÉS & ACCÈS
| Commande | Groupe concerné | Responsable | Risques principaux |
|---|---|---|---|
| add-member | Tous | Admin | Ajout non contrôlé, infiltration |
| remove-member | Tous | Admin | Accès résiduels, comptes dormants |
| promote-member | 106 / 111 | Gouvernance | Sur‑délégation, privilèges excessifs |
| demote-member | 106 | Gouvernance | Conflits, perte de traçabilité |
| audit-member | 105 Audit | RSSI + Audit | Actions non tracées, fraude interne |
| lock-account | 105 Audit | RSSI | Compromission persistante |
| rotate-keys | 109 Installations Techniques | RSSI + Tech Lead | Clés compromises, accès illégitimes |
🛡️ 3. Bloc SÉCURITÉ & CONFORMITÉ
| Commande | Groupe concerné | Responsable | Risques principaux |
|---|---|---|---|
| enable-logging | 109 Installations Techniques | Tech Lead | Absence de preuves, impossibilité d’audit |
| set-data-classification | 107 Réglementaire & Juridique | DPO | Traitement illégal, fuite de données |
| set-retention-policy | 107 | DPO | Non‑conformité RGPD, sanctions |
| enable-audit-mode | 105 Audit | RSSI + Audit | Absence de traçabilité, IA non contrôlée |
| run-compliance-check | 112 Matrices | Audit + Gouvernance | Non‑conformité IA‑Act / RGPD |
| set-risk-level | 112 Matrices | Gouvernance + COMEX | Mauvaise catégorisation des systèmes IA |
⚙️ 4. Bloc TECHNIQUE (Docker, API, Monitoring)
| Commande | Groupe concerné | Responsable | Risques principaux |
|---|---|---|---|
| deploy-service | 109 Installations Techniques | Tech Lead | Déploiement instable, faille de config |
| restart-service | 109 | Tech Lead | Interruption de service |
| check-health | 109 | Tech Lead | Détection tardive des incidents |
| update-container | 109 | Tech Lead | Vulnérabilités non corrigées |
| scan-vulnerabilities | 105 Audit Cybersécurité | RSSI | Exploitation de failles |
| export-logs | 105 / 109 | RSSI + Audit | Perte de preuves, logs incomplets |
| generate-report | 111 COMEX | Gouvernance + Audit | Mauvaise décision stratégique |
🔄 5. Bloc FLUX & REPORTING
| Commande | Groupe concerné | Responsable | Risques principaux |
|---|---|---|---|
| define-workflow | 108 Ateliers & Conférences | Gouvernance | Processus incohérents, erreurs humaines |
| map-flows | 104 Architectures G10 | Architecte | Flux non maîtrisés, fuite de données |
| publish-dashboard | 111 COMEX | Gouvernance + COMEX | Mauvaise visibilité, décisions biaisées |
| schedule-review | 106 Gouvernance | Gouvernance | Absence de revue, dérive progressive |
📚 6. Bloc DOCUMENTATION & TRAÇABILITÉ
| Commande | Groupe concerné | Responsable | Risques principaux |
|---|---|---|---|
| create-governance-record | 103 Communication | Gouvernance | Absence de preuve documentaire |
| update-governance-record | 103 | Gouvernance | Versions contradictoires |
| archive-record | 103 | Gouvernance + DPO | Perte d’historique, non‑conformité |
| validate-matrix | 112 Matrices | Audit + Gouvernance | Matrices non fiables |
| publish-guideline | 103 Communication | Gouvernance | Mauvaise diffusion, non‑application |
🎯 Synthèse COMEX (ultra‑condensée)
| Domaine | Commandes clés | Risque majeur |
|---|---|---|
| Structure | set-governance-policy, set-role | Gouvernance faible |
| Identités | add/remove-member, rotate-keys | Compromission |
| Sécurité | enable-logging, audit-mode | Absence de preuves |
| Technique | deploy-service, update-container | Vulnérabilités |
| Flux | define-workflow, dashboards | Mauvaise décision |
| Documentation | validate-matrix, archive | Non‑conformité |
Version “Audit Interne” :
C’est‑à‑dire la matrice opérationnelle, pondérée, scorable, RACI‑ready, directement exploitable dans GRCA100 / UGAIA / Guild4AI / AFEES.
C’est la version qui est a utiliser pour :
- piloter un audit interne,
- mesurer la maturité,
- identifier les risques,
- générer un plan d’action,
- produire un reporting COMEX.
Ici la structure premium, prête à injecter dans ton Excel automatisé ou dans ton pipeline PowerShell.
🧩 Matrice “Audit Interne” – Commandes × Groupes × RACI × Risques × Scoring
📌 Colonnes standardisées (format GRCA100 Audit Interne)
Voici la structure exacte que tu vas utiliser :
- Commande
- Groupe
- RACI (R = Responsable, A = Accountable, C = Consulted, I = Informed)
- Risque principal
- Criticité (1–5)
- Probabilité (1–5)
- Score Risque = Criticité × Probabilité
- Preuves attendues
- Actions correctives
- Délai
- Statut
🧱 1. Bloc STRUCTURE
| Commande | Groupe | RACI | Risque | Crit. | Prob. | Score | Preuves | Actions |
|---|---|---|---|---|---|---|---|---|
| set-governance-policy | 106 Gouvernance | R: Gouvernance / A: COMEX / C: RSSI / I: Tous | Gouvernance floue | 5 | 3 | 15 | Politique validée, versionnée | Formaliser, publier, diffuser |
| set-role | 106 | R: Gouvernance | Accès inadaptés | 4 | 3 | 12 | Registre des rôles | Revue trimestrielle |
| set-permission | 106 | R: Gouvernance / C: RSSI | Sur‑exposition | 5 | 4 | 20 | Matrice des permissions | Réduire privilèges |
| assign-group-owner | 106 | R: Gouvernance | Absence de responsabilité | 4 | 2 | 8 | Nomination officielle | Désigner un owner |
🔐 2. Bloc IDENTITÉS & ACCÈS
| Commande | Groupe | RACI | Risque | Crit. | Prob. | Score | Preuves | Actions |
|---|---|---|---|---|---|---|---|---|
| add-member | Tous | R: Admin | Infiltration | 5 | 2 | 10 | Journal d’ajout | Validation double |
| remove-member | Tous | R: Admin | Accès résiduels | 5 | 4 | 20 | Registre des départs | Désactivation immédiate |
| rotate-keys | 109 | R: RSSI | Clés compromises | 5 | 3 | 15 | Preuve rotation | Automatiser rotation |
🛡️ 3. Bloc SÉCURITÉ & CONFORMITÉ
| Commande | Groupe | RACI | Risque | Crit. | Prob. | Score | Preuves | Actions |
|---|---|---|---|---|---|---|---|---|
| enable-logging | 109 | R: Tech Lead / C: RSSI | Absence de preuves | 5 | 4 | 20 | Logs Loki/Grafana | Activer logging complet |
| enable-audit-mode | 105 | R: Audit | IA non contrôlée | 5 | 3 | 15 | Mode audit actif | Activer systématiquement |
| run-compliance-check | 112 | R: Audit | Non‑conformité IA‑Act | 5 | 3 | 15 | Matrices validées | Revue mensuelle |
⚙️ 4. Bloc TECHNIQUE
| Commande | Groupe | RACI | Risque | Crit. | Prob. | Score | Preuves | Actions |
|---|---|---|---|---|---|---|---|---|
| deploy-service | 109 | R: Tech Lead | Déploiement instable | 4 | 3 | 12 | Logs déploiement | Standardiser |
| update-container | 109 | R: Tech Lead | Vulnérabilités | 5 | 4 | 20 | Versioning images | Mettre à jour |
| scan-vulnerabilities | 105 | R: RSSI | Exploitation de failles | 5 | 3 | 15 | Rapport scan | Corriger failles |
🔄 5. Bloc FLUX & REPORTING
| Commande | Groupe | RACI | Risque | Crit. | Prob. | Score | Preuves | Actions |
|---|---|---|---|---|---|---|---|---|
| define-workflow | 108 | R: Gouvernance | Processus incohérents | 4 | 3 | 12 | Workflow documenté | Normaliser |
| publish-dashboard | 111 | R: Gouvernance | Mauvaise décision | 5 | 2 | 10 | Dashboard publié | Vérifier données |
📚 6. Bloc DOCUMENTATION
| Commande | Groupe | RACI | Risque | Crit. | Prob. | Score | Preuves | Actions |
|---|---|---|---|---|---|---|---|---|
| validate-matrix | 112 | R: Audit | Matrices non fiables | 5 | 3 | 15 | Matrice validée | Revue mensuelle |
| archive-record | 103 | R: Gouvernance / DPO | Perte d’historique | 4 | 2 | 8 | Archive versionnée | Archiver |
🎯 Synthèse Audit Interne (format COMEX)
3 commandes critiques (Score ≥ 20)
- set-permission
- remove-member
- enable-logging
- update-container
Risques majeurs
- Sur‑exposition des données
- Absence de preuves d’audit
- Vulnérabilités non corrigées
- Accès résiduels
Actions prioritaires
- Revue des permissions
- Rotation des clés
- Activation logging complet
- Mise à jour des conteneurs
Le mode opérationnel.
🧩 Objectif
Un script PowerShell qui :
- définit la matrice Audit Interne (Commandes × Groupes × RACI × Risques × Scoring)
- calcule automatiquement le Score
- exporte en CSV ou Excel‑ready (pour ton pipeline existant)
🧾 Script PowerShell – Matrice “Audit Interne” automatisée
# ================================ # GRCA100 - Matrice Audit Interne # Commandes × Groupes × RACI × Risques × Scoring
# Erol GIRAUDY v5 2026 avril 17
# Tests fonctionnels valides # ================================$source = "C:\Users\xxxxx\Matrice_AuditInterne_GRCA100.csv" $clean = "C:\Users\xxxxx\Matrice_AuditInterne_GRCA100_clean.csv" $xlsx = "C:\Users\xxxxx\Matrice_AuditInterne_GRCA100.xlsx" $pdf = "C:\Users\xxxxx\Matrice_AuditInterne_GRCA100_COMEX.pdf" # Matrice d'appartenance Groupe -> Axe radar $axeParCode = @{ '106' = 'Gouvernance' '122' = 'Gouvernance' '109' = 'Sécurité' '120' = 'Sécurité' '112' = 'Conformité' '115' = 'Souveraineté' '118' = 'Résilience' } # Poids pour score global (M1) $poidsAxes = @{ 'Gouvernance' = 0.30 'Sécurité' = 0.25 'Conformité' = 0.20 'Souveraineté' = 0.15 'Résilience' = 0.10 } # ------------------------------------------------------------ # 1. Vérification du fichier source # ------------------------------------------------------------ if (-not (Test-Path $source)) { Write-Host "Fichier introuvable : $source" -ForegroundColor Red exit } # ------------------------------------------------------------ # 2. Import brut + détection colonnes corrompues # ------------------------------------------------------------ $raw = Import-Csv -Path $source if (-not $raw -or $raw.Count -eq 0) { Write-Host "Le CSV source est vide ou illisible." -ForegroundColor Red exit } $colCrit = ($raw[0].PSObject.Properties.Name | Where-Object { $_ -match "Critic" }) $colProb = ($raw[0].PSObject.Properties.Name | Where-Object { $_ -match "Prob" }) $colDelai = ($raw[0].PSObject.Properties.Name | Where-Object { $_ -match "D.l" }) # ------------------------------------------------------------ # 3. Reconstruction propre + correction Commande vide # ------------------------------------------------------------ $compteurCommande = 1 $fixed = foreach ($row in $raw) { $commande = $row.Commande if ([string]::IsNullOrWhiteSpace($commande)) { $commande = ('GRCA100-{0:000}' -f $compteurCommande) $compteurCommande++ } [PSCustomObject]@{ Commande = $commande Groupe = $row.Groupe R = $row.R A = $row.A C = $row.C I = $row.I Risque = $row.Risque Criticite = $row.$colCrit Probabilite = $row.$colProb Preuves = $row.Preuves Actions = $row.Actions Delai = if ($colDelai) { $row.$colDelai } else { $row.'Délai' } Statut = $row.Statut } } # ------------------------------------------------------------ # 4. Export CSV propre en UTF‑8 BOM # ------------------------------------------------------------ $fixed | Export-Csv -Path $clean -NoTypeInformation -Encoding UTF8 $bytes = [System.IO.File]::ReadAllBytes($clean) $bom = [byte[]](0xEF,0xBB,0xBF) [System.IO.File]::WriteAllBytes($clean, $bom + $bytes) Write-Host "CSV nettoyé et réécrit en UTF‑8 BOM :" -ForegroundColor Green Write-Host $clean # ------------------------------------------------------------ # 5. Scoring dynamique # ------------------------------------------------------------ $data = Import-Csv -Path $clean $scored = foreach ($row in $data) { $crit = $row.Criticite -as [int] $prob = $row.Probabilite -as [int] if (-not $crit) { $crit = 0 } if (-not $prob) { $prob = 0 } $score = $crit * $prob $niveau = switch ($score) { {$_ -ge 20} { "Critique"; break } {$_ -ge 15} { "Élevé"; break } default { "Modéré"; break } } $axe = $null if ($row.Groupe -and $axeParCode.ContainsKey($row.Groupe)) { $axe = $axeParCode[$row.Groupe] } [PSCustomObject]@{ Commande = $row.Commande Groupe = $row.Groupe AxeRadar = $axe R = $row.R A = $row.A C = $row.C I = $row.I Risque = $row.Risque Criticite = $crit Probabilite = $prob ScoreRisque = $score NiveauRisque = $niveau Preuves = $row.Preuves Actions = $row.Actions Delai = $row.Delai Statut = $row.Statut } } # ------------------------------------------------------------ # 6. Synthèse console # ------------------------------------------------------------ $nbCritiques = ($scored | Where-Object NiveauRisque -eq 'Critique').Count $nbEleves = ($scored | Where-Object NiveauRisque -eq 'Élevé').Count $nbModeres = ($scored | Where-Object NiveauRisque -eq 'Modéré').Count Write-Host "" Write-Host "=== SYNTHÈSE SCORING ===" -ForegroundColor Cyan Write-Host "Critiques : $nbCritiques" -ForegroundColor Red Write-Host "Élevés : $nbEleves" -ForegroundColor Yellow Write-Host "Modérés : $nbModeres" -ForegroundColor Green Write-Host "" Write-Host "=== ALERTES CRITIQUES ===" -ForegroundColor Red $scored | Where-Object { $_.ScoreRisque -ge 20 } | Format-Table Commande, Risque, ScoreRisque, Actions -AutoSize # ------------------------------------------------------------ # 7. Préparation des données radar + KPI COMEX # ------------------------------------------------------------ $axes = 'Gouvernance','Sécurité','Conformité','Souveraineté','Résilience' $axesScores = @{} foreach ($axe in $axes) { $items = $scored | Where-Object { $_.AxeRadar -eq $axe -and $_.ScoreRisque -gt 0 } if ($items.Count -gt 0) { $axesScores[$axe] = [math]::Round(($items | Measure-Object -Property ScoreRisque -Average).Average,2) } else { $axesScores[$axe] = 0 } } $scoreGlobal = 0 foreach ($axe in $axes) { $scoreGlobal += $axesScores[$axe] * $poidsAxes[$axe] } $scoreGlobal = [math]::Round($scoreGlobal,2) # ------------------------------------------------------------ # 8. Nettoyage Excel / fichiers existants # ------------------------------------------------------------ Get-Process excel -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue Start-Sleep -Milliseconds 300 if (Test-Path $xlsx) { Remove-Item $xlsx -Force; Start-Sleep -Milliseconds 200 } if (Test-Path $pdf) { Remove-Item $pdf -Force; Start-Sleep -Milliseconds 200 } # ------------------------------------------------------------ # 9. Excel : création des 3 onglets # ------------------------------------------------------------ $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false $wb = $excel.Workbooks.Add() $wsAudit = $wb.Worksheets.Item(1) $wsAudit.Name = "AuditInterne" $wsSynth = $wb.Worksheets.Add() $wsSynth.Name = "Synthese COMEX" $wsHeat = $wb.Worksheets.Add() $wsHeat.Name = "Heatmap GRCA100" # ------------------------------------------------------------ # 10. Remplissage AuditInterne # ------------------------------------------------------------ $headers = $scored[0].PSObject.Properties.Name for ($i=0; $i -lt $headers.Count; $i++) { $wsAudit.Cells.Item(1, $i+1).Value2 = "$($headers[$i])" $wsAudit.Cells.Item(1, $i+1).Font.Bold = $true } $rowIndex = 2 foreach ($item in $scored) { $col = 1 foreach ($prop in $headers) { $wsAudit.Cells.Item($rowIndex, $col).Value2 = "$($item.$prop)" $col++ } $rowIndex++ } $wsAudit.UsedRange.EntireColumn.AutoFit() $excel.ActiveWindow.SplitRow = 1 $excel.ActiveWindow.FreezePanes = $true $colScore = ($headers.IndexOf('ScoreRisque') + 1) if ($colScore -gt 0) { $rangeScore = $wsAudit.Range( $wsAudit.Cells.Item(2, $colScore), $wsAudit.Cells.Item($rowIndex-1, $colScore) ) $fc1 = $rangeScore.FormatConditions.Add( [Microsoft.Office.Interop.Excel.XlFormatConditionType]::xlCellValue, [Microsoft.Office.Interop.Excel.XlFormatConditionOperator]::xlGreaterEqual, "20" ) $fc1.Interior.Color = 255 $fc2 = $rangeScore.FormatConditions.Add( [Microsoft.Office.Interop.Excel.XlFormatConditionType]::xlCellValue, [Microsoft.Office.Interop.Excel.XlFormatConditionOperator]::xlGreaterEqual, "15" ) $fc2.Interior.Color = 49407 $fc3 = $rangeScore.FormatConditions.Add( [Microsoft.Office.Interop.Excel.XlFormatConditionType]::xlCellValue, [Microsoft.Office.Interop.Excel.XlFormatConditionOperator]::xlLess, "15" ) $fc3.Interior.Color = 5287936 } # ------------------------------------------------------------ # 11. Synthèse COMEX : KPI + radar # ------------------------------------------------------------ $row = 1 $wsSynth.Cells.Item($row,1).Value2 = "Synthèse COMEX GRCA100" $wsSynth.Cells.Item($row,1).Font.Bold = $true $wsSynth.Cells.Item($row,1).Font.Size = 14 $row += 2 $wsSynth.Cells.Item($row,1).Value2 = "Score global de maturité" $wsSynth.Cells.Item($row,2).Value2 = "$scoreGlobal" $row++ $wsSynth.Cells.Item($row,1).Value2 = "Risques critiques" $wsSynth.Cells.Item($row,2).Value2 = "$nbCritiques" $row++ $wsSynth.Cells.Item($row,1).Value2 = "Risques élevés" $wsSynth.Cells.Item($row,2).Value2 = "$nbEleves" $row++ $wsSynth.Cells.Item($row,1).Value2 = "Risques modérés" $wsSynth.Cells.Item($row,2).Value2 = "$nbModeres" $row += 2 $wsSynth.Cells.Item($row,1).Value2 = "Axe" $wsSynth.Cells.Item($row,2).Value2 = "Score" $wsSynth.Range("A$($row):B$($row)").Font.Bold = $true $row++ $startRadarRow = $row foreach ($axe in $axes) { $wsSynth.Cells.Item($row,1).Value2 = $axe $wsSynth.Cells.Item($row,2).Value2 = "$($axesScores[$axe])" $row++ } $endRadarRow = $row-1 $wsSynth.Columns.Item("A:B").AutoFit() $chartObj = $wsSynth.Shapes.AddChart().Chart $chartObj.ChartType = 81 # xlRadar $chartRange = $wsSynth.Range("A$startRadarRow:B$endRadarRow") $chartObj.SetSourceData($chartRange) $chartObj.HasTitle = $true $chartObj.ChartTitle.Text = "Radar GRCA100 - Maturité" $chartObj.Legend.Delete() $chartObj.Parent.Left = $wsSynth.Columns.Item("D").Left $chartObj.Parent.Top = $wsSynth.Rows.Item(2).Top $chartObj.Parent.Width = 350 $chartObj.Parent.Height = 250 # ------------------------------------------------------------ # 12. Heatmap GRCA100 (version stable) # ------------------------------------------------------------ $wsHeat.Cells.Item(1,1).Value2 = "Groupe" $wsHeat.Cells.Item(1,2).Value2 = "Score moyen" $wsHeat.Cells.Item(1,3).Value2 = "Score max" $wsHeat.Range("A1:C1").Font.Bold = $true $rowH = 2 $groupes = $scored | Where-Object { $_.Groupe } | Select-Object -ExpandProperty Groupe -Unique foreach ($g in $groupes) { $items = $scored | Where-Object { $_.Groupe -eq $g -and $_.ScoreRisque -gt 0 } if ($items.Count -gt 0) { $moy = [math]::Round(($items | Measure-Object -Property ScoreRisque -Average).Average,2) $max = ($items | Measure-Object -Property ScoreRisque -Maximum).Maximum } else { $moy = 0 $max = 0 } $wsHeat.Cells.Item($rowH,1).Value2 = "$g" $wsHeat.Cells.Item($rowH,2).Value2 = "$moy" $wsHeat.Cells.Item($rowH,3).Value2 = "$max" $rowH++ } $wsHeat.UsedRange.EntireColumn.AutoFit() # Heatmap stable (sans ColorScaleCriteria) $rangeHeat = $wsHeat.Range("B2:B$($rowH-1)") if ($rowH -gt 2) { $null = $rangeHeat.FormatConditions.AddColorScale(3) } # ------------------------------------------------------------ # 13. Sauvegarde Excel + export PDF # ------------------------------------------------------------ $wb.SaveAs($xlsx, 51) $wb.ExportAsFixedFormat( 0, $pdf, 0, $true, $false, 1, 2, $false ) $wb.Close() $excel.Quit() Write-Host "" Write-Host "Excel généré avec succès :" -ForegroundColor Green Write-Host $xlsx Write-Host "PDF COMEX généré :" -ForegroundColor Green Write-Host $pdf# ================================ # Commentaires # Il faut remplacer xxxxx par le nom adéquate
# Erol GIRAUDY v5 2026 mai 11
# et ajouter les csv et xlsx dans le même répertoire # ================================
------------------------------------------------------------------------
Ce pipeline GRCA100 COMEX est maintenant 100% stable.
------------------------------------------------------------------------Vision dans la console PowerShell.
Ensuite il sera disponible au format Excel et PDF.
Version d'un extrais au format PDFVersion Excel.
Puis automatiquement il sera exporté dans un LLM avec une IA qui mettra en forme ce rapport.
Bien entendu cela se passe sur le PC de l'auditeurs.
Exemple de rapport Rapport_Audit_IA_AFEES_2026-04_v1.md
Organisation auditée : AFEES
|
AUDIT_IA/ | +-- 00_REFERENTIELS/ |
+-- GRCA500_MAGNum_Unified_vN.xlsx <- template vierge |
+-- Guide_ModeEmploi_GRCA500_MAGNum.docx |
+-- SOURCES/ |
+-- Guide_MAGNum_2026.pdf |
+-- GRCA500_Documentation_Guild4AI.pdf | +-- 01_MISSIONS_EN_COURS/ |
+-- AcmeCorp_2026-04/ |
+-- GRCA500_MAGNum_AcmeCorp_2026-04_v1.xlsx |
+-- PREUVES/ |
| +--
PREUVE_Tests_MIA_2026-04-17.pdf |
| +--
PREUVE_Acces_API_scan_2026-04-17.json |
+-- RAPPORT/ | +--
Rapport_Audit_IA_AcmeCorp_2026-04_v1.docx | +--
Prompt_Rapport_AcmeCorp_2026-04-17.md | +-- 02_ARCHIVES/ | +-- 2026/ | +-- BetaBank_2026-01/ <- mission cloturee, archivee | +--
GammaGroup_2026-02/ | +-- 03_SUIVI_PLANS_ACTION/ +-- Suivi_Plans_Action_2026.xlsx |



