fix: el seed ya no borra la configuracion de IA del admin
config_json guarda tanto la estructura del bot (menus, flujos, comandos) como los ajustes que se editan desde el panel (ai_model, gemini_model, claude_model, temperatura, prompt, whisper). El seed reescribia el JSON entero, asi que cada corrida borraba lo segundo. Ahora conserva toda clave de primer nivel que el seed no declara, e imprime cuales conservo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
c8909e75db
commit
693623e10c
+24
-4
@@ -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 ────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user