-- Migration v1.6.0: Fixes for broadcast recipient_ids + feature keys + categories + engineer permissions -- 1. Add recipient_ids column to bot_broadcasts if missing ALTER TABLE bot_broadcasts ADD COLUMN IF NOT EXISTS recipient_ids JSONB DEFAULT '[]'::jsonb; -- 2. Fix feature_key auto_notifications → notifications UPDATE bot_features SET feature_key = 'notifications' WHERE feature_key = 'auto_notifications'; -- 3. Fix feature_key commercial_offer → commercial (match code) UPDATE bot_features SET feature_key = 'commercial' WHERE feature_key = 'commercial_offer'; -- 4. Replace categories with new set DELETE FROM bot_categories; INSERT INTO bot_categories (name, description, icon_emoji, keywords, sort_order) VALUES ('Аудит безопасности', 'Независимая оценка систем видеонаблюдения, СКУД, ОПС', '🔍', '["аудит","безопасность","оценка","видеонаблюдение","скуд","опс"]', 1), ('Сервисное обслуживание / SLA', 'Абонентское обслуживание по SLA-контракту', '🛡️', '["сервис","sla","абонентский","обслуживание","контракт"]', 2), ('Реагирование на инциденты', 'Срочное реагирование при нештатных ситуациях', '🚨', '["инцидент","реагирование","срочный","нештатный","авария"]', 3), ('Технический надзор', 'Контроль качества при монтаже и пусконаладке', '📐', '["надзор","технический","контроль","качество","монтаж","пусконаладка"]', 4), ('Проектная документация', 'Разработка и согласование проектной документации', '📄', '["проект","документация","разработка","согласование"]', 5), ('Риск-инжиниринг', 'Оценка рисков, BCP, DRP, стратегия безопасности', '⚡', '["риск","инжиниринг","bcp","drp","стратегия","безопасность"]', 6), ('Общий вопрос', 'Консультация или вопрос вне указанных категорий', '💬', '["консультация","вопрос","общий","другое"]', 7) ON CONFLICT DO NOTHING; -- 5. Add bot_* menu permissions for engineer role INSERT INTO role_menu_permissions (role, menu_key, visible) VALUES ('engineer', 'bot_analytics', true), ('engineer', 'bot_users', true), ('engineer', 'bot_conversations', true), ('engineer', 'bot_tickets', true), ('engineer', 'bot_handoffs', true), ('engineer', 'bot_notifications', true), ('engineer', 'bot_risk_questions', true), ('engineer', 'bot_broadcasts', true), ('engineer', 'bot_storage', true) ON CONFLICT (role, menu_key) DO NOTHING; -- 6. Drop stale view if exists DROP VIEW IF EXISTS bot_dashboard;