---
suivi: 1328
date: 2026-08-13
sujet: reprise_siwi_qualification_bascule
chantier: marches_reprise
type: fix
statut: poussé
hash: 3fe52d5d
fichiers:
  - app/Services/SiwiImportService.php
  - app/Console/Commands/SiwiImportCommand.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1328_reprise_siwi_qualification_bascule.md
---

## PROMPT ENVOYÉ

#1328 — corriger 2 défauts de qualification SIWI (hors_perimetre_poste via
`applicable_marche`, alerte_type restreint au créable) + sortie marchés
post-bascule. Aucune migration / Vue / parsing / totaux.

## SYNTHÈSE

### Fiches lues
- `#1324` : SOURCE/TRAVAIL, qualification initiale, échantillon.
- `#1326` : page groupe sur ces motifs — ce correctif doit être réimporté en prod.

### Règle `hors_perimetre_poste`
Adossée à `postes_budgetaires_types` enseigne **HECTARE** avec
`applicable_marche = 0` (jamais `lie_aux_marches`, jamais test chaîne AVOCAT).
Résolution via `poste_propose_code` du mapping (+ 1er token si « C03 AVOCAT »).
`poste_methode` ← `hors perimetre — {code} applicable_marche=0` (varchar 64).

### Règle `alerte_type`
Aucune alerte si `qualification_motif` ∈
`hors_perimetre_lettre` | `hors_perimetre_poste` | `remboursement_negatif`.

### G10 DIVERS VRD
Compteur `g10_divers_vrd_propose` affiché. Échantillon synthétique : **1**.
Production : non mesurable depuis Cursor (pas de CSV OVH) — à pointer après
réimport via le compteur (et hors_perimetre_poste ≥ 16 avocat+autres).

### Bascule
Liste dry-run/apply : top 20 par `facture_ht`, total, docs post-bascule sans
facture/situation. Part € postérieure non calculable (documents.csv sans montants).
`--date-bascule` reste paramétrable (défaut proposition 2025-12-31).

### poste_fiable
Échantillon : **9** (inchangé). Formule : synonyme && !multi && motif null &&
pas non_valorise. Les hors périmètre n’étaient déjà pas fiables → en prod 653
devrait rester ; si ça monte, l’expliquer (écart de formule).

### Recette réelle
**À faire par Robin** après déploiement + réimport : 16 · 268 · 79.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan optimize:clear
php artisan journal:sync
php artisan siwi:import --path=/home/hectare-envol/siwi-import
php artisan siwi:import --path=/home/hectare-envol/siwi-import --apply
# pointer hors_perimetre_poste / marche_non_valorise / depassement / g10
```

## LEÇON

Un `poste_methode` qui décrit déjà `applicable_marche=0` ne pose pas le motif :
il faut résoudre le code proposé contre la nomenclature HECTARE en base.
Les alertes calculées hors périmètre créable faussent les compteurs page
(double lecture métier) même si un seul groupe UI gagne.
