Correções implementadas: 1. Adiciona .resizable(false) nas janelas de chat e hub para impedir redimensionamento manual 2. Corrige área clicável invisível quando minimizado (janela agora tem tamanho correto) 3. Corrige clique na lista de sessões para expandir janela quando clicado 4. Diferencia abertura automática (minimizada) de abertura manual (expandida) - Chat agora abre expandido quando clicado na lista do hub - Chat abre minimizado quando nova mensagem chega (menos intrusivo) - Janelas não permitem mais redimensionamento manual - Área clicável agora corresponde ao tamanho visual da janela 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| .github/workflows | ||
| apps/desktop | ||
| components/shadcn-studio/input | ||
| convex | ||
| docs | ||
| emails | ||
| Inter,Manrope/Inter | ||
| prisma | ||
| public | ||
| scripts | ||
| scripts-static | ||
| src | ||
| tests | ||
| types | ||
| .env.example | ||
| .gitignore | ||
| agents.md | ||
| auth.ts | ||
| build.log | ||
| bun.lock | ||
| bunfig.toml | ||
| codex_ed25519 | ||
| codex_ed25519.pub | ||
| components.json | ||
| Dockerfile.prod | ||
| eslint.config.mjs | ||
| next.config.ts | ||
| package.json | ||
| postcss.config.mjs | ||
| prisma.config.ts | ||
| proxy.ts | ||
| README.md | ||
| reports-machines-filters-issue.svg | ||
| resp.json | ||
| stack.yml | ||
| tsconfig.json | ||
| vitest.config.mts | ||
| vitest.setup.node.ts | ||
Sistema de Chamados
Aplicacao Next.js 16 (App Router) com React 19, Convex e Better Auth para gestao de tickets da Rever. A stack ainda inclui Prisma 7 (PostgreSQL), Tailwind e Turbopack como bundler padrao (webpack permanece disponivel como fallback). Todo o codigo-fonte fica na raiz do monorepo seguindo as convencoes do App Router.
Requisitos
- Bun >= 1.3 (recomendado 1.3.1). Após instalar via script oficial, adicione
export PATH="$HOME/.bun/bin:$PATH"ao seu shell (ex.:.bashrc) para terbundisponível globalmente. - Node.js >= 20 (necessário para ferramentas auxiliares como Prisma CLI e Next.js em modo fallback).
- CLI do Convex (
bunx convex devinstalará automaticamente no primeiro uso, se ainda não estiver presente). - GitHub Actions/autodeploy dependem dessas versões e do CLI do Convex disponível; use
npx convex --helppara confirmar.
Configuração rápida
- Instale as dependências:
bun install - Ajuste o arquivo
.env(ou crie a partir de.env.example) e confirme os valores de:NEXT_PUBLIC_CONVEX_URL(gerado pelo Convex Dev)BETTER_AUTH_SECRET,BETTER_AUTH_URL,DATABASE_URL(PostgreSQL, ex:postgresql://postgres:dev@localhost:5432/sistema_chamados)
- Aplique as migrações e gere o client Prisma:
bunx prisma migrate deploy bun run prisma:generate - Popule usuários padrão do Better Auth:
bun run auth:seedSempre que trocar de máquina ou quiser “zerar” o ambiente local, basta repetir os passos 3 e 4 com a mesma
DATABASE_URL.
Resetar rapidamente o ambiente local
- Suba um PostgreSQL local (Docker recomendado):
docker run -d --name postgres-dev -p 5432:5432 -e POSTGRES_PASSWORD=dev -e POSTGRES_DB=sistema_chamados postgres:18 - Aplique as migracoes:
bunx prisma migrate deploy - Recrie/garanta as contas padrao de login:
bun run auth:seed - Suba o servidor normalmente com
bun run dev.
Subir serviços locais
- (Opcional) Para re-sincronizar manualmente as filas padrão, execute
bun run queues:ensure. - Em um terminal, rode o backend em tempo real do Convex com
bun run convex:dev:bun(oubun run convex:devpara o runtime Node). - Em outro terminal, suba o frontend Next.js (Turbopack) com
bun run dev:bun(bun run dev:webpackserve como fallback). - Com o Convex rodando, acesse
http://localhost:3000/dev/seeduma vez para popular dados de demonstração (tickets, usuários, comentários).
Se o CLI perguntar sobre configuração do projeto Convex, escolha criar um novo deployment local (opção padrão) e confirme. As credenciais são armazenadas em
.convex/automaticamente.
Documentação
- Índice de docs:
docs/README.md - Operações (produção):
docs/OPERATIONS.md(versão EN) edocs/OPERACAO-PRODUCAO.md(PT-BR) - Guia de DEV:
docs/DEV.md - Testes automatizados (Vitest/Playwright):
docs/testes-vitest.md - Stack Swarm:
stack.yml(roteado por Traefik, redetraefik_public).
Variáveis de ambiente
- Exemplo na raiz:
.env.example— copie para.enve preencha segredos. - App Desktop:
apps/desktop/.env.example— copie paraapps/desktop/.enve ajusteVITE_APP_URL. - Nunca faça commit de arquivos
.envcom valores reais (já ignorados em.gitignore).
Guia de DEV (Prisma, Auth e Desktop/Tauri)
Para fluxos detalhados de desenvolvimento — banco de dados local (PostgreSQL/Prisma), seed do Better Auth, ajustes do Prisma CLI no DEV e build do Desktop (Tauri) — consulte docs/DEV.md.
Scripts úteis
bun run dev:bun— padrão atual para o Next.js com runtime Bun (bun run dev:webpackpermanece como fallback).bun run convex:dev:bun— runtime Bun para o Convex (bun run convex:devmantém o fluxo antigo usando Node).bun run build:bun/bun run start:bun— build e serve com Bun usando Turbopack (padrão atual).bun run dev:webpack— fallback do Next.js em modo desenvolvimento (webpack).bun run lint— ESLint com as regras do projeto.bun test— suíte de testes unitários usando o runner do Bun (o teste de screenshot fica automaticamente ignorado se o matcher não existir).bun run build— executanext build --turbopack(runtime Node, caso prefira evitar o--bun).bun run build:webpack— executanext build --webpackcomo fallback oficial.bun run auth:seed— atualiza/cria contas padrao do Better Auth (credenciais emagents.md).bunx prisma migrate deploy— aplica migracoes ao banco PostgreSQL.bun run convex:dev— roda o Convex em modo desenvolvimento com Node, gerando tipos emconvex/_generated.
Transferir dispositivo entre colaboradores
Quando uma dispositivo trocar de responsável:
- Abra
Admin > Dispositivos, selecione o equipamento e clique em Resetar agente. - No equipamento, execute o reset local do agente (
rever-agent resetou reinstale o serviço) e reprovisione com o código da empresa. - Após o agente gerar um novo token, associe a dispositivo ao novo colaborador no painel.
Sem o reset de agente, o Convex reaproveita o token anterior e o inventário continua vinculado ao usuário antigo.
Estrutura principal
app/dentro desrc/— rotas e layouts do Next.js (App Router).components/— componentes reutilizáveis (UI, formulários, layouts).convex/— queries, mutations e seeds do Convex.prisma/— schema e migracoes do Prisma (PostgreSQL).scripts/— utilitários em Node para sincronização e seeds adicionais.agents.md— guia operacional e contexto funcional (em PT-BR).PROXIMOS_PASSOS.md— backlog de melhorias futuras.
Credenciais de demonstração
Após executar bun run auth:seed, as credenciais padrão ficam disponíveis conforme descrito em agents.md (seção “Credenciais padrão”). Ajuste variáveis SEED_USER_* se precisar sobrepor usuários ou senhas durante o seed.
Próximos passos
Consulte PROXIMOS_PASSOS.md para acompanhar o backlog funcional e o progresso das iniciativas planejadas.
Executar com Bun
bun installé o fluxo padrão (o arquivobun.lockdeve ser versionado; usebun install --frozen-lockfileem CI).bun run dev:bun,bun run convex:dev:bun,bun run build:bunebun run start:bunjá estão configurados; internamente executambun run --bun <script>para usar o runtime do Bun sem abrir mão dos scripts existentes. Ocross-envgarante os valores esperados deNODE_ENV(development/production).- O bundler padrão é o Turbopack; se precisar comparar/debugar com webpack, use
bun run build:webpack. bun testutiliza o test runner do Bun. O teste de snapshot de screenshot é automaticamente ignorado quando o matcher não está disponível; testes de navegador completos continuam viabun run test:browser(Vitest + Playwright).
Diagnóstico de sessão da dispositivo (Desktop)
- Quando o portal for aberto via app desktop, use a página
https://seu-app/portal/debugpara validar cookies e contexto:/api/auth/get-sessiondeve idealmente mostraruser.role = "machine"(em alguns ambientes WebView pode retornarnull, o que não é bloqueante)./api/machines/sessiondeve retornar200comassignedUserId/assignedUserEmail.
- O frontend agora preenche
machineContextmesmo queget-sessionretornenull, e deriva o papel efetivo a partir desse contexto. - Se
machines/sessionretornar401/403, revise CORS/credenciais e o fluxo de handshake documentados emdocs/OPERACAO-PRODUCAO.md.