diff --git a/setup/seed_palmas.php b/setup/seed_palmas.php index 76d270e..76d12fe 100644 --- a/setup/seed_palmas.php +++ b/setup/seed_palmas.php @@ -519,10 +519,29 @@ $companies = [ ], ]; -$configJsonStr = json_encode($configJson, JSON_UNESCAPED_UNICODE); - // ─── Insert / update companies ──────────────────────────────────────────────── +/** + * El seed solo es dueño de la estructura del bot (menús, flujos, comandos...). + * Todo lo demás que viva en config_json —modelos de IA, temperatura, prompt, + * whisper— lo configura el admin y debe sobrevivir a cada corrida. + */ +function configPreservando(PDO $db, int $companyId, array $configSeed): string +{ + $stmt = $db->prepare("SELECT config_json FROM companies WHERE id = ? LIMIT 1"); + $stmt->execute([$companyId]); + $actual = json_decode((string)$stmt->fetchColumn(), true); + + if (is_array($actual)) { + $conservadas = array_diff_key($actual, $configSeed); + if ($conservadas) { + $configSeed = array_merge($configSeed, $conservadas); + echo " ↳ conservadas: " . implode(', ', array_keys($conservadas)) . "\n"; + } + } + return json_encode($configSeed, JSON_UNESCAPED_UNICODE); +} + $stmtCo = $db->prepare(" INSERT INTO companies (id, name, display_name, phone_number_id, display_phone, api_base_url, api_key, bot_type, requires_approval, is_active, config_json) VALUES (:id, :name, :display_name, :phone_number_id, :display_phone, :api_base_url, :api_key, :bot_type, :requires_approval, :is_active, :config_json) @@ -536,6 +555,8 @@ $stmtCo = $db->prepare(" "); foreach ($companies as $co) { + echo "✔ Company {$co['id']} ({$co['display_name']})\n"; + $cfg = configPreservando($db, (int)$co['id'], $configJson); $stmtCo->execute([ ':id' => $co['id'], ':name' => $co['name'], @@ -547,9 +568,8 @@ foreach ($companies as $co) { ':bot_type' => $co['bot_type'], ':requires_approval'=> $co['requires_approval'], ':is_active' => $co['is_active'], - ':config_json' => $configJsonStr, + ':config_json' => $cfg, ]); - echo "✔ Company {$co['id']} ({$co['display_name']}) OK\n"; } // ─── Insert / update endpoints ────────────────────────────────────────────────