180 lines
12 KiB
PL/PgSQL
180 lines
12 KiB
PL/PgSQL
-- =============================================================================
|
|
-- FIX: Corrige acentuação perdida (caracteres ?? no banco)
|
|
-- =============================================================================
|
|
-- Causa: Seeds aplicados originalmente sem encoding UTF-8 correto.
|
|
-- Os ?? são bytes literais 0x3F (ASCII ?) onde deveria haver UTF-8.
|
|
-- Este fix faz UPDATE direto nos valores conhecidos.
|
|
-- =============================================================================
|
|
|
|
BEGIN;
|
|
|
|
SET client_encoding TO 'UTF8';
|
|
|
|
-- ============================================================
|
|
-- 1. PROFILES — full_name
|
|
-- ============================================================
|
|
UPDATE profiles SET full_name = 'Clínica Espaço Psi' WHERE id = 'aaaaaaaa-0003-0003-0003-000000000003' AND full_name != 'Clínica Espaço Psi';
|
|
UPDATE profiles SET full_name = 'Clínica Mente Sã' WHERE id = 'aaaaaaaa-0004-0004-0004-000000000004' AND full_name != 'Clínica Mente Sã';
|
|
UPDATE profiles SET full_name = 'Clínica Bem Estar' WHERE id = 'aaaaaaaa-0005-0005-0005-000000000005' AND full_name != 'Clínica Bem Estar';
|
|
UPDATE profiles SET full_name = 'Gabriela Secretária' WHERE id = 'aaaaaaaa-0011-0011-0011-000000000011' AND full_name != 'Gabriela Secretária';
|
|
|
|
-- ============================================================
|
|
-- 2. TENANTS — name
|
|
-- ============================================================
|
|
UPDATE tenants SET name = 'Clínica Espaço Psi' WHERE id = 'bbbbbbbb-0003-0003-0003-000000000003';
|
|
UPDATE tenants SET name = 'Clínica Mente Sã' WHERE id = 'bbbbbbbb-0004-0004-0004-000000000004';
|
|
UPDATE tenants SET name = 'Clínica Bem Estar' WHERE id = 'bbbbbbbb-0005-0005-0005-000000000005';
|
|
|
|
-- ============================================================
|
|
-- 3. DETERMINED_COMMITMENTS — name
|
|
-- ============================================================
|
|
UPDATE determined_commitments SET name = 'Sessão' WHERE native_key = 'session';
|
|
UPDATE determined_commitments SET name = 'Supervisão' WHERE native_key = 'supervision';
|
|
UPDATE determined_commitments SET name = 'Análise Pessoal' WHERE native_key = 'analysis';
|
|
|
|
-- ============================================================
|
|
-- 4. PLANS — name, description
|
|
-- ============================================================
|
|
UPDATE plans SET name = 'THERAPIST PRO', description = 'Plano profissional para terapeutas' WHERE key = 'therapist_pro' AND description LIKE '%??%';
|
|
UPDATE plans SET name = 'CLINIC PRO', description = 'Plano profissional para clínicas' WHERE key = 'clinic_pro' AND description LIKE '%??%';
|
|
UPDATE plans SET name = 'THERAPIST FREE', description = 'Plano gratuito para terapeutas' WHERE key = 'therapist_free' AND description LIKE '%??%';
|
|
UPDATE plans SET name = 'CLINIC FREE', description = 'Plano gratuito para clínicas' WHERE key = 'clinic_free' AND description LIKE '%??%';
|
|
|
|
-- ============================================================
|
|
-- 5. FEATURES — name, description
|
|
-- ============================================================
|
|
UPDATE features SET name = 'Agenda - Visualizar', description = 'Visualização da agenda' WHERE key = 'agenda.view';
|
|
UPDATE features SET name = 'Agenda - Gerenciar', description = 'Gerenciamento completo da agenda' WHERE key = 'agenda.manage';
|
|
UPDATE features SET name = 'Pacientes', description = 'Módulo de pacientes' WHERE key = 'patients';
|
|
UPDATE features SET name = 'Pacientes - Visualizar', description = 'Visualização de pacientes' WHERE key = 'patients.view';
|
|
UPDATE features SET name = 'Pacientes - Gerenciar', description = 'Gerenciamento completo de pacientes' WHERE key = 'patients.manage';
|
|
UPDATE features SET name = 'Agendamento Online', description = 'Sistema de agendamento online' WHERE key = 'online_scheduling';
|
|
UPDATE features SET name = 'Agendamento Online - Gerenciar', description = 'Gerenciamento do agendamento online' WHERE key = 'online_scheduling.manage';
|
|
UPDATE features SET name = 'Agendamento Online - Público', description = 'Página pública do agendador' WHERE key = 'online_scheduling.public';
|
|
UPDATE features SET name = 'Lembretes', description = 'Sistema de lembretes automáticos' WHERE key = 'reminders';
|
|
UPDATE features SET name = 'Relatórios Básicos', description = 'Relatórios básicos' WHERE key = 'reports_basic';
|
|
UPDATE features SET name = 'Relatórios Avançados', description = 'Relatórios avançados com exportação' WHERE key = 'reports_advanced';
|
|
UPDATE features SET name = 'Secretária', description = 'Funcionalidade de secretária' WHERE key = 'secretary';
|
|
UPDATE features SET name = 'Recepção Compartilhada', description = 'Recepção compartilhada entre terapeutas' WHERE key = 'shared_reception';
|
|
UPDATE features SET name = 'Salas', description = 'Gerenciamento de salas' WHERE key = 'rooms';
|
|
UPDATE features SET name = 'Intake Público', description = 'Formulário de intake público' WHERE key = 'intake_public';
|
|
UPDATE features SET name = 'Intakes PRO', description = 'Funcionalidades avançadas de intake' WHERE key = 'intakes_pro';
|
|
UPDATE features SET name = 'Branding Personalizado', description = 'Personalização de marca' WHERE key = 'custom_branding';
|
|
UPDATE features SET name = 'Acesso API', description = 'Acesso via API' WHERE key = 'api_access';
|
|
UPDATE features SET name = 'Log de Auditoria', description = 'Log de auditoria completo' WHERE key = 'audit_log';
|
|
UPDATE features SET name = 'Lembrete SMS', description = 'Lembretes via SMS' WHERE key = 'sms_reminder';
|
|
UPDATE features SET name = 'Calendário da Clínica', description = 'Visão consolidada do calendário' WHERE key = 'clinic_calendar';
|
|
UPDATE features SET name = 'Relatórios Avançados (Clínica)', description = 'Relatórios avançados da clínica' WHERE key = 'advanced_reports';
|
|
UPDATE features SET name = 'Supervisor - Acesso', description = 'Acesso ao módulo de supervisão' WHERE key = 'supervisor.access';
|
|
UPDATE features SET name = 'Supervisor - Convidar', description = 'Convidar supervisionados' WHERE key = 'supervisor.invite';
|
|
UPDATE features SET name = 'Supervisor - Sessões', description = 'Gerenciar sessões de supervisão' WHERE key = 'supervisor.sessions';
|
|
UPDATE features SET name = 'Supervisor - Relatórios', description = 'Relatórios de supervisão' WHERE key = 'supervisor.reports';
|
|
|
|
-- ============================================================
|
|
-- 6. EMAIL_TEMPLATES_GLOBAL — subject, body_html, body_text
|
|
-- ============================================================
|
|
UPDATE email_templates_global SET
|
|
subject = 'Lembrete: sua sessão amanhã às {{session_time}}',
|
|
body_text = 'Olá {{patient_name}}, lembrete da sua sessão amanhã às {{session_time}} com {{therapist_name}}.'
|
|
WHERE key = 'session.reminder';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Sessão confirmada — {{session_date}} às {{session_time}}',
|
|
body_text = 'Sua sessão com {{therapist_name}} em {{session_date}} às {{session_time}} foi confirmada.'
|
|
WHERE key = 'session.confirmation';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Sessão cancelada — {{session_date}}',
|
|
body_text = 'A sessão de {{session_date}} às {{session_time}} com {{therapist_name}} foi cancelada.'
|
|
WHERE key = 'session.cancellation';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Sessão reagendada — novo horário: {{session_date}} às {{session_time}}',
|
|
body_text = 'Sua sessão foi reagendada para {{session_date}} às {{session_time}} com {{therapist_name}}.'
|
|
WHERE key = 'session.rescheduled';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Recebemos seu cadastro — {{patient_name}}',
|
|
body_text = 'Olá {{patient_name}}, recebemos seu formulário de cadastro. Entraremos em contato em breve.'
|
|
WHERE key = 'intake.received';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Cadastro aprovado — Bem-vindo(a)!',
|
|
body_text = 'Olá {{patient_name}}, seu cadastro foi aprovado. Você já pode acessar a plataforma.'
|
|
WHERE key = 'intake.approved';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Cadastro não aprovado',
|
|
body_text = 'Olá {{patient_name}}, infelizmente seu cadastro não foi aprovado no momento.'
|
|
WHERE key = 'intake.rejected';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Solicitação aceita — {{session_date}} às {{session_time}}',
|
|
body_text = 'Sua solicitação de agendamento para {{session_date}} às {{session_time}} foi aceita.'
|
|
WHERE key = 'scheduler.request_accepted';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Solicitação não disponível',
|
|
body_text = 'Infelizmente o horário solicitado não está disponível. Por favor, escolha outro horário.'
|
|
WHERE key = 'scheduler.request_rejected';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Bem-vindo(a) à AgenciaPsi!',
|
|
body_text = 'Olá {{user_name}}, sua conta foi criada com sucesso. Acesse a plataforma para começar.'
|
|
WHERE key = 'system.welcome';
|
|
|
|
UPDATE email_templates_global SET
|
|
subject = 'Redefinição de senha — AgenciaPsi',
|
|
body_text = 'Clique no link abaixo para redefinir sua senha: {{reset_link}}'
|
|
WHERE key = 'system.password_reset';
|
|
|
|
-- ============================================================
|
|
-- 7. LOGIN_CAROUSEL_SLIDES — title, description
|
|
-- ============================================================
|
|
UPDATE login_carousel_slides SET
|
|
title = '<strong>Gestão clínica simplificada</strong>',
|
|
body = 'Gerencie agenda, pacientes e financeiro em um só lugar. Simples, rápido e seguro.'
|
|
WHERE ordem = 1;
|
|
|
|
UPDATE login_carousel_slides SET
|
|
title = '<strong>Múltiplos profissionais, uma só plataforma</strong>',
|
|
body = 'Ideal para clínicas com vários terapeutas. Cada profissional com sua agenda e seus pacientes.'
|
|
WHERE ordem = 2;
|
|
|
|
UPDATE login_carousel_slides SET
|
|
title = '<strong>Seguro, privado e sempre disponível</strong>',
|
|
body = 'Seus dados protegidos com criptografia. Acesse de qualquer lugar, a qualquer hora.'
|
|
WHERE ordem = 3;
|
|
|
|
-- ============================================================
|
|
-- 8. PATIENT_GROUPS (default groups) — name
|
|
-- ============================================================
|
|
UPDATE patient_groups SET nome = 'Crianças' WHERE nome LIKE 'Crian%' AND is_system = true;
|
|
UPDATE patient_groups SET nome = 'Adolescentes' WHERE nome LIKE 'Adolescen%' AND is_system = true;
|
|
UPDATE patient_groups SET nome = 'Idosos' WHERE nome LIKE 'Idoso%' AND is_system = true;
|
|
|
|
-- ============================================================
|
|
-- 9. AUTH.USERS — raw_user_meta_data (name field)
|
|
-- ============================================================
|
|
UPDATE auth.users SET raw_user_meta_data = jsonb_set(raw_user_meta_data, '{name}', '"Clínica Espaço Psi"') WHERE id = 'aaaaaaaa-0003-0003-0003-000000000003';
|
|
UPDATE auth.users SET raw_user_meta_data = jsonb_set(raw_user_meta_data, '{name}', '"Clínica Mente Sã"') WHERE id = 'aaaaaaaa-0004-0004-0004-000000000004';
|
|
UPDATE auth.users SET raw_user_meta_data = jsonb_set(raw_user_meta_data, '{name}', '"Clínica Bem Estar"') WHERE id = 'aaaaaaaa-0005-0005-0005-000000000005';
|
|
UPDATE auth.users SET raw_user_meta_data = jsonb_set(raw_user_meta_data, '{name}', '"Gabriela Secretária"') WHERE id = 'aaaaaaaa-0011-0011-0011-000000000011';
|
|
|
|
COMMIT;
|
|
|
|
-- ============================================================
|
|
DO $$
|
|
DECLARE
|
|
broken_count int;
|
|
BEGIN
|
|
SELECT count(*) INTO broken_count
|
|
FROM profiles WHERE full_name LIKE '%??%';
|
|
|
|
IF broken_count = 0 THEN
|
|
RAISE NOTICE 'fix_encoding_accents: Todos os acentos corrigidos com sucesso.';
|
|
ELSE
|
|
RAISE WARNING 'fix_encoding_accents: Ainda restam % registros com ?? em profiles.full_name', broken_count;
|
|
END IF;
|
|
END $$;
|