Brief développeur — Power App Simulation Négo

Contrat d'écriture RDE : créer un scénario, saisir l'overlay, persister, promouvoir vers la négo. Power BI reste le seed lecteur. Ceci est un brief, pas une app construite. 23.09.2026.

Index des canvas · Création du module Simu · Couverture CDC Simu · Lecture CDC · Brief Power App Prio

1. Contrat — PBI lit, l'app écrit

Une phrase. Power BI est le seed lecteur (Simu_Scenario + Simu_Overlay, mesures COALESCE). L'humain crée le scénario, saisit la strate, valide. Dataverse mémorise header + overlay. Après refresh, les pages Simu suivent l'overlay persisté. Le ledger cr568_negotiation_current ne bouge que si le scénario est promu.

Ceci est un brief / spec, pas une app livrée

Aucune canvas Simu n'existe. Le PBIP a six pages lecteurs et une card « Console Simu — à brancher ». Ce document spécifie S17–S23 (Non fait) de Simu_CDC_Couverture_FR.html. Ne pas le confondre avec une livraison.

S17–S23Non fait — objet de ce brief
6Pages PBI à embarquer
2Tables Dataverse neuves
1Promote vers le ledger

Chaîne à implémenter, dans cet ordre :

Saisie des accordsPrio Réfs (brief séparé)Simu Négo (à construire)
App canvase890ef64-b48f-43ad-9a7e-e2454e283e82Nouvelle app PrioNouvelle app. Interdit d'embarquer Saisie ou Prio dans le slot Simu.
Visuel PBIPowerApps_PBI_CV_C29F1DCC_81F5_4973_94AD_0517D44CC06AMême type, autre appIdMême type, troisième appId. Remplace acedc191357f4eac992b.
Table Dataversecr568_negotiation_currentcr568_prio_decision + cr568_prio_objectifDeux tables neuves (header + overlay). CDC ne les nomme pas cr568_simu_* : voir §2.
Grain d'écritureEAN × enseigne × PeriodKeyDécision : EAN × circuit × annéeHeader : enseigne × PeriodKey × nom. Overlay : scenario_id × EAN × conditionnement.
Après PatchFlux PPC / RefreshPBI_PowerRangeWriteback Prio → refreshWriteback Simu → refresh. Promote ≠ Flux PPC (ingest Excel).
Sécurité CDCÉquipe négoRestreint Perfect Store + DXIEspace RDE. CDC Simu ne dit pas « restreint PS+DXI ». S24 : pas d'écriture ledger avant promote.

Chaîne CDC (inchangée). Seule la deuxième boîte devient écrivain.

contexte embedPatchvalidé seulement1. Seed PBISimu_Scenario + OverlayLecteur COALESCE2. Canvas SimuCréer / cloner / saisirValider puis promote3. Dataverseheader + overlaypas le ledger avant promote4. Négo livecr568_negotiation_currentrefresh 612ef347-…

Rôles figés côté Power BI (déjà livrés — ne pas les reconstruire)

Le rapport ne persiste rien. Il affiche un what-if sur deux seeds figés (CARREFOUR HM). L'app est le seul endroit où un humain crée, clone, saisit et promeut.

Pattern Saisie : visuel 0aebe2b2f8c11bb0fa9f, table cr568_negotiation_current2. Pages Simu : Création e4a8c2b17f6d4095a5c3, Tableau f5b9d3c28a7e5106b6d4, Compare a6c0e4d39b8f6217c7e5, Waterfall b7d1f5e40c907328d8f6, Histo c8e2f6a51d018439e9a7, Mouvement d9f3a7b62e12954af0b8.

CDC (écriture, pas encore dans le PBIX) : persister header + overlay, pas dans cr568_negotiation_current tant que non promu. Clone, saisie strate/dates/tx, promote validé → ledger négo + refresh. Le canvas CDC et S20 parlent de « tables scénario + overlay Dataverse / Excel » — aucun nom logique cr568_simu_* n'existe dans le CDC. Convention PowerRange (même publisher DataLift, préfixe cr568_, solution 1.0.0.3, org orgdbdf3046.crm12.dynamics.com) : cr568_simu_scenario et cr568_simu_overlay. Les colonnes contractuelles sont celles du seed PBI, pas des noms inventés.

Table non managée, audit on. Une ligne = un scénario nommé par enseigne / catégorie (CDC S2). Alternate key obligatoire : cr568_ak_simu_scenario sur cr568_scenario_id.

Attribut logiqueColonne seed PBITypeOblig.Règle
cr568_simu_scenarioid—GUIDPKGUID système
cr568_scenario_idscenario_idnvarchar 40oui uniqueEx. SIMU-CRFHM-Q127. Clé lue par SELECTEDVALUE.
cr568_nom_scenarionom_scenarionvarchar 200ouiLibellé RDE (Scenario_Q1 27, Test 3…).
cr568_enseigneenseignenvarchar 100ouiLibellé Dim_Enseignes, pas le circuit. Seed = CARREFOUR HM.
cr568_periodkey— (writer S22)nvarchar 8ouiYYYYQ1 ou YYYYQ3. Seed n'a pas cette colonne ; base_ref porte 2026Q1 sur le seed Q127.
cr568_annee_typoannee_typointouiAnnée typo header (seed 2027).
cr568_negodérivé PeriodKeychoice Q1/Q3ouiTemps négo CDC.
cr568_statutstatutchoiceouiEIE / LE / validé / ad hoc — seuls statuts CDC (S3).
cr568_statut_ordrestatut_ordreintouiSeed : EIE=3, ad hoc=4. Étendre : validé=1, LE=2.
cr568_base_typebase_typechoiceouiNego (import ledger) / Scenario (clone).
cr568_base_refbase_refnvarchar 40ouiPeriodKey source (2026Q1) ou scenario_id parent.
cr568_periode_dv_reelleperiode_dv_reellechoiceouiCAM / CAD / LP — slicer Nielsen du seed.
cr568_contour_categoriecontour_categorienvarchar 20nonSOFT sur le seed. Filtre catégorie, pas une relation.
cr568_owner_labelownernvarchar 100nonAudit RDE. Seed = « seed ».
cr568_promu_negopromu_negochoice oui/nonouiDéfaut non. Oui seulement après promote réussi (S18).
ownerid / createdon / modifiedon—stdouiAudit.
Périmètre enseigne (CDC S15, mêmes objectifs Prio)

Patch header seulement si l'enseigne est HMSM, Carrefour City, Carrefour Contact ou Franprix. Refuser HD / Drive / e-com / enseigne saisie à la main. MagFlag se lit sur Dim_Enseignes (Enseigne_MAG) : ce n'est pas une colonne overlay. Si MagFlag = 0, la valo PBI skip déjà (S6) — l'app avertit, elle n'écrit pas un flag.

Création : enseigne + PeriodKey (Q1/Q3) + nom + période DV + contour. Import = copier le ledger live (is_duplicate = 0) de cet enseigne × PeriodKey vers des lignes overlay (S17). Copie Q1 → Q3 : cloner header, PeriodKey cible YYYYQ3, préremplir overlay depuis le Q1 (CDC Géographies : « Préremplir DV négo Q3 = Q1 ? Oui. » — S22).

3. Dataverse — overlay et sécurité

Grain : scenario_id × ean × conditionnement. Alternate key cr568_ak_simu_overlay. Une ligne = un écart EAN du scénario (CDC S4 / S20). Le seed n'a qu'une ROW TEST3 × 3502110008343 UNITAIRE T2, dv_cible blank, tx_transfo 0,95.

Attribut logiqueColonne seed PBI (COALESCE)TypeOblig.Règle
cr568_simu_overlayid—GUIDPK
cr568_scenario_idscenario_idnvarchar 40ouiLookup header. Relation PBI 1:n.
cr568_eaneannvarchar 20ouiTexte, pas Int64. Pad interdit.
cr568_conditionnementconditionnementchoiceouiDéfaut UNITAIRE. DP / box : entrée supply SAP, viz reste EAN (CDC).
cr568_stratestratenvarchar 20nonStrate en entrée ; DV/DN lus Dim_Strates si dv_cible blank. Blank + base remplie = Delisting côté PBI.
cr568_dv_cibledv_cibledecimal (2)nonOverride. Si blank, mesures : Dim_Strates (année puis prox) puis DVvaleur_LE.
cr568_dn_cibledn_cibledecimal (2)nonMême fallback. CDC : on ne saisit pas DV/DN en % — strate d'abord.
cr568_perma_saisoperma_saisochoicenonPermanent / Saisonnier. Seed = Permanent.
cr568_date_entreedate_entreenvarchar 20cond.Obligatoire si restratage + INNO + saisonnier (même règle console Saisie CDC).
cr568_date_sortiedate_sortienvarchar 20cond.Obligatoire si delisting / déstratage (CDC Saisie).
cr568_tx_transfotx_transfodecimal (4)nonTaux MAG saisi. PBI : COALESCE(overlay, Target, Taux, 1) — S21 encore trou côté modèle.
cr568_commentairecommentairenvarchar 500nonMotif RDE.

Ce que l'overlay ne stocke pas (et que le PBI calcule déjà)

Attendu métierOù ça vit aujourd'huiConséquence app
Listing / Restratage / Delisting / Stable / DéstratageMesure Simu mouvement : SWITCH overlay vs ledger. Pas de colonne mouvement sur Simu_Overlay.L'app écrit strate (± dates). Ne pas inventer cr568_mouvement pour le COALESCE. Au promote, écrire Mouvement sur le ledger (colonne déjà lue).
MagFlagDim_Enseignes / skip valo (NOT ISBLANK && = 0)Lecture périmètre. Pas un champ overlay.
INNOSpec / statut société ; coef valo inno = 1. CDC impose date_entree si INNO.Pas de colonne INNO dans le seed overlay. Lire le statut, exiger la date, ne pas créer un champ COALESCE fantôme.
VALO Volume / CA / NR, Waterfall, Histo, Vision, Unité70 mesures dossier Simu Négo, Z_Simu_*, Vision_SimuHors app. L'app nourrit header + overlay ; elle ne recalcule pas slide 5.

Patch idempotent. LookUp sur la clé alternative, puis Patch. Ne pas Create en doublon si l'EAN est déjà overlay pour ce scénario × conditionnement.

Sécurité

CDC module 1 (Prio) = restreint Perfect Store + DXI. CDC module Simu = espace de travail RDE, sans cette phrase. Ne pas recopier la restriction Prio. S24 est la seule règle de sécurité d'écriture nommée : ne pas écrire le ledger tant que non promu.

RôleHeader + overlaycr568_negotiation_current
RDE (atelier scénario)CRUDlecture seule jusqu'au promote ; promote = Patch contrôlé
Négo (Saisie)lecture recommandéeinchangé (app e890ef64)
DXICRUD + publier solution + fluxinchangé
Perfect Storelecture (obj + prio amont)inchangé — pas le writer Simu d'après le CDC
Autres (field)aucuninchangé

Valeurs de choice — identiques au modèle PBI

4. Console Création / scénario

Une app, écrans RDE (wireframe — pas le chrome PBI). StartScreen selon host_screen (section Embed). Pas de menu interne qui duplique les six onglets PBI.

OnVisible commun : Set(varRow; First(PowerBIIntegration.Data)). Si scenario_id et ean blank → « Choisissez un scénario, puis une ligne EAN ». Tous les Patch lisent varRow + galerie filtrée, jamais une galerie interne non filtrée.

Écran A — Nouveau / import / clone

ContrôleSourceComportement
CmbEnseigneDim_Enseignes (périmètre S15)HMSM + CRF City/Contact + Franprix. Refus Drive/HD.
CmbPeriodKeyYYYYQ1 / YYYYQ3Writer S22. Pas le slicer bench Z_Simu_Bench_Quarter.
TxtNomsaisieNom unique par enseigne × PeriodKey.
CmbPeriodeDVCAM / CAD / LPperiode_dv_reelle
CmbContourcatégorieSOFT sur le seed ; ne pas forcer.
CmbBaseNego / ScenarioNego = import ledger PeriodKey. Scenario = clone d'un header existant.
TglPrefillQ3boolSi PeriodKey = YYYYQ3 et une base YYYYQ1 existe : copier overlay (S22).
BtnCreerPatch header + ForAll overlaystatut = ad hoc, promu_nego = non, scenario_id généré.

Import persisté (S17) : pour chaque ligne ledger is_duplicate = 0 de l'enseigne × PeriodKey, créer une overlay (ean, conditionnement, strate, perma, dates, tx si connu). Ce n'est pas Flux PPC. La base du seed aujourd'hui est le ledger déjà chargé, sans écriture PeriodKey.

Patch(
  cr568_simu_scenarios;
  LookUp(cr568_simu_scenarios; cr568_scenario_id = varNewId);
  {
    cr568_scenario_id: varNewId;
    cr568_nom_scenario: TxtNom.Text;
    cr568_enseigne: CmbEnseigne.Selected.Value;
    cr568_periodkey: CmbPeriodKey.Selected.Value;
    cr568_annee_typo: Value(Left(CmbPeriodKey.Selected.Value; 4));
    cr568_nego: Right(CmbPeriodKey.Selected.Value; 2);
    cr568_statut: "ad hoc";
    cr568_statut_ordre: 4;
    cr568_base_type: CmbBase.Selected.Value;
    cr568_base_ref: varBaseRef;
    cr568_periode_dv_reelle: CmbPeriodeDV.Selected.Value;
    cr568_promu_nego: "non"
  }
)

5. Consoles saisie strat, états, promote

Écran B — Saisie overlay (strate par EAN)

Clic ligne PBI → varRow.ean. Galerie Filter(cr568_simu_overlays; cr568_scenario_id = varRow.scenario_id). Préremplir depuis l'overlay persistée, sinon ledger / Dim_Strates (même ordre que le COALESCE).

ContrôlePatchNote CDC / seed
LblReflecture ean + referencePowerBIIntegration
LblScenarionom + enseigne + PeriodKey + statutheader
CmbStratecr568_strateEntrée métier. DV/DN se déduisent si dv_cible blank.
TxtDV / TxtDNcr568_dv_cible / cr568_dn_cibleOptionnel. Blank = lookup Dim_Strates.
CmbPermacr568_perma_saisoPermanent / Saisonnier
TxtDateEntree / Sortiecr568_date_entree / date_sortieRègle dates Saisie : restratage+INNO+saiso / delisting+déstratage.
TxtTxcr568_tx_transfoChemin MAG (S21). Ne pas forcer 1 dans l'app — le seed PBI le fait déjà.
LblMouvcalculé, pas Patch overlayListing si base blank + strate ; Delisting si overlay blank + base ; Restratage si strates ≠ ; sinon Stable. Déstratage mesuré côté PBI, pas émis par le SWITCH overlay actuel.
LblMaglecture MagFlagAvertir si 0 (skip valo). Pas d'écriture.
BtnEnregistrerPatch overlayhost_screen = CREATION / TABLEAU

États — brouillon / validé / push

« Brouillon » n'est pas un statut CDC. C'est le panier de travail : ad hoc, EIE, LE (S3). validé est le seul statut qui autorise le promote. Seeds actuels : ad hoc + EIE ; LE / validé absents ; promu_nego = non.

ad hocbrouillon libreEIEhypothèseLELast Estimatevalidéseul état promotepromu_nego = oui → negotiation_currentS18 / S24 — pas avant
ActionStatut headerpromu_negoLedger
Créer / importer / clonerad hocnoninterdit
Travailler stratead hoc ou EIE ou LEnoninterdit
Passer EIE → LELEnoninterdit
Valider (RDE)validénontoujours interdit (S24)
Pousser vers négo (S18)validéoui après succèsPatch cr568_negotiation_current

Écran C — Promote validé → négo

Bouton visible seulement si statut = validé et promu_nego = non. Confirmer enseigne × PeriodKey. Pour chaque overlay : upsert ledger au grain EAN × enseigne × PeriodKey (ScaKey), is_duplicate = 0. Colonnes déjà lues par le rapport (architecture) : strate_LE ou strate_EIE selon le statut source, DVvaleur_LE / DNvaleur_LE (ou EIE), Typologie (perma), Mouvement, dates, conditionnement. PeriodKey = année & date_accords (Q1/Q3). Ne pas écrire DEF (2 lignes live — autre chemin). Ne pas passer par Flux PPC.

CasUI
PowerBIIntegration.Data videPas de Patch. Texte d'aide.
Enseigne hors périmètre / MagFlag = 0Avertir. Patch header refusé si Drive/HD.
PeriodKey ≠ YYYYQ1|YYYYQ3Bloquer.
Promote alors que statut ≠ validéBloquer. S24.
Patch OKNotify succès + déclencher le flux refresh.
Patch KO (clé / sécurité)Notify Dataverse brute, ne pas avaler.
Re-promote déjà ouiIdempotent. Pas de second insert ledger.

6. Embed Power BI

Remplacer la card « Console Simu — à brancher » (acedc191357f4eac992b) par le visuel Power Apps, même emplacement que Saisie / Prio : x ≈ 987, y ≈ 223, width ≈ 279, height ≈ 477, dans le rectangle arrondi console.

Placeholders déjà posés (prior work, hidden) : txt_console (titre « Console Simu ») et shape_console (fond arrondi, x ≈ 982, y ≈ 188, 290 × 519). Les six pages Simu les portent. Ne pas les redessiner — les laisser, y poser l'app.

Propriété visuelValeur
visualTypePowerApps_PBI_CV_C29F1DCC_81F5_4973_94AD_0517D44CC06A
objects.general.appId/providers/Microsoft.PowerApps/apps/<GUID-NOUVELLE-APP-SIMU>
query.queryState.table.projectionsRôle table (pas Values) — liste ci-dessous
PagesLes 6 : e4a8, f5b9, a6c0, b7d1, c8e2, d9f3 (S23 : visuel × 6, host_screen)

Champs PowerBIIntegration.Data (nativeQueryRef)

Noms sans slash ni accent : l'app les lit en identifiants. Le tableau PBI peut garder les libellés FR.

nativeQueryRefChamp PBIPages
scenario_idSimu_Scenario[scenario_id] — slicer, pas une mesuretoutes
nom_scenarioSimu_Scenario[nom_scenario]toutes
enseigneSimu_Scenario[enseigne]toutes
statutSimu_Scenario[statut]Création
promu_negoSimu_Scenario[promu_nego]Création
base_refSimu_Scenario[base_ref]Création
periode_dvSimu_Scenario[periode_dv_reelle]Création, Tableau
eanDim_Produit_EAN[ean]Création, Tableau, Compare
referenceDim_Produit_EAN[reference]Création, Tableau
conditionnementDim_Produit_EAN[conditionnement]Création
strate_simuMesures overlay strate (COALESCE)Création, Tableau, Compare
dv_simuMesures[Simu DV]Création, Tableau
tx_simuMesures tx transfo overlayCréation, Tableau
a_overlayMesures[Simu a overlay]Création, Compare
mouvementMesures[Simu mouvement]Création, Mouvement
host_screenmesure constante CREATION / TABLEAU / COMPARE / WATERFALL / HISTO / MOUVEMENTtoutes

Mesure host_screen par page pour StartScreen = Switch(First(PowerBIIntegration.Data).host_screen; …). Évite un Param() fragile dans l'embed Desktop.

Slicers obligatoires avant saisie

SlicerPourquoi l'app l'exige
Enseigne = une enseigne du périmètreHeader grain enseigne. Tout = SELECTEDVALUE blank.
Nom de scénario = une lignePorte ScId. Sans elle l'overlay PBI est blank (les deux seeds ne se mélangent pas).
Période DV CAM/CAD/LPSimu DV actuelle / date Nielsen. Recette seed : CAM.
Conditionnement UNITAIRE recommandéCDC viz EAN ; DP/box = supply, pas la saisie courante.
Enseigne (header)Nom de scénarioPériode DV CAM / CAD / LPConditionnementUnité / Bench / Vision — lecture seule, hors app
Set(varRow; First(PowerBIIntegration.Data));;
If(
  IsBlank(varRow.scenario_id);
  Notify("Sélectionnez une enseigne et un nom de scénario"; NotificationType.Warning);
  Navigate(EcrStrat; ScreenTransition.None)
)

7. Flux et contrat COALESCE

Sans ce hop, le Patch est invisible dans Power BI. Aujourd'hui Simu_Scenario est un DATATABLE (2 lignes) et Simu_Overlay une ROW calculée. Dataverse n'est importé que pour cr568_negotiation_current. Dataset 612ef347-d29a-40a4-9073-11a699847590, workspace 653b685c-… — les IDs que les flux cloud rafraîchissent déjà (Saisie / ingest).

Power App RDEclone · saisie · promoteHeader Dataverseenseigne · PeriodKey · statutLignes overlayEAN · strate · DV · txImport PBISimu_Scenario / Overlayremplace DATATABLE / ROWMesures Simu NégoScId + COALESCEvalo slide 5 déjà làLedger négouniquement si promu_nego6 pages Simulation NégoCréation · Tableau · Compare · WF · Histo · Mouv
OptionMécaniqueQuand
A — recommandée (proche Prio / Saisie)Flux cloud « Power Range Simu writeback » : On Create/Update de cr568_simu_scenario et cr568_simu_overlay, import des deux tables (Import, pas DirectQuery), relation overlay[scenario_id] → header[scenario_id], refresh 612ef347-…. Les mesures COALESCE ne changent pas de formule.Même contrat que le brief Prio.
B — ExcelLe flux upsert un classeur overlay/header SharePoint, Power Query remplace le DATATABLE. Aucun changement DAX si les noms de colonnes seed sont stricts.Uniquement si l'import Dataverse est refusé. Fragile (lock fichier).
Promote (flux séparé)Déclenché par le bouton app, seulement si statut = validé. Upsert cr568_negotiation_current + Patch promu_nego = oui. Puis le même RefreshDataset. Pas Flux PPC, pas RefreshPBI_PowerRange de Saisie (autre app).S18. S24 tant que ce flux n'a pas tourné.

Contrat de champs avec le seed (ne pas casser le COALESCE)

Mesure / porte PBILecture actuelleAprès option A
ScIdSELECTEDVALUE(Simu_Scenario[scenario_id])Même colonne, lignes Dataverse. Si blank → overlay blank.
Overlay[champ]MAX Simu_Overlay filtré ScId + TREATAS EANMême noms : strate, dv_cible, dn_cible, perma_saiso, date_entree, date_sortie, tx_transfo, ean, conditionnement
Simu DVdv_cible → Dim_Strates → DVvaleur_LEInchangé. L'app peut laisser dv_cible blank.
Simu tx transfoCOALESCE(overlay, Target, Taux) ; valo tx COALESCE(..., 1)Inchangé. S21 reste un trou modèle MAG, pas un trou app.
Simu mouvementSWITCH overlay vs ledgerInchangé. Plus de lignes overlay = plus de Listing/Restratage visibles.
promu_nego / statutcolonnes header seedMises à jour par l'app. Carte Création.
VALO / Unité / Vision / Benchslide 5 + Z_Simu_*Hors flux Simu. Déjà dans PBI.

Fallback seed. Tant qu'aucune ligne Dataverse n'existe, garder le DATATABLE / ROW (deux scénarios CARREFOUR HM) pour que le lecteur continue. COALESCE(Dataverse ; seed) au go-live, comme COALESCE(décision ; spec) côté Prio.

Refresh à la demande. Bouton app « Publier vers le rapport » = flux Power Automate, pas un refresh Desktop. Ne rafraîchir que si le Patch a réussi. Pas toutes les 5 min (le PPC négo garde son cadencement). Mesure Trigger Refresh = MAX(Z_Table_Refresh_Key[Value1]) ne recharge pas les données — c'est le poke Saisie, pas le writeback Simu.

8. Recette

#DonnéAttendu
1Slicer enseigne Tout / clic EAN / Enregistrer strateApp refuse. Message enseigne + nom de scénario.
2CARREFOUR HM + nouveau nom + 2026Q1 + import NegoHeader ad hoc, promu_nego=non, N overlay = lignes ledger is_duplicate=0. Après refresh, ScId lit le nouveau scenario_id.
3Même header, PeriodKey 2026Q3 + préremplir Q1Clone overlay Q1 (S22). Pas un second import ledger Q3 vide.
4Test 3 seed, forcer strate T3 + tx 0,90 sur 3502110008343Overlay persistée. Après refresh, Simu DV via Dim_Strates (dv_cible blank) ; tx = 0,90 ; mouvement = Restratage si base ≠ T3.
5Delisting : strate overlay blank, base rempliePBI Simu mouvement = Delisting. date_sortie obligatoire.
6Listing : strate remplie, base blankListing. date_entree si INNO / saisonnier.
7Promote alors que statut = EIERefus. Ledger inchangé. promu_nego reste non.
8Passer validé puis Pousser vers négoLignes cr568_negotiation_current upsert EAN×enseigne×PeriodKey. promu_nego=oui. Pages Négo voient la strate après refresh.
9Enseigne Drive / HDPatch header refusé.
10Utilisateur hors RDE/DXIApp en lecture ou accès Dataverse refusé.
11Embarquer e890ef64 (Saisie) dans le slot SimuHors recette — interdit. Mauvais grain, écrit le ledger trop tôt.
12Scenario_Q1 27 (pas d'overlay seed) après import réelDes lignes overlay apparaissent ; le fallback ledger seul disparaît pour ces EAN.

9. Checklist de livraison

LivrableOwnerCouvre
Tables header + overlay + choices + AK + security roles dans PowerRangeDataverse / DXIS20
Canvas : création/import/clone Q3, saisie overlay, états, promote, Notify, bouton refreshPower AppS16 S17 S18 S22
Visuel Power Apps × 6, bindings, host_screen ; txt_console / shape_console conservésPower BI (plus tard)S23
Import Dataverse → Simu_Scenario / Simu_Overlay (mêmes colonnes COALESCE)Power BI (plus tard)S4 S20
Flux On Create/Update → refresh 612ef347-…Power AutomateS23
Flux promote validé → cr568_negotiation_current + promu_negoPower AutomateS18 S24

Hors scope — déjà dans PBILecteur

  • VALO slide 5 (Négo / Transfo / Total × Vol/CA/NR) — S5. Pas B21–B23 (S19, métier finance).
  • Pages Waterfall, Histo, Mouvement, Compare (lecteur).
  • Vision_Simu, Z_Simu_Unite / Bench / Quarter, skip Céréales / MagFlag.
  • Mesures COALESCE, porte ScId, date Nielsen MAX Fact_Nielsen.

Hors scope de ce sprint appCDC restant

  • Formule CDC Fact CAMH/VMH × 52 (S19) si le métier refuse slide 5.
  • Chemin MAG taux complet sans COALESCE 1 (S21) — trou modèle.
  • Métadonnées field-param Desktop, bench A-1 dédié, Déstratage émis par le SWITCH.
  • App Prio (brief séparé). App Saisie e890ef64.

Aligné sur le CDC module Simu Négo (chaîne = 2 ; maquette = 4 ; écrans #12–14 ; briefing 16.02.2026), la couverture S1–S24, le seed Simu_Scenario / Simu_Overlay, le ledger cr568_negotiation_current, et le brief Prio (même mécanique embed + refresh, autre grain).