# 🔧 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: ```sql 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: ```sql 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: ```sql -- 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; ```