SIRRAT — Modèle de données « couloir » (lane)¶
Réalise ADR-0019 (dimension couloir) et s'appuie sur ADR-0016 (environnements) et ADR-0017 (couloir). Migration :
changes/018-sirrat-lane-dimension.yaml.
1. Modèle conceptuel¶
SirratProject (client, scenario, internal_app, + operated_by, hosting, acceptance, owner_org)
└── SirratLane (project, env_code, lane_code) ★ NOUVEAU
├── is_reference (libellé fonctionnel — NE route PAS)
├── data_strategy (shared|schema|database) + data_source_ref/dataset_ref/reset/retention
└── operated_by / hosting (hérités, surchargeables)
└── SirratEnvironmentStack (project, env_code, lane_code) ← clé étendue
└── SirratEnvironmentSlotValue (slot = variable de config)
└── Deployment (project, env, lane_code, app_code, version) ← dimensions ajoutées
Concepts hors domaine (projections calculées par EnvironmentManifestService, jamais des entités) : Cluster, Namespace (= {env}-{app}-{lane}), Canal.
2. Ce que la migration 018 fait (rétro-compatible)¶
| Changeset | Effet |
|---|---|
018-1 |
Crée sirrat_environment_lane + unique (project, env, lane) + index partiel un seul is_reference par (projet, env) + check lane_code <> 'preprod'. |
018-2 |
sirrat_environment_stack : + lane_code (NOT NULL, défaut ref) ; remplace uk_environment_stack_project_env par uk_environment_stack_project_env_lane. |
018-3 |
sirrat_deployments : + lane_code (défaut ref), + app_code ; index (project, env, lane). |
018-4 |
sirrat_projects : + operated_by, hosting, acceptance, owner_org (attributs Centre de Services). |
Les lignes existantes basculent toutes en lane_code = 'ref' → aucune rupture.
3. Amendements de code à livrer DANS LE MÊME PALIER que la migration¶
Non appliqués hors-bande pour ne pas casser
ddl-auto: validate. À faire ensemble (backlog SIR-2).
SirratEnvironment.java — ajouter INT, réserver PREPROD, alias déterministes :
INT("int", "🧪 INT — Intégration & qualification"),
// PREPROD réservé (non émis tant que l'env n'existe pas)
// fromCode : recette|staging|rmoa_dynors|rmoa_client -> RMOA (jamais -> INT)
SirratEnvironmentStack.java — ajouter le champ mappé lane_code et étendre la clé :
@Column(name = "lane_code", nullable = false, length = 16)
private String laneCode = "ref";
// @UniqueConstraint -> {"project_db_id","env_code","lane_code"} (uk_environment_stack_project_env_lane)
Deployment.java — ajouter laneCode (défaut ref) et appCode.
SirratProject.java — ajouter operatedBy, hosting, acceptance, ownerOrg.
Nouveau : SirratLaneRepository + service de résolution refusant toute opération sans lane_code explicite (jamais de repli sur is_reference).
4. Règles d'intégrité (à faire respecter techniquement)¶
lane_code∈^[a-z][a-z0-9-]{1,15}$;preprodinterdit (check SQL + validation applicative).- Au plus un
is_reference = truepar(project, env)(index partiel unique). is_referencene résout jamais une URL/route incomplète (ADR-0017) — contrôle au niveau SLY + Gate 0.data_strategy = database|schema⇒data_source_refrequis (validation applicative).- Environnement possédé par le client ⇒
owner_org+hosting=client; ce n'est pas un couloir DYNORS (ADR-0019).