---
suivi: 1203
date: 2026-08-05
sujet: Foncier — onglet DOCUMENTS + instruction Teams suivi
chantier: foncier
type: evolution
statut: poussé
hash: 8cf3cf30
fichiers:
  - app/Support/Foncier/DossierFoncierTabs.php
  - app/Models/EntityDocument.php
  - app/Services/Foncier/FoncierEntityDocumentService.php
  - app/Http/Controllers/Foncier/DossierFoncierController.php
  - app/Http/Controllers/Foncier/Concerns/ManagesFoncierEntityDocuments.php
  - resources/js/Composables/useTabAnchor.js
  - resources/js/Layouts/AppShell.vue
  - resources/js/Pages/Foncier/Dossiers/Show.vue
  - resources/js/Components/Foncier/EntityDocumentsPanel.vue
  - tests/Feature/Foncier/FoncierDossierDocumentsTab1203SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1203_foncier_dossier_documents_et_teams.md
---

# SUIVI #1203 — Onglet DOCUMENTS + Teams suivi (instruction)

## PROMPT ENVOYÉ

Onglet DOCUMENTS séparé du Suivi (agrégat existant). S’assurer que le suivi
avertit sur Teams — avec contrainte *.powerplatform.com bloqué en CLI OVH.
Q36 SharePoint non tranchée. Rebase origin/main ; sérialiser front.

## SYNTHÈSE — DOCUMENTS (implémenté)

### Inventaire
| Emplacement | Stockage | Table |
|-------------|----------|-------|
| Dossier | disk `local` `foncier/dossiers/{id}` | `entity_documents` morph |
| Offre | idem `foncier/offres/{id}` | idem |
| Promesse / Avenant | `foncier/promesses|avenants` | idem |
| Acte | `foncier/actes` | idem |
| Valorisation parcelle | hors dossier show | idem |
| Suivi (messages) | **pas de PJ** — textes `entite_commentaires` | — |
| SharePoint foncier | **rien** | — |
| Commercial | SharePoint + `reservation_documents` | autre module |

### Onglet
- Clé `#documents` / `?onglet=documents` (#1196) ; bandeau **DOCUMENTS** (#1201).
- Agrège dossier + offres + promesses + avenants + actes (origine, date, auteur).
- Dépôt direct dossier : déjà supporté (`MAX_PAR_DOSSIER=50`) — conservé.
- Suppression : confirm + `AuditsFieldChanges` + log snapshot.
- ACL : droits du documentable / dossier (D61). Avertissement PII propriétaires.

### Q36 SharePoint — OPTIONS POUR ROBIN (pas décidé)
A. Rester 100 % disk local provisoire (statut quo CDC « jet »)
B. SharePoint dossier/référence (arbo à définir) pour pièces juridiques (promesse/acte)
C. Hybride : offres local ; promesse/acte → SP
→ **aucune arbo créée dans ce lot**.

## SYNTHÈSE — TEAMS (ARRÊT — choix Robin)

### État réel
- Message Suivi **dossier** : `notifierMention` → **null** (pas cloche, pas Teams).
- Mention sur **offre** : cloche + Teams via `EntiteCommentaireService` (web/FPM).
- `AlerteService::GENERATION_ACTIVE = false` — n’impacte **pas** les mentions offre (hors garde).
- Alertes échéance foncier (`foncier_alerte_*`) : middleware `DeclencheFoncierAlertes` en **terminate web** (comme digest) → Teams via `TeamsNotificationService` ; échecs `Log::error` + `foncier_alertes_emises.delivre`.
- Digest tâches : `DeclencheDigestQuotidien` → `Artisan::call('taches:digest')` **depuis PHP-FPM** (pas cron CLI direct vers powerplatform).

### Choix soumis (ne pas implémenter avant réponse)
1. **Temps réel** : message suivi → Teams aux responsables (bruit possible)
2. **Digest** : brancher un résumé « nouveaux messages suivi foncier » sur le digest 9h existant (recommandé bruit)
3. **Mentions seulement** : aligner dossier sur offre (cloche+Teams si @) + responsables hors scope

Coût : (1) ~0,5–1 j + table émissions ; (2) ~1 j digest ; (3) ~0,3 j.

## LEÇON
Ne pas ajouter un canal Teams CLI. Réutiliser middleware terminate web.
L’onglet Documents agrège le morph `entity_documents` — ne pas créer de table parallèle.
