- 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.
119 lines
4.0 KiB
Markdown
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
|