riseup-squad18/APLICAR_MIGRATION_CONFIRMACAO.md
2025-12-06 19:13:27 -03:00

3.4 KiB

🔧 Aplicar Migration: Confirmation Status

⚠️ IMPORTANTE - LEIA PRIMEIRO

A tabela appointments não existe no seu banco de dados!

Você tem duas opções:

Opção A: Usar o Supabase REST API (Sistema já funciona)

O sistema está usando a API REST do Supabase que funciona sem migrations locais. Neste caso, você NÃO precisa aplicar esta migration. As notificações vão funcionar assim que você:

  1. Criar consultas pelo sistema
  2. As consultas terão os campos necessários automaticamente

Opção B: Aplicar Migration no Supabase Dashboard

Se você quer adicionar os campos de confirmação no banco existente:

🚀 Como Aplicar (Via Supabase Dashboard)

  1. Acesse: https://supabase.com/dashboard
  2. Selecione seu projeto
  3. Vá em: SQL Editor (menu lateral)
  4. Clique em: "New Query"
  5. Abra o arquivo: supabase\migrations\20251203000000_add_confirmation_status.sql
  6. Copie TODO o conteúdo do arquivo
  7. Cole no SQL Editor
  8. Clique em: RUN (botão verde)

📋 O que esta migration faz?

  • Verifica se a tabela appointments existe
  • Adiciona coluna confirmation_status (pending/confirmed/declined)
  • Adiciona coluna confirmed_at (timestamp da confirmação)
  • Cria índices para melhor performance
  • Atualiza consultas existentes automaticamente
  • Mostra mensagens de progresso

Como saber se funcionou?

Após executar, você verá mensagens como:

NOTICE: ✓ Coluna confirmation_status adicionada
NOTICE: ✓ Coluna confirmed_at adicionada
NOTICE: ✓ Índices criados
NOTICE: ✓ Consultas existentes atualizadas
NOTICE: ✓✓ Migration concluída com sucesso!

E verá uma tabela mostrando as colunas criadas.

📊 Testar

Após aplicar a migration:

  1. Acesse a aba Notificações no dashboard do paciente
  2. As consultas com status requested ou confirmed devem aparecer
  3. Clique em Confirmar Presença em uma consulta
  4. Verifique se o status mudou para confirmed e a notificação sumiu

🔍 Consultas Úteis

Ver todas as consultas com confirmação pendente:

SELECT id, patient_id, doctor_id, scheduled_at, status, confirmation_status
FROM appointments
WHERE confirmation_status = 'pending'
ORDER BY scheduled_at;

Ver confirmações de um paciente específico:

SELECT * FROM appointments
WHERE patient_id = 'SEU_PATIENT_ID'
  AND confirmation_status IS NOT NULL
ORDER BY scheduled_at DESC;

⚠️ Troubleshooting

Erro: "relation does not exist"

  • Certifique-se de que está conectado ao banco correto
  • Verifique se a tabela appointments existe

Erro: "column already exists"

  • A migration já foi aplicada anteriormente
  • Você pode ignorar este erro

As notificações não aparecem?

  1. Verifique se há consultas com status requested ou confirmed
  2. Confirme que confirmation_status = 'pending' ou NULL
  3. Verifique se o patient_id corresponde ao usuário logado
  4. Limpe o cache do navegador (Ctrl + Shift + R)

📝 Rollback (se necessário)

Se precisar reverter a migration:

-- Remover índices
DROP INDEX IF EXISTS idx_appointments_confirmation_status;
DROP INDEX IF EXISTS idx_appointments_patient_confirmation;

-- Remover colunas
ALTER TABLE appointments DROP COLUMN IF EXISTS confirmation_status;
ALTER TABLE appointments DROP COLUMN IF EXISTS confirmed_at;