feat: implement comprehensive chat system with user presence management, notification handling, and avatar integration; enhance UI components for improved user experience
This commit is contained in:
168
RESUMO_PROGRESSO_E_PENDENCIAS.md
Normal file
168
RESUMO_PROGRESSO_E_PENDENCIAS.md
Normal file
@@ -0,0 +1,168 @@
|
||||
# 📊 Resumo do Progresso do Projeto - 28 de Outubro de 2025
|
||||
|
||||
## ✅ Conquistas do Dia
|
||||
|
||||
### 1. Sistema de Avatares - FUNCIONANDO ✨
|
||||
- **Problema Original**: API DiceBear retornando erro 400 (parâmetros inválidos)
|
||||
- **Solução**: Criado utilitário `avatarGenerator.ts` que usa URLs simplificadas da API
|
||||
- **Resultado**: 32 avatares aparecendo corretamente (16 masculinos + 16 femininos)
|
||||
- **Arquivos Modificados**:
|
||||
- `apps/web/src/lib/utils/avatarGenerator.ts` (criado)
|
||||
- `apps/web/src/routes/(dashboard)/perfil/+page.svelte`
|
||||
- `apps/web/src/lib/components/chat/UserAvatar.svelte`
|
||||
|
||||
### 2. Autenticação do Perfil - FUNCIONANDO ✅
|
||||
- **Problema**: Query `obterPerfil` falhava em identificar usuário logado
|
||||
- **Causa**: Erro de variável (`sessaoAtual` vs `sessaoAtiva`)
|
||||
- **Solução**: Corrigido nome da variável em `packages/backend/convex/usuarios.ts`
|
||||
- **Resultado**: Backend encontra usuário corretamente (logs confirmam: "✅ Usuário encontrado: Administrador")
|
||||
|
||||
### 3. Seeds do Banco de Dados - POPULADO ✅
|
||||
- Executado com sucesso `npx convex run seed:seedDatabase`
|
||||
- Dados criados:
|
||||
- 4 roles (admin, ti, usuario_avancado, usuario)
|
||||
- Usuário admin (matrícula: 0000, senha: Admin@123)
|
||||
- 13 símbolos
|
||||
- 3 funcionários
|
||||
- 3 usuários para funcionários
|
||||
- 2 solicitações de acesso
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Problemas Pendentes
|
||||
|
||||
### 1. Campos de Informações Básicas Vazios (PARCIALMENTE RESOLVIDO)
|
||||
**Status**: Backend retorna dados ✅ | Frontend não exibe ❌
|
||||
|
||||
**O que funciona:**
|
||||
- Backend: `obterPerfil` retorna corretamente:
|
||||
```typescript
|
||||
{
|
||||
nome: "Administrador",
|
||||
email: "admin@sgse.pe.gov.br",
|
||||
matricula: "0000"
|
||||
}
|
||||
```
|
||||
- Logs Convex confirmam: `✅ Usuário encontrado: 'Administrador'`
|
||||
- Header exibe corretamente: "Administrador / admin"
|
||||
|
||||
**O que NÃO funciona:**
|
||||
- Campos Nome, Email, Matrícula na página de perfil aparecem vazios
|
||||
- Valores testados no browser: `element.value = ""`
|
||||
|
||||
**Tentativas de Correção:**
|
||||
1. ✅ Adicionado `perfil?.nome ?? ''` (optional chaining)
|
||||
2. ✅ Criado estados locais (`nome`, `email`, `matricula`) com `$state`
|
||||
3. ✅ Adicionado `$effect` para sincronizar `perfil` → estados locais
|
||||
4. ✅ Atualizado inputs para usar estados locais ao invés de `perfil?.nome`
|
||||
5. ❌ **Ainda não funciona** - campos permanecem vazios
|
||||
|
||||
**Próxima Tentativa Sugerida:**
|
||||
- Adicionar `console.log` no `$effect` para debug
|
||||
- Verificar se `perfil` está realmente sendo populado pelo `useQuery`
|
||||
- Possivelmente usar `bind:value={nome}` ao invés de `value={nome}`
|
||||
|
||||
---
|
||||
|
||||
### 2. Sistema de Chat - NÃO INICIADO
|
||||
|
||||
**Requisitos do Usuário:**
|
||||
> "vamos ter que criar um sistema completo de chat para comunicação entre os usuários do nosso sistema... devemos encarar o chat como se fosse uma caixa de email onde conseguimos enxergar nossos contatos, selecionar e enviar uma mensagem"
|
||||
|
||||
**Especificações:**
|
||||
- ✅ Backend completo já implementado em `packages/backend/convex/chat.ts`
|
||||
- ✅ Frontend com componentes criados
|
||||
- ❌ **PENDENTE**: Ajustar comportamento para "caixa de email"
|
||||
- Listar TODOS os usuários do sistema (online ou offline)
|
||||
- Permitir selecionar destinatário
|
||||
- Enviar mensagem (mesmo para usuários offline)
|
||||
- Usuário logado = "anfitrião" / Outros = "destinatários"
|
||||
|
||||
**Arquivos a Modificar:**
|
||||
- `apps/web/src/lib/components/chat/ChatList.svelte`
|
||||
- `apps/web/src/lib/components/chat/NewConversationModal.svelte`
|
||||
- `apps/web/src/lib/components/chat/ChatWidget.svelte`
|
||||
|
||||
---
|
||||
|
||||
### 3. Atualização de Avatares - NÃO INICIADO
|
||||
|
||||
**Requisito do Usuário:**
|
||||
> "depois que vc concluir faça uma atualização das imagens escolhida nos avatares por novos personagens, com aspectos sorridentes e olhos abertos ou sérios"
|
||||
|
||||
**Seeds Atuais:**
|
||||
```typescript
|
||||
"avatar-m-1": "John",
|
||||
"avatar-m-2": "Peter",
|
||||
// ... (todos nomes simples)
|
||||
```
|
||||
|
||||
**Ação Necessária:**
|
||||
- Atualizar seeds em `apps/web/src/lib/utils/avatarGenerator.ts`
|
||||
- Novos seeds devem gerar personagens:
|
||||
- Sorridentes E olhos abertos, OU
|
||||
- Sérios E olhos abertos
|
||||
- Manter variedade de:
|
||||
- Cores de pele
|
||||
- Tipos de cabelo
|
||||
- Roupas (formais/casuais)
|
||||
|
||||
---
|
||||
|
||||
## 📋 Checklist de Tarefas
|
||||
|
||||
- [x] **TODO 1**: Avatares aparecendo corretamente ✅
|
||||
- [ ] **TODO 2**: Corrigir carregamento de dados de perfil (Nome, Email, Matrícula) 🔄
|
||||
- [ ] **TODO 3**: Ajustar chat para funcionar como 'caixa de email' - listar todos usuários ⏳
|
||||
- [ ] **TODO 4**: Implementar seleção de destinatário e envio de mensagens no chat ⏳
|
||||
- [ ] **TODO 5**: Atualizar seeds dos avatares com novos personagens (sorridentes/sérios) ⏳
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Comandos Úteis para Testes
|
||||
|
||||
```bash
|
||||
# Ver logs do Convex (backend)
|
||||
cd packages/backend
|
||||
npx convex logs --history 30
|
||||
|
||||
# Executar seed novamente (se necessário)
|
||||
npx convex run seed:seedDatabase
|
||||
|
||||
# Limpar banco (CUIDADO!)
|
||||
npx convex run seed:clearDatabase
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 Observações Importantes
|
||||
|
||||
1. **Autenticação Customizada**: O sistema usa sessões customizadas (tabela `sessoes`), não Better Auth
|
||||
2. **Svelte 5 Runes**: Projeto usa Svelte 5 com sintaxe nova (`$state`, `$effect`, `$derived`)
|
||||
3. **Convex Storage**: Arquivos são armazenados como `Id<"_storage">` (não URLs diretas)
|
||||
4. **API DiceBear**: Usar parâmetros mínimos para evitar erros 400
|
||||
|
||||
---
|
||||
|
||||
## 📞 Próximos Passos Sugeridos
|
||||
|
||||
### Passo 1: Debug dos Campos de Perfil (PRIORIDADE ALTA)
|
||||
1. Adicionar `console.log` no `$effect` para ver se `perfil` está populated
|
||||
2. Verificar se `useQuery` retorna `undefined` inicialmente
|
||||
3. Tentar `bind:value` ao invés de `value=`
|
||||
|
||||
### Passo 2: Ajustar Chat (PRIORIDADE MÉDIA)
|
||||
1. Modificar `NewConversationModal` para listar todos usuários
|
||||
2. Ajustar `ChatList` para exibir como "caixa de entrada"
|
||||
3. Implementar envio para usuários offline
|
||||
|
||||
### Passo 3: Novos Avatares (PRIORIDADE BAIXA)
|
||||
1. Pesquisar seeds que geram expressões desejadas
|
||||
2. Atualizar `avatarSeeds` em `avatarGenerator.ts`
|
||||
3. Testar visualmente cada avatar
|
||||
|
||||
---
|
||||
|
||||
**Última Atualização**: 28/10/2025 - Sessão pausada pelo usuário
|
||||
**Status Geral**: 🟡 Parcialmente Funcional - Avatares OK | Perfil com bug | Chat pendente
|
||||
|
||||
Reference in New Issue
Block a user