'opus5_ethica_count_fix_' . date('His'), 'type' => 'bash_exec_root', 'priority' => 'P1', 'created_at' => date('c'), 'source' => 'opus5-pending-runner', 'description' => 'Fix ethica_count routing in master-router.php (ligne 5072 stub hostname → PG query)', 'commands' => [ 'sudo chattr -i /opt/wevia-brain/wevia-master-router.php', 'sudo php /var/www/html/api/opus-patch-ethica.php', 'sudo chattr +i /opt/wevia-brain/wevia-master-router.php' ], 'verify' => 'curl -sk -X POST http://127.0.0.1/api/wevia-master-api.php -d \'{"message":"combien ethica"}\' | grep -o "[0-9,]\\+ HCPs"', 'expected' => '141,661 HCPs', 'gold' => '/opt/wevads/vault/wevia-master-router-ETHICA-20260417-0041.gold.php', 'rollback' => 'sudo cp /opt/wevads/vault/wevia-master-router-ETHICA-20260417-0041.gold.php /opt/wevia-brain/wevia-master-router.php', 'status' => 'QUEUED' ]; // Task 2 : diag wevads tenant assignment (pas auto-fix, le plan dit "needs tenant list from Yacine") $task2 = [ 'id' => 'opus5_wevads_tenant_diag_' . date('His'), 'type' => 'bash_exec', 'priority' => 'P1', 'created_at' => date('c'), 'source' => 'opus5-pending-runner', 'description' => 'Scan + report WEVADS 6214 accounts sans tenant + proposer répartition selon 6 tenants actifs', 'commands' => [ 'env PGPASSWORD=admin123 psql -h 10.1.0.3 -U admin -d adx_system -tAc "SELECT tenant_id, COUNT(*) FROM office_accounts GROUP BY tenant_id ORDER BY 2 DESC LIMIT 15" > /tmp/opus5-tenant-dist.txt', 'cat /tmp/opus5-tenant-dist.txt', 'env PGPASSWORD=admin123 psql -h 10.1.0.3 -U admin -d adx_system -tAc "SELECT id, name, status, graph_accts FROM office_tenants WHERE status=\\\"active\\\" ORDER BY graph_accts DESC LIMIT 10" >> /tmp/opus5-tenant-dist.txt', 'cat /tmp/opus5-tenant-dist.txt' ], 'status' => 'QUEUED' ]; $queue[] = $task1; $queue[] = $task2; $w = file_put_contents($QF, json_encode($queue, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE)); echo json_encode([ 'ok' => $w > 0, 'queue_size' => count($queue), 'tasks_pushed' => [$task1['id'], $task2['id']], 'queue_file' => $QF, 'bytes_written' => $w ], JSON_PRETTY_PRINT);