remove arquivos desnecessarios

This commit is contained in:
2025-10-28 14:53:25 -03:00
parent 08cc9379f8
commit d1715f358a
57 changed files with 767 additions and 14149 deletions

View File

@@ -1,84 +0,0 @@
# 🔐 Guia de Variáveis de Ambiente - Backend Convex
## 📋 Variáveis Obrigatórias
### 1. BETTER_AUTH_SECRET
**Status:** 🔴 **OBRIGATÓRIO em Produção**
**Descrição:** Chave secreta para criptografia de tokens de autenticação
**Como gerar:**
```powershell
# Windows PowerShell
[Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32))
```
```bash
# Linux/Mac
openssl rand -base64 32
```
**Onde configurar:** Convex Dashboard > Settings > Environment Variables
---
### 2. SITE_URL
**Status:** 🔴 **OBRIGATÓRIO**
**Descrição:** URL base da aplicação
**Valores:**
- Desenvolvimento: `http://localhost:5173`
- Produção: `https://sgse.pe.gov.br` (substitua pela URL real)
**Onde configurar:** Convex Dashboard > Settings > Environment Variables
---
## ⚙️ Como as variáveis são usadas
Estas variáveis são carregadas em `packages/backend/convex/auth.ts`:
```typescript
// Fallback para desenvolvimento local
const siteUrl = process.env.SITE_URL || process.env.CONVEX_SITE_URL || "http://localhost:5173";
const authSecret = process.env.BETTER_AUTH_SECRET;
```
### Comportamento:
1. **`siteUrl`:**
- Primeiro tenta usar `SITE_URL`
- Se não existir, tenta `CONVEX_SITE_URL`
- Se nenhum estiver configurado, usa `http://localhost:5173` (apenas para desenvolvimento)
2. **`authSecret`:**
- Usa `BETTER_AUTH_SECRET` se configurado
- Se não configurado, Better Auth usará um secret padrão (⚠️ INSEGURO em produção!)
---
## ✅ Checklist de Configuração
### Desenvolvimento Local
- [ ] Sistema funciona sem configurar (usa valores padrão)
- [ ] Mensagens de aviso são esperadas e podem ser ignoradas
### Produção
- [ ] `BETTER_AUTH_SECRET` configurado no Convex Dashboard
- [ ] `SITE_URL` configurado no Convex Dashboard
- [ ] Secret gerado usando método seguro
- [ ] URL de produção está correta
- [ ] Mensagens de erro não aparecem mais
---
## 📖 Mais Informações
Consulte o arquivo `CONFIGURACAO_PRODUCAO.md` na raiz do projeto para instruções detalhadas.

View File

@@ -123,9 +123,9 @@ export const criarOuBuscarConversaIndividual = mutation({
handler: async (ctx, args) => {
// TENTAR BETTER AUTH PRIMEIRO
const identity = await ctx.auth.getUserIdentity();
let usuarioAtual = null;
if (identity && identity.email) {
// Buscar por email (Better Auth)
usuarioAtual = await ctx.db
@@ -133,7 +133,7 @@ export const criarOuBuscarConversaIndividual = mutation({
.withIndex("by_email", (q) => q.eq("email", identity.email!))
.first();
}
// SE NÃO ENCONTROU, BUSCAR POR SESSÃO ATIVA (Sistema customizado)
if (!usuarioAtual) {
const sessaoAtiva = await ctx.db
@@ -141,7 +141,7 @@ export const criarOuBuscarConversaIndividual = mutation({
.filter((q) => q.eq(q.field("ativo"), true))
.order("desc")
.first();
if (sessaoAtiva) {
usuarioAtual = await ctx.db.get(sessaoAtiva.usuarioId);
}
@@ -184,7 +184,11 @@ export const enviarMensagem = mutation({
args: {
conversaId: v.id("conversas"),
conteudo: v.string(),
tipo: v.union(v.literal("texto"), v.literal("arquivo"), v.literal("imagem")),
tipo: v.union(
v.literal("texto"),
v.literal("arquivo"),
v.literal("imagem")
),
arquivoId: v.optional(v.id("_storage")),
arquivoNome: v.optional(v.string()),
arquivoTamanho: v.optional(v.number()),
@@ -362,7 +366,10 @@ export const reagirMensagem = mutation({
} else {
// Adicionar reação
await ctx.db.patch(args.mensagemId, {
reagiuPor: [...reacoes, { usuarioId: usuarioAtual._id, emoji: args.emoji }],
reagiuPor: [
...reacoes,
{ usuarioId: usuarioAtual._id, emoji: args.emoji },
],
});
}
@@ -659,7 +666,9 @@ export const listarConversas = query({
m.remetenteId !== usuarioAtual._id
).length;
} else {
naoLidas = mensagens.filter((m) => m.remetenteId !== usuarioAtual._id).length;
naoLidas = mensagens.filter(
(m) => m.remetenteId !== usuarioAtual._id
).length;
}
return {
@@ -757,10 +766,15 @@ export const obterMensagensAgendadas = query({
// Filtrar apenas as do usuário atual
const minhasMensagensAgendadas = mensagens.filter(
(m) => m.remetenteId === usuarioAtual._id && m.agendadaPara && m.agendadaPara > Date.now()
(m) =>
m.remetenteId === usuarioAtual._id &&
m.agendadaPara &&
m.agendadaPara > Date.now()
);
return minhasMensagensAgendadas.sort((a, b) => (a.agendadaPara || 0) - (b.agendadaPara || 0));
return minhasMensagensAgendadas.sort(
(a, b) => (a.agendadaPara || 0) - (b.agendadaPara || 0)
);
},
});
@@ -784,9 +798,7 @@ export const obterNotificacoes = query({
let query = ctx.db
.query("notificacoes")
.withIndex("by_usuario", (q) =>
q.eq("usuarioId", usuarioAtual._id)
);
.withIndex("by_usuario", (q) => q.eq("usuarioId", usuarioAtual._id));
if (args.apenasPendentes) {
query = ctx.db
@@ -935,11 +947,11 @@ export const buscarMensagens = query({
let mensagens: any[] = [];
if (args.conversaId) {
if (args.conversaId !== undefined) {
// Buscar em conversa específica
const mensagensConversa = await ctx.db
.query("mensagens")
.withIndex("by_conversa", (q) => q.eq("conversaId", args.conversaId))
.withIndex("by_conversa", (q) => q.eq("conversaId", args.conversaId!))
.collect();
mensagens = mensagensConversa;
} else {
@@ -1008,7 +1020,9 @@ export const obterDigitando = query({
.collect();
// Filtrar usuário atual e buscar informações
const digitandoFiltrado = digitando.filter((d) => d.usuarioId !== usuarioAtual._id);
const digitandoFiltrado = digitando.filter(
(d) => d.usuarioId !== usuarioAtual._id
);
const usuarios = await Promise.all(
digitandoFiltrado.map(async (d) => {
@@ -1054,7 +1068,9 @@ export const contarNaoLidas = query({
if (leitura) {
return mensagens.filter(
(m) => m.enviadaEm > (leitura.lidaEm || 0) && m.remetenteId !== usuarioAtual._id
(m) =>
m.enviadaEm > (leitura.lidaEm || 0) &&
m.remetenteId !== usuarioAtual._id
).length;
}
@@ -1143,4 +1159,3 @@ export const limparIndicadoresDigitacao = internalMutation({
return indicadoresAntigos.length;
},
});

View File

@@ -1,114 +0,0 @@
# Script para criar arquivo .env
# Usar: .\criar-env.ps1
Write-Host ""
Write-Host "════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host " 🔐 CRIAR ARQUIVO .env - SGSE (Convex Local)" -ForegroundColor Cyan
Write-Host "════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host ""
# Verificar se .env já existe
if (Test-Path ".env") {
Write-Host "⚠️ ATENÇÃO: Arquivo .env já existe!" -ForegroundColor Yellow
Write-Host ""
$resposta = Read-Host "Deseja sobrescrever? (S/N)"
if ($resposta -ne "S" -and $resposta -ne "s") {
Write-Host ""
Write-Host "❌ Operação cancelada. Arquivo .env mantido." -ForegroundColor Red
Write-Host ""
pause
exit
}
}
Write-Host ""
Write-Host "[1/3] Criando arquivo .env..." -ForegroundColor Yellow
$conteudo = @"
#
# CONFIGURAÇÃO DE AMBIENTE - SGSE
#
# Segurança Better Auth
BETTER_AUTH_SECRET=+Nfg4jTxPv1giF5MlmyYTxpU/VkS3QaDOvgSWd+QmbY=
# URL da aplicação
SITE_URL=http://localhost:5173
#
# IMPORTANTE - SEGURANÇA
#
# 1. Este arquivo NÃO deve ser commitado no Git
# 2. Antes de ir para produção, gere um NOVO secret
# 3. Em produção, altere SITE_URL para a URL real
#
"@
try {
$conteudo | Out-File -FilePath ".env" -Encoding UTF8 -NoNewline
Write-Host "✅ Arquivo .env criado com sucesso!" -ForegroundColor Green
} catch {
Write-Host "❌ ERRO ao criar arquivo .env: $_" -ForegroundColor Red
pause
exit 1
}
Write-Host ""
Write-Host "[2/3] Verificando .gitignore..." -ForegroundColor Yellow
if (Test-Path ".gitignore") {
$gitignoreContent = Get-Content ".gitignore" -Raw
if ($gitignoreContent -notmatch "\.env") {
Add-Content -Path ".gitignore" -Value "`n.env`n.env.local`n.env.*.local"
Write-Host "✅ .env adicionado ao .gitignore" -ForegroundColor Green
} else {
Write-Host "✅ .env já está no .gitignore" -ForegroundColor Green
}
} else {
@"
.env
.env.local
.env.*.local
"@ | Out-File -FilePath ".gitignore" -Encoding UTF8
Write-Host "✅ .gitignore criado" -ForegroundColor Green
}
Write-Host ""
Write-Host "[3/3] Resumo da configuração:" -ForegroundColor Yellow
Write-Host ""
Write-Host "┌─────────────────────────────────────────────────────────┐" -ForegroundColor Cyan
Write-Host "│ ✅ Arquivo criado: packages/backend/.env │" -ForegroundColor Cyan
Write-Host "│ │" -ForegroundColor Cyan
Write-Host "│ Variáveis configuradas: │" -ForegroundColor Cyan
Write-Host "│ • BETTER_AUTH_SECRET: Configurado ✅ │" -ForegroundColor Cyan
Write-Host "│ • SITE_URL: http://localhost:5173 ✅ │" -ForegroundColor Cyan
Write-Host "└─────────────────────────────────────────────────────────┘" -ForegroundColor Cyan
Write-Host ""
Write-Host "════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host " 📋 PRÓXIMOS PASSOS" -ForegroundColor Cyan
Write-Host "════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host ""
Write-Host "1. Reinicie o servidor Convex:" -ForegroundColor White
Write-Host " > bunx convex dev" -ForegroundColor Gray
Write-Host ""
Write-Host "2. Reinicie o servidor Web (em outro terminal):" -ForegroundColor White
Write-Host " > cd ..\..\apps\web" -ForegroundColor Gray
Write-Host " > bun run dev" -ForegroundColor Gray
Write-Host ""
Write-Host "3. Verifique que as mensagens de erro pararam ✅" -ForegroundColor White
Write-Host ""
Write-Host "════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host " ⚠️ LEMBRE-SE" -ForegroundColor Cyan
Write-Host "════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host ""
Write-Host "• NÃO commite o arquivo .env no Git" -ForegroundColor Yellow
Write-Host "• Gere um NOVO secret antes de ir para produção" -ForegroundColor Yellow
Write-Host "• Altere SITE_URL quando for para produção" -ForegroundColor Yellow
Write-Host ""
Write-Host "Pressione qualquer tecla para continuar..." -ForegroundColor Gray
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

View File

@@ -1,18 +0,0 @@
# ══════════════════════════════════════════════════════════
# CONFIGURAÇÃO DE AMBIENTE - SGSE
# ══════════════════════════════════════════════════════════
# Segurança Better Auth
BETTER_AUTH_SECRET=+Nfg4jTxPv1giF5MlmyYTxpU/VkS3QaDOvgSWd+QmbY=
# URL da aplicação
SITE_URL=http://localhost:5173
# ══════════════════════════════════════════════════════════
# IMPORTANTE - SEGURANÇA
# ══════════════════════════════════════════════════════════
# 1. Este arquivo NÃO deve ser commitado no Git
# 2. Antes de ir para produção, gere um NOVO secret
# 3. Em produção, altere SITE_URL para a URL real
# ══════════════════════════════════════════════════════════

View File

@@ -1,49 +0,0 @@
# Script para iniciar Convex local e popular o banco de dados
Write-Host "🚀 SGSE - Inicialização do Convex Local" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
# 1. Verificar se já está rodando
$convexRunning = Get-NetTCPConnection -LocalPort 3210 -ErrorAction SilentlyContinue
if ($convexRunning) {
Write-Host "✅ Convex já está rodando na porta 3210" -ForegroundColor Green
} else {
Write-Host "⏳ Iniciando Convex local..." -ForegroundColor Yellow
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd '$PSScriptRoot'; bunx convex dev"
Write-Host "⏳ Aguardando Convex inicializar (20 segundos)..." -ForegroundColor Yellow
Start-Sleep -Seconds 20
}
# 2. Verificar se o banco foi criado
if (Test-Path ".convex") {
Write-Host "✅ Banco de dados local criado!" -ForegroundColor Green
} else {
Write-Host "❌ Erro: Banco não foi criado" -ForegroundColor Red
Write-Host "⏳ Aguardando mais 10 segundos..." -ForegroundColor Yellow
Start-Sleep -Seconds 10
}
# 3. Popular banco com dados iniciais
Write-Host ""
Write-Host "🌱 Populando banco de dados com dados iniciais..." -ForegroundColor Cyan
Write-Host ""
try {
bunx convex run seed:seedDatabase
Write-Host ""
Write-Host "✅ Banco populado com sucesso!" -ForegroundColor Green
Write-Host ""
Write-Host "🔑 CREDENCIAIS DE ACESSO:" -ForegroundColor Yellow
Write-Host " Admin: matrícula 0000, senha Admin@123" -ForegroundColor White
Write-Host " Funcionários: usar matrícula, senha Mudar@123" -ForegroundColor White
Write-Host ""
Write-Host "🌐 Acesse: http://localhost:5173" -ForegroundColor Cyan
} catch {
Write-Host "❌ Erro ao popular banco: $_" -ForegroundColor Red
}
Write-Host ""
Write-Host "Pressione qualquer tecla para continuar..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

View File

@@ -1,12 +0,0 @@
# Script para iniciar o Convex Local
Write-Host "🚀 Iniciando Convex Local..." -ForegroundColor Green
Write-Host ""
Write-Host "📍 O Convex estará disponível em: http://localhost:3210" -ForegroundColor Cyan
Write-Host "💾 Os dados serão armazenados em: .convex/local_storage" -ForegroundColor Cyan
Write-Host ""
Write-Host "⚠️ Para parar o servidor, pressione Ctrl+C" -ForegroundColor Yellow
Write-Host ""
# Iniciar o Convex em modo local
bunx convex dev --run-local