Corrections majeures:
- Digital Ocean: Récupération réelle XML depuis /wp-content/XML/ (86k chars au lieu de mock 1k)
- Nettoyage tags: Suppression <strong> dans extractElements() pour éviter parsing errors
- Doublons résilients: Tolérance doublons XML avec validation tags uniques
- Hiérarchie complète: StepExecutor génère 36 éléments depuis hierarchy.originalElement.name
- Format Google Sheets: Adaptation colonnes selon useVersionedSheet (17 legacy vs 21 versioned)
- Range Google Sheets: Force A1 avec INSERT_ROWS pour éviter décalage U:AO
- xmlTemplate optimisé: Exclusion du JSON metadata pour limite 50k chars
Résultat: 2151 mots, 36 éléments, sauvegarde correcte A-Q
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed OpenAI API key hardcoding in BrainConfig.js causing 401 errors
- Implemented proper Digital Ocean Spaces integration with AWS SDK
- Added deployArticle() function for HTML upload
- Fixed fetchXMLFromDigitalOcean() to retrieve from correct path
- Direct access to root bucket instead of wp-content/XML/
- Added aws-sdk dependency for S3-compatible operations
- Created comprehensive integration test suite
- Validated complete workflow: Google Sheets → DO XML → Processing
All external systems now operational:
✅ Google Sheets auth and data retrieval
✅ Digital Ocean Spaces upload/download
✅ XML template processing
✅ LLM API authentication
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>