=== DIAG #1186 dation (lecture seule) — 2026-08-05 16:24:29 === --- 1. SCHEMA lots_commerciaux --- statut Type: enum('en_stock','en_vente','reserve','acte','annule','dation') statut Null: NO statut Default: en_stock mode_vente Type: varchar(32) mode_vente Null: YES mode_vente Default: NULL Const LotCommercial statut: en_stock, en_vente, reserve, acte, annule Const MODE_VENTE keys: direct, co_amenageur, odf, dation --- 2. VOLUMES lots_commerciaux (alive / trashed) --- alive: 205 trashed: 2 Répartition statut (alive): en_vente: 112 reserve: 50 acte: 41 en_stock: 1 dation: 1 Répartition mode_vente (alive): direct: 204 dation: 1 lots mode_vente=dation (alive): 1 lots mode_vente=odf (alive): 0 Croisement mode_vente=dation × statut: dation: 1 --- 3. TABLE promesse_lots_dation — EXISTE ? --- Schema::hasTable(promesse_lots_dation): NON → Table absente du schéma. Planifiée hors périmètre #1089 (« lots de dation »), jamais créée. --- 4. AUTRES SURFACES « dation » — volumes --- types_composantes_prix code=dation_lots: 1 offre_composantes_prix liées à dation_lots: 2 promesses.type=dation: 0 scenario_lots.type_lot=terrain_a_batir_dation: 0 --- 5. LIENS FK → lots_commerciaux (grep schéma) --- appels_de_fonds.lot_commercial_id → lots_commerciaux.id (appels_de_fonds_lot_commercial_id_foreign) lot_annexes.lot_commercial_id → lots_commerciaux.id (lot_annexes_lot_fk) lot_commercial_historique.lot_commercial_id → lots_commerciaux.id (lot_commercial_historique_lot_commercial_id_foreign) lot_emplacements.lot_commercial_id → lots_commerciaux.id (lot_emplacements_lot_commercial_id_foreign) offres_commerciales.lot_commercial_id → lots_commerciaux.id (offres_commerciales_lot_commercial_id_foreign) reservation_lots.lot_commercial_id → lots_commerciaux.id (resa_lots_lot_fk) reservations.lot_commercial_id → lots_commerciaux.id (reservations_lot_commercial_id_foreign) tmas.lot_commercial_id → lots_commerciaux.id (tmas_lot_commercial_id_foreign) Colonnes/tables contenant 'dation' dans le nom: assistant_consolidations.completude (varchar(32)) assistant_consolidations.contenu_json (json) assistant_consolidations.contenu_md (longtext) assistant_consolidations.created_at (timestamp) assistant_consolidations.echec_cause (varchar(64)) assistant_consolidations.id (bigint unsigned) assistant_consolidations.input_tokens (int unsigned) assistant_consolidations.modele (varchar(80)) assistant_consolidations.nb_tours (smallint unsigned) assistant_consolidations.output_tokens (int unsigned) assistant_consolidations.perimetre_tache_ids (json) assistant_consolidations.reponse_brute (longtext) assistant_consolidations.statut_traitement (varchar(32)) assistant_consolidations.stop_reason (varchar(64)) assistant_consolidations.taches_non_traitees_ids (json) assistant_consolidations.traite_at (timestamp) assistant_consolidations.traite_par_user_id (bigint unsigned) assistant_consolidations.updated_at (timestamp) assistant_consolidations.user_id (bigint unsigned) concessionnaire_factures.date_validation (date) facture_ventilations.autoliquidation (tinyint(1)) marche_sous_traitants.autoliquidation (tinyint(1)) taches_suivi.validation_mode (varchar(30)) workflow_validations.bloque (tinyint(1)) workflow_validations.bloque_at (timestamp) workflow_validations.bloque_motif (text) workflow_validations.bloque_par_user_id (bigint unsigned) workflow_validations.commentaire (text) workflow_validations.created_at (timestamp) workflow_validations.date_assignation (timestamp) workflow_validations.date_validation (timestamp) workflow_validations.facture_id (bigint unsigned) workflow_validations.id (bigint unsigned) workflow_validations.niveau (enum('nv1','nv2','mise_paiement','paiement_effectif','comptabilisation')) workflow_validations.relances_count (int) workflow_validations.statut (enum('en_attente','valide','rejete','relance')) workflow_validations.updated_at (timestamp) workflow_validations.validateur_id (bigint unsigned) --- 6. KPI — lots statut=annule (référence comportement demandé) --- lots statut=annule alive: 0 lots statut=annule trashed: 0 --- 7. ENUM — dépendances applicatives (constates code, pas SQL) --- Cast Eloquent statut: aucun (string brute) Scopes Eloquent statut: aucun Transitions: machine peutMettreEnVente / peutRemettreEnStock / peutReserver / peutActer / peutAnnuler Whitelist grille: SANS statut (LOT_GRILLE_WHITELIST) Writer ANNULE applicatif courant: ImportPegao (bloque→annule) ; annulation résa → lot EN_STOCK Précédent varchar: contacts.type_financement ENUM→VARCHAR(32) migration 2026_05_13_160000 --- FIN #1186 --- Relire docs/suivi/SUIVI_1186_diag_dation.md pour les 7 réponses + recommandation.