---
suivi: 1813
date: 2026-10-07
sujet: Cahier des charges du brainstorming
chantier: brainstorming
type: feature
statut: poussé
hash: c71fb3ea
fichiers:
  - docs/suivi/SUIVI_1813_brainstorming_cahier_des_charges.md
  - resources/prompts/plume-cahier.md
  - resources/views/pdfs/brainstorming-cahier.blade.php
  - resources/js/Pages/Brainstorming/Show.vue
  - app/Http/Controllers/BrainstormingController.php
  - app/Http/Middleware/DeclenchePlume.php
  - app/Models/Brainstorming.php
  - app/Models/BrainstormingIaAppel.php
  - app/Models/BrainstormingCdcVersion.php
  - app/Models/BrainstormingRelecture.php
  - app/Services/Brainstorming/PlumeAgent.php
  - app/Services/Brainstorming/PlumeCahier.php
  - app/Services/Brainstorming/BrainstormingCahierService.php
  - app/Support/Brainstorming/BrainstormingCahierTexte.php
  - database/migrations/2026_10_07_200000_create_brainstorming_cahier_tables.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - routes/web.php
  - public/build/
  - tests/Unit/BrainstormingCahierTexteTest.php
---

# SUIVI #1813 — Cahier des charges

Lot 4. Un seul appel, dans le budget de Plume. Le plan des 16 rubriques est écrit par le serveur : le modèle ne fournit que la prose. Fiches lues : SUIVI_1811 (ne pas enchaîner deux appels de 120 s), SUIVI_1812 (le déclencheur quotidien reste le verrou du jour), SUIVI_1802 (PDF Dompdf comme le scénario de faisabilité).

## Mapping

| Action | Libellé | Valeur postée | Colonne |
|---|---|---|---|
| Rédiger | Rédiger / Mettre à jour | bouton, salle en synthèse | brainstorming_cdc_versions.version |
| Relu | Relu, d'accord | bouton | brainstorming_relectures.relu_le |
| Commentaire | Commentaire de relecture | contenu | message du fil, état Discussion |
| Forcer | Cahier des charges prêt | bouton | etat cahier_pret |
| Clore | Clore | bouton | etat clos |
| Version | v1, v2… | id de la version | brainstorming_cdc_versions.id |

## Rédaction

À l’entrée en Synthèse (par Plume ou par les réglages), ou sur le bouton du créateur et de GS_ADMIN_ERP. L’appel part après la réponse HTTP. S’il a été armé pendant un autre appel, il attend la page suivante : un seul appel long par requête. Pause de budget : le message de pause, pas de version.

Chaque version est conservée. Éléments validés en clair, éléments proposés marqués « à confirmer », source auteur et date. Rubriques sans objet, reportées ou non abordées dites comme telles. Annexes : liens vers les pièces. Éléments écartés absents.

## Relecture et clôture

Chaque participant coche ou commente. Le commentaire revient dans le fil et repasse la salle en Discussion. Les accords sont alors effacés. Quand tous ont coché, ou si le créateur (ou GS_ADMIN_ERP) force : état Cahier des charges prêt. Cloche et Teams aux personnes du groupe GS_DSI et aux participants. Teams seulement sur la requête web. Bouton Clore depuis cet état.

## Migration

database/migrations/2026_10_07_200000_create_brainstorming_cahier_tables.php

- brainstorming_cdc_versions : brainstorming_id, version, contenu, genere_le, cout. Unique salle + version.
- brainstorming_relectures : brainstorming_id, user_id, relu_le. Unique salle + personne.

down() retire ces deux tables.

## Bundle

Show-KmgqWin5.js, feuille Show-C8CKhc_p.css, coquille app-DH1UhVZe.js.

## DÉPLOIEMENT-TEST

git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan route:clear
php artisan migrate --force
php artisan journal:sync

1. Salle en Synthèse : v1, 16 rubriques, sources visibles.
2. Un participant commente : message dans le fil. Mettre à jour : v2, v1 conservée.
3. Tous cochent Relu : cahier prêt, alerte chez les personnes GS_DSI (dont Robin s’il est dans ce groupe).
4. Export PDF et Markdown de la version affichée.

## LEÇON

Le cahier armé pendant la réponse de Plume ne part pas dans le même terminate : la page suivante le prend. Le plan fixe ne vient pas du JSON du modèle. Une nouvelle version efface les accords de relecture.
