---
suivi: 1360
date: 2026-08-14
sujet: explorateur_sharepoint_hectare
chantier: sharepoint_documents_marche
type: fix
statut: poussé
hash: 628f2983
fichiers:
  - app/Support/SharePointArborescenceStructures.php
  - app/Services/SharePointService.php
  - app/Services/SharePointChantierExplorerService.php
  - app/Http/Controllers/MarcheChantierExplorerController.php
  - resources/js/Components/SharePoint/MarcheChantierExplorer.vue
  - resources/js/Pages/Marches/Show.vue
  - tests/Unit/SharePointChantierExplorerServiceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1360_explorateur_sharepoint_hectare.md
---

## PROMPT ENVOYÉ

Explorateur fiche marché DOCUMENTS affichait « dossier indisponible » pour
MCH-2026-197 (HECTARE) alors que TRAVAUX/PAYSAGISTE--FAIRWAYS--MCH-2026-197/
existe. Cause probable : racine VEFA 05_SUIVI_CHANTIER. Dual arb + libellés.
Constat « Marché signé manquant » sans fix si cause incertaine.

## FICHES LUES

- `#1250` — explorateur chantier, racine 05_SUIVI_CHANTIER, MarcheChantierExplorer.
- `#1254` — croisement item_id, dossiers structurels protégés.
- `#1356` — arborescence HECTARE TRAVAUX/{POSTE}--{ENT}--{REF}/CDC.
- `#1236` — sharepoint_folder_id stable.

## SYNTHÈSE

### Cause confirmée

`SharePointChantierExplorerService::resolveChantierRoot` (L59-75 avant fix)
→ `SharePointService::resolveSuiviChantierFolderApp` (L3179) cherche
**uniquement** `05_SUIVI_CHANTIER` sous la racine programme.
HECTARE lotissement n'a pas ce dossier (FONCIER/COMMERCIAL/MONTAGE/TRAVAUX).

`MarcheChantierExplorer.vue` affichait en dur « suivi chantier » + `05_SUIVI_CHANTIER`.

### Fix (#1360)

- `resolveMarcheExplorerRoot(programme, marche)` :
  - **lotissement** : `marches.sharepoint_folder_id` puis repli lecture seule
    `TRAVAUX/{CDC}` (`SharePointService::resolveLotissementMarcheFolderIdReadOnly`).
  - **VEFA** : inchangé (`05_SUIVI_CHANTIER`).
- `buildExplorerView` prend le marché ; breadcrumb / messages dynamiques.
- Dossiers CDC (CONTRACTUEL, FACTURES…) = structurels (non renommables).
- UI : titre + infobulle + chemin réel selon métier.
- Lecture seule SharePoint : aucune création/suppression/renommage de structure.

### « Marché signé — manquant » — verdict

**Cause différente.** `documents_manquants` = absence d'enregistrement
`marche_documents.type_document = marche_signe` (MarcheController L722-734),
pas le dépôt SIWI dans FACTURES (`siwi_documents`). Le PDF SIWI n'alimente
pas la checklist admin ERP. Pas de fix dans ce lot.

### Tests Cursor

8 tests unitaires SharePointChantierExplorerServiceTest verts.
Rendu Graph prod = procédure Robin.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan optimize:clear && php artisan view:clear
php artisan journal:sync
```

Procédure Robin :
1. MCH-2026-197 → onglet DOCUMENTS → Ouvrir explorateur → 4 dossiers CDC +
   facture dans FACTURES.
2. Marché 186 KALIMERA (ENVOL) → explorateur → 05_SUIVI_CHANTIER/4_PRESTATAIRES/…
3. Marché HECTARE sans dossier → message indisponible + Réessayer.

## LEÇON

Explorateur marché = une racine par métier ; ne pas réutiliser le chemin VEFA
sur HECTARE. Toujours prioriser `sharepoint_folder_id` (#1236).
