INSERT INTO channels (id, name, channel_type, base_url, api_key, models, priority, price_rate, balance, is_active, status, weight, created_at, updated_at) SELECT * FROM (VALUES ('a0000000-0000-0000-0000-000000000010'::uuid, 'local-ollama', 'custom', 'http://vgo-customer-service:11434', '', '["vgo-customer-service"]'::jsonb, 100, 1, 0, true, 'online', 0, NOW(), NOW()), ('a0000000-0000-0000-0000-000000000011'::uuid, 'opencode-responses', 'openai', 'https://opencode.ai/zen/v1/responses', '', '["gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.2","gpt-5.2-codex","gpt-5.1","gpt-5.1-codex","gpt-5.1-codex-max","gpt-5.1-codex-mini","gpt-5","gpt-5-codex","gpt-5-nano"]'::jsonb, 10, 1, 0, true, 'online', 0, NOW(), NOW()), ('a0000000-0000-0000-0000-000000000012'::uuid, 'opencode-chat', 'openai', 'https://opencode.ai/zen/v1/chat/completions', '', '["glm-5","kimi-k2.5"]'::jsonb, 5, 1, 0, true, 'online', 0, NOW(), NOW()) ) AS t WHERE NOT EXISTS (SELECT 1 FROM channels WHERE name = t.column2); INSERT INTO channel_models (id, channel_id, model_name, protocol, input_price, output_price, cache_read_price, cache_write_price, is_active, created_at) SELECT * FROM (VALUES ('a0000000-0000-0000-0000-000000000020'::uuid, 'a0000000-0000-0000-0000-000000000010'::uuid, 'vgo-customer-service', 'openai', 0, 0, 0, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000021'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.4', 'openai-responses', 5.6, 33.1, 0.58, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000022'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.4-mini', 'openai-responses', 2.51, 14.29, 0.29, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000023'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.4-nano', 'openai-responses', 0.78, 4.08, 0.1, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000024'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.3-codex', 'openai-responses', 4.39, 34.34, 0.47, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000025'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.3-codex-spark', 'openai-responses', 4.39, 34.34, 0.47, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000026'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.2', 'openai-responses', 3.96, 30.91, 0.42, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000027'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.2-codex', 'openai-responses', 4.39, 34.34, 0.47, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000028'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.1', 'openai-responses', 2.46, 18.81, 0.27, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000029'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.1-codex', 'openai-responses', 2.73, 20.89, 0.3, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000030'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.1-codex-max', 'openai-responses', 3.17, 24.56, 0.35, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000031'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5.1-codex-mini', 'openai-responses', 0.93, 6.43, 0.13, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000032'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5', 'openai-responses', 2.46, 18.81, 0.27, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000033'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5-codex', 'openai-responses', 2.73, 20.89, 0.3, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000034'::uuid, 'a0000000-0000-0000-0000-000000000011'::uuid, 'gpt-5-nano', 'openai-responses', 0.05, 0.2, 0.02, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000035'::uuid, 'a0000000-0000-0000-0000-000000000012'::uuid, 'glm-5', 'openai', 3.29, 10.21, 0.66, 0, true, NOW()), ('a0000000-0000-0000-0000-000000000036'::uuid, 'a0000000-0000-0000-0000-000000000012'::uuid, 'kimi-k2.5', 'openai', 2.03, 9.58, 0.35, 0, true, NOW()) ) AS t WHERE NOT EXISTS (SELECT 1 FROM channel_models cm WHERE cm.model_name = t.column4);