Aller au contenu

Modèle de données Aquila PRO V1

Cette page décrit les principaux objets de configuration et de stockage utilisés par l’édition PRO.

1. Configuration globale (global_policy.json)

Exemple de structure simplifiée :

{
  "allow_weekend": false,
  "allowed_hours": {
    "start": "08:00",
    "end": "20:00"
  },
  "freeze": {
    "enabled": false,
    "reason": null
  },
  "cooldown": {
    "enabled": true,
    "minutes": 30
  }
}

Champs typiques :

  • allow_weekend : autorisation ou non des exécutions le week‑end.
  • allowed_hours : fenêtre horaire d’exécution (exprimée en heure locale ou UTC selon convention).
  • freeze : activation d’un gel global.
  • cooldown : configuration du délai entre deux exécutions pour un même couple projet / pipeline / branche.

2. Configuration projets (projects.json)

Exemple abrégé :

{
  "projects": [
    {
      "name": "service-api",
      "repository": "org/service-api",
      "pipelines": [
        {
          "name": "deploy-prod",
          "allowed_branches": ["main", "release/*"],
          "environment": "production"
        }
      ]
    }
  ]
}

Champs typiques :

  • name : nom logique du projet.
  • repository : identifiant unique du référentiel (ex. <org>/<repo>).
  • pipelines : liste des pipelines gérés pour ce projet.
  • name : identifiant du pipeline côté CI.
  • allowed_branches : branches autorisées pour ce pipeline.
  • environment : information environnement (recette, pré‑prod, prod).

3. Licence PRO (licence.json)

Fichier JSON signé par une autorité de licence et vérifié côté Aquila via une clé publique RSA.

Exemple logique :

{
  "edition": "PRO",
  "customer": "Entreprise X",
  "organisation": "github.com/entreprise-x",
  "expires_at": "2026-12-31T23:59:59Z",
  "features": {
    "max_projects": 50,
    "history_retention_days": 365
  },
  "signature": "..."
}

4. Modèle d’historique

L’historique stocke les décisions prises par Aquila PRO. Les colonnes finales dépendent du SGBD choisi, mais on retrouve en général :

  • métadonnées techniques :
  • identifiant interne ;
  • timestamp de demande ;
  • source (repository, pipeline, branche).
  • contenu de la demande :
  • payload reçu (request_payload) ;
  • informations enrichies par l’agent (environnement, projet résolu, etc.).
  • décision :
  • statut (accepted / refused) ;
  • raison principale ;
  • règles déclenchées.

Les détails sont exploités par /agent/history et /agent/stats.