---
suivi: 1153
date: 2026-08-03
sujet: Aktor — diagnostic échecs consolidation + parsing tolérant + max_tokens
chantier: aktor
type: fix
statut: poussé
hash: 541619e1
fichiers:
  - app/Services/Assistant/AssistantConsolidationAgentService.php
  - app/Models/AssistantConsolidation.php
  - app/Http/Controllers/AssistantConsolidationController.php
  - database/migrations/2026_08_03_130000_add_diag_echec_to_assistant_consolidations_table.php
  - resources/js/Pages/Aktor/Consolidations.vue
  - resources/js/Pages/Aktor/ConsolidationShow.vue
  - tests/Unit/AssistantConsolidation1153Test.php
  - tests/Unit/AssistantConsolidation1152Test.php
  - tests/Unit/AssistantConsolidation1044Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1153_aktor_consolidation_diag_json.md
---

## PROMPT ENVOYÉ

SUIVI #1153 — panne « non JSON » opaque : messages distincts + réponse brute
persistée ; pré-remplissage `{` ; parsing tolérant ; max_tokens 16384 dédié ;
prompt champs libres JSON-safe. Périmètre / pré-groupes / partition inchangés.

## SYNTHÈSE

### Correctifs
1. Échecs persistés (`completude=echec`) avec `reponse_brute` (2k+500),
   `stop_reason`, `input_tokens`, `output_tokens`, `echec_cause`.
2. Messages : TRONQUÉE / clôtures markdown / préambule / JSON malformé + detail.
3. Prefill assistant `{` dans la requête ; réassemblage avant parse.
4. `parseJsonTolerant` : retire ```json, extrait objet équilibré.
5. `MAX_TOKENS_CONSOLIDATION = 16384` (plus le 8192 générique).
6. Prompt : pas de guillemets / newlines bruts dans champs libres.
7. Pas de relance auto. Partition toujours rejetée si incohérente.

### Tests
`php artisan test --filter=AssistantConsolidation` — tous verts.

## DÉPLOIEMENT-TEST

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

Générer sur les 31 : note OK, ou échec nommé + tokens + réponse brute.

## LEÇON

Un message d’erreur unique pour trois pannes distinctes empêche toute
réparation ciblée. En prod OVH (pas de CLI Anthropic), persister la réponse
brute est le seul diagnostic fiable.
