riseup-squad18/MENSAGENS-SETUP.md
Seu Nome 04c6de47d5 feat: update Supabase connection details and enhance messaging functionality
- Changed Supabase URL and anon key for the connection.
- Added a cache buster file for page caching management.
- Integrated ChatMessages component into AcompanhamentoPaciente and MensagensMedico pages for improved messaging interface.
- Created new MensagensPaciente page for patient messaging.
- Updated PainelMedico to include messaging functionality with patients.
- Enhanced message service to support conversation retrieval and message sending.
- Added a test HTML file for Supabase connection verification and message table interaction.
2025-11-26 00:06:50 -03:00

4.0 KiB

Sistema de Mensagens - MediConnect

Configuração do Supabase

Para habilitar o sistema de mensagens entre médicos e pacientes, você precisa criar a tabela messages no Supabase.

Passo 1: Acessar o Supabase

  1. Acesse o Supabase Dashboard
  2. Selecione seu projeto (yuanqfswhberkoevtmfr)

Passo 2: Criar a tabela

  1. No menu lateral, clique em SQL Editor
  2. Clique em New Query
  3. Copie todo o conteúdo do arquivo scripts/create-messages-table.sql
  4. Cole no editor SQL
  5. Clique em Run ou pressione Ctrl+Enter

O script irá:

  • Criar a tabela messages com os campos necessários
  • Criar índices para otimizar as consultas
  • Configurar Row Level Security (RLS) para garantir que usuários só vejam suas próprias mensagens
  • Habilitar Realtime para receber mensagens instantaneamente

Estrutura da Tabela

messages
├── id (UUID, PK)
├── sender_id (UUID, FK -> users.id)
├── receiver_id (UUID, FK -> users.id)
├── content (TEXT)
├── read (BOOLEAN)
├── created_at (TIMESTAMPTZ)
└── updated_at (TIMESTAMPTZ)

Funcionalidades Implementadas

Para Médicos (PainelMedico)

  • Ver lista de pacientes disponíveis para iniciar conversa
  • Ver conversas recentes com pacientes
  • Enviar e receber mensagens em tempo real
  • Ver contador de mensagens não lidas
  • Marcar mensagens como lidas automaticamente

Para Pacientes (AcompanhamentoPaciente)

  • Ver lista de médicos disponíveis para iniciar conversa
  • Ver conversas recentes com médicos
  • Enviar e receber mensagens em tempo real
  • Ver contador de mensagens não lidas
  • Marcar mensagens como lidas automaticamente

Componentes Criados

ChatMessages

Componente reutilizável que gerencia:

  • Lista de conversas
  • Interface de chat
  • Envio de mensagens
  • Recebimento em tempo real via Supabase Realtime
  • Marcação automática de mensagens como lidas

messageService

Serviço que fornece métodos para:

  • getConversations() - Lista conversas do usuário
  • getMessagesBetweenUsers() - Busca mensagens entre dois usuários
  • sendMessage() - Envia uma mensagem
  • markMessagesAsRead() - Marca mensagens como lidas
  • subscribeToMessages() - Inscreve para receber mensagens em tempo real

Segurança

O sistema implementa Row Level Security (RLS) no Supabase com as seguintes políticas:

  1. Leitura: Usuários só podem ver mensagens que enviaram ou receberam
  2. Inserção: Usuários só podem enviar mensagens como remetentes
  3. Atualização: Usuários só podem atualizar mensagens que receberam (para marcar como lidas)
  4. Exclusão: Usuários só podem excluir mensagens que enviaram

Uso

Médico enviando mensagem para paciente:

  1. Acesse o painel do médico
  2. Clique na aba "Mensagens"
  3. Selecione um paciente da lista ou de conversas recentes
  4. Digite a mensagem e clique em "Enviar"

Paciente enviando mensagem para médico:

  1. Acesse o acompanhamento do paciente
  2. Clique na aba "Mensagens"
  3. Selecione um médico da lista ou de conversas recentes
  4. Digite a mensagem e clique em "Enviar"

Notificações em Tempo Real

O sistema usa Supabase Realtime para entregar mensagens instantaneamente. Quando uma nova mensagem chega:

  • A lista de conversas é atualizada automaticamente
  • Se a conversa está aberta, a mensagem aparece imediatamente
  • O contador de mensagens não lidas é atualizado

Troubleshooting

Mensagens não aparecem

  • Verifique se a tabela foi criada corretamente no Supabase
  • Verifique se o Realtime está habilitado para a tabela messages
  • Confira se as políticas RLS estão ativas

Erro ao enviar mensagem

  • Verifique se o usuário está autenticado
  • Confirme que o sender_id e receiver_id são válidos
  • Verifique as permissões RLS no Supabase

Mensagens não chegam em tempo real

  • Verifique se a tabela messages está na publicação supabase_realtime
  • Confira o console do navegador para erros de conexão WebSocket
  • Teste a conexão com o Supabase