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

119 lines
4.0 KiB
Markdown

# 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](https://app.supabase.com)
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
```sql
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