R2: git = source de vérité — src/nodes/ + build/extract intégrés au push

- src/nodes/*.js (6 nodes + template snapshot) = source de vérité unique.
- n8n-push.mjs reconstruit le JSON depuis src/ avant syntaxe+golden+PUT
  (src gagne toujours; n8n-extract.mjs pour resynchroniser si édition UI).
- n8n-build.mjs --check pour vérifier la synchro.
- Copies historiques déplacées dans archive/ (mortes, dérivées de la prod).
- .gitignore: backups locaux de rollback.
- AGENTS.md: règle R2 pour toutes les futures sessions (dont Qwen local).
- Validé: idempotence, mutation/restauration, pipeline push complet en réel.
This commit is contained in:
Tallagrand Thierry
2026-08-07 21:03:52 +02:00
parent b10c90c74f
commit 1ae8129658
78 changed files with 5132 additions and 0 deletions

View File

@@ -14,6 +14,21 @@ if (!INPUT) {
console.error('Usage: node tools/n8n-push.mjs <inputFile> [workflowId]');
process.exit(1);
}
// R2 : src/nodes/ = SOURCE DE VÉRITÉ pour le workflow EVCS.
// Le build injecte src/nodes/*.js dans le JSON AVANT toute vérification :
// toute édition faite directement dans le JSON (ou l'UI n8n non ré-extraite)
// est écrasée par src/. Workflow EVCS uniquement.
if (path.basename(INPUT) === 'evcs-surplus-controller-v2.6.json' && fs.existsSync('src/nodes')) {
console.log('Build src/nodes/ → JSON (source de vérité : src/)...');
const { spawnSync } = await import('child_process');
const b = spawnSync('node', ['tools/n8n-build.mjs'], { stdio: 'inherit' });
if (b.status !== 0) {
console.error('ABANDON: échec du build src → JSON.');
process.exit(1);
}
}
const local = JSON.parse(fs.readFileSync(INPUT, 'utf8'));
const WORKFLOW_ID = process.argv[3] || local.id || 'ATswvGfG4KJUls0K';