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 ────────────────────────────────────────────────
|
// ─── 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("
|
$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)
|
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)
|
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) {
|
foreach ($companies as $co) {
|
||||||
|
echo "✔ Company {$co['id']} ({$co['display_name']})\n";
|
||||||
|
$cfg = configPreservando($db, (int)$co['id'], $configJson);
|
||||||
$stmtCo->execute([
|
$stmtCo->execute([
|
||||||
':id' => $co['id'],
|
':id' => $co['id'],
|
||||||
':name' => $co['name'],
|
':name' => $co['name'],
|
||||||
@@ -547,9 +568,8 @@ foreach ($companies as $co) {
|
|||||||
':bot_type' => $co['bot_type'],
|
':bot_type' => $co['bot_type'],
|
||||||
':requires_approval'=> $co['requires_approval'],
|
':requires_approval'=> $co['requires_approval'],
|
||||||
':is_active' => $co['is_active'],
|
':is_active' => $co['is_active'],
|
||||||
':config_json' => $configJsonStr,
|
':config_json' => $cfg,
|
||||||
]);
|
]);
|
||||||
echo "✔ Company {$co['id']} ({$co['display_name']}) OK\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Insert / update endpoints ────────────────────────────────────────────────
|
// ─── Insert / update endpoints ────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user