Sistema de Chamados - Mirror do GitHub
Find a file
esdrasrenan 88a3b37f2f Fix chat session management and add floating widget
- Fix session sync: events now send complete ChatSession data instead of
  partial ChatSessionSummary, ensuring proper ticket/agent info display
- Add session-ended event detection to remove closed sessions from client
- Add ChatFloatingWidget component for in-app chat experience
- Restrict endSession to ADMIN/MANAGER/AGENT roles only
- Improve polling logic to detect new and ended sessions properly

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 11:16:56 -03:00
.github/workflows fix: stabilize web build path e cores do SLA 2025-11-25 17:32:40 -03:00
apps/desktop Fix chat session management and add floating widget 2025-12-07 11:16:56 -03:00
components/shadcn-studio/input feat: cadastro manual de acesso remoto e ajustes de horas 2025-10-24 23:52:58 -03:00
convex Fix chat session management and add floating widget 2025-12-07 11:16:56 -03:00
docs Redesenho da UI de dispositivos e correcao de VRAM 2025-12-06 17:01:40 -03:00
Inter,Manrope/Inter fix(ci/windows): remove NTFS Zone.Identifier ADS artifacts from fonts and ignore future additions; move Tauri updater config under plugins (v2 schema), bump to 0.1.5 2025-10-10 21:42:35 -03:00
prisma Upgrade Prisma to v7 2025-11-19 13:24:08 -03:00
public fix: avoid broken font and speed up backlog overview 2025-10-30 14:42:09 -03:00
scripts Fix better-sqlite3 binding for Prisma adapter 2025-12-04 16:31:51 -03:00
src Fix lint errors and improve chat UI 2025-12-07 03:39:14 -03:00
tests Avoid recursive import in api mock for bun tests 2025-11-27 08:38:11 -03:00
types Update Prisma and harden tests 2025-11-08 00:28:52 -03:00
.env.example Update SMTP password 2025-12-05 16:28:27 -03:00
.gitignore feat(portal): enable ticket reopen and improve loading UX 2025-11-14 13:08:59 -03:00
agents.md fix: switch production build to webpack 2025-11-05 21:15:10 -03:00
auth.ts chore: reorganize project structure and ensure default queues 2025-10-06 22:59:35 -03:00
build.log chore: reorganize project structure and ensure default queues 2025-10-06 22:59:35 -03:00
bun.lock Atualiza bun.lock apos remocao de dependencias 2025-12-07 01:08:37 -03:00
bunfig.toml Switch workflows to Bun install/test and update pnpm 2025-11-04 23:21:41 -03:00
codex_ed25519 feat(filters): usar filtro por responsável no servidor (assigneeId)\n\nci: tocar convex/tickets para forçar deploy das funções 2025-10-20 16:07:54 -03:00
codex_ed25519.pub feat(filters): usar filtro por responsável no servidor (assigneeId)\n\nci: tocar convex/tickets para forçar deploy das funções 2025-10-20 16:07:54 -03:00
components.json fix(reports): remove truncation cap in range collectors to avoid dropped records 2025-11-04 11:51:08 -03:00
Dockerfile.prod chore: add node22 bun base image and tune start 2025-11-19 21:22:12 -03:00
eslint.config.mjs chore: sync staging 2025-11-10 01:57:45 -03:00
next.config.ts Redesenho da UI de dispositivos e correcao de VRAM 2025-12-06 17:01:40 -03:00
package.json Redesenho da UI de dispositivos e correcao de VRAM 2025-12-06 17:01:40 -03:00
postcss.config.mjs chore: reorganize project structure and ensure default queues 2025-10-06 22:59:35 -03:00
prisma.config.ts fix: provide prisma datasource fallback 2025-11-19 15:53:49 -03:00
proxy.ts refactor: align routes with next 16 and local fonts 2025-10-22 02:08:18 -03:00
README.md Doc: note about Convex CLI 2025-11-18 10:34:50 -03:00
reports-machines-filters-issue.svg Adjust reports filters layout and date range picker 2025-11-18 23:02:58 -03:00
resp.json feat(desktop/ui): force light theme for readability in Tauri; strengthen contrast for card/input/alerts; add inventory summary cards 2025-10-10 00:18:39 -03:00
stack.yml Fix better-sqlite3 binding for Prisma adapter 2025-12-04 16:31:51 -03:00
tsconfig.json Upgrade Prisma to v7 2025-11-19 13:24:08 -03:00
vitest.config.mts chore: document and stabilize vitest browser setup 2025-10-22 17:19:12 -03:00
vitest.setup.node.ts chore(types): remove anys and harden Convex data fetch 2025-10-22 19:19:38 -03:00

Sistema de Chamados

Aplicação Next.js 16 (App Router) com React 19, Convex e Better Auth para gestão de tickets da Rever. A stack ainda inclui Prisma 6 (SQLite padrão para DEV), Tailwind e Turbopack em desenvolvimento (o build de produção roda com o webpack padrão do Next). Todo o código-fonte fica na raiz do monorepo seguindo as convenções 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 ter bun disponível globalmente.
  • Node.js >= 20 (necessário para ferramentas auxiliares como Prisma CLI e Next.js em modo fallback).
  • CLI do Convex (bunx convex dev instalará 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 --help para confirmar.

Configuração rápida

  1. Instale as dependências:
    bun install
    
  2. 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 (por padrão file:./db.dev.sqlite, que mapeia para prisma/db.dev.sqlite)
  3. Aplique as migrações e gere o client Prisma:
    bunx prisma migrate deploy
    bun run prisma:generate
    
  4. Popule usuários padrão do Better Auth:
    bun run auth:seed
    

    Sempre 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

  1. Garanta que DATABASE_URL aponte para o arquivo desejado (ex.: file:./db.dev.sqlite para desenvolvimento, file:./db.sqlite em produção local).
  2. Aplique as migrações no arquivo informado:
    DATABASE_URL=file:./db.dev.sqlite bunx prisma migrate deploy
    
  3. Recrie/garanta as contas padrão de login:
    DATABASE_URL=file:./db.dev.sqlite bun run auth:seed
    
  4. Suba o servidor normalmente com bun run dev. Esses três comandos bastam para reconstruir o ambiente sempre que trocar de computador.

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 (ou bun run convex:dev para o runtime Node).
  • Em outro terminal, suba o frontend Next.js (Turpoback) com bun run dev:bun (bun run dev:webpack serve como fallback).
  • Com o Convex rodando, acesse http://localhost:3000/dev/seed uma 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) e docs/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, rede traefik_public).

Variáveis de ambiente

  • Exemplo na raiz: .env.example — copie para .env e preencha segredos.
  • App Desktop: apps/desktop/.env.example — copie para apps/desktop/.env e ajuste VITE_APP_URL.
  • Nunca faça commit de arquivos .env com valores reais (já ignorados em .gitignore).

Guia de DEV (Prisma, Auth e Desktop/Tauri)

Para fluxos detalhados de desenvolvimento — banco de dados local (SQLite/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:webpack permanece como fallback).
  • bun run convex:dev:bun — runtime Bun para o Convex (bun run convex:dev mantém o fluxo antigo usando Node).
  • bun run build:bun / bun run start:bun — build e serve com Bun; bun run build mantém o fallback Node.
  • 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 — executa next build --webpack (webpack padrão do Next).
  • bun run build:turbopack — executa next build --turbopack para reproduzir/debugar problemas.
  • bun run auth:seed — atualiza/cria contas padrão do Better Auth (credenciais em agents.md).
  • bunx prisma migrate deploy — aplica migrações ao banco SQLite local.
  • bun run convex:dev — roda o Convex em modo desenvolvimento com Node, gerando tipos em convex/_generated.

Transferir dispositivo entre colaboradores

Quando uma dispositivo trocar de responsável:

  1. Abra Admin > Dispositivos, selecione o equipamento e clique em Resetar agente.
  2. No equipamento, execute o reset local do agente (rever-agent reset ou reinstale o serviço) e reprovisione com o código da empresa.
  3. 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 de src/ — 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, migrações e banco SQLite (prisma/db.sqlite).
  • 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 arquivo bun.lock deve ser versionado; use bun install --frozen-lockfile em CI).
  • bun run dev:bun, bun run convex:dev:bun, bun run build:bun e bun run start:bun já estão configurados; internamente executam bun run --bun <script> para usar o runtime do Bun sem abrir mão dos scripts existentes. O cross-env garante os valores esperados de NODE_ENV (development/production).
  • Se precisar validar o bundler experimental, use bun run build:turbopack; para o fluxo estável mantenha bun run build (webpack).
  • bun test utiliza 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 via bun 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/debug para validar cookies e contexto:
    • /api/auth/get-session deve idealmente mostrar user.role = "machine" (em alguns ambientes WebView pode retornar null, o que não é bloqueante).
    • /api/machines/session deve retornar 200 com assignedUserId/assignedUserEmail.
  • O frontend agora preenche machineContext mesmo que get-session retorne null, e deriva o papel efetivo a partir desse contexto.
  • Se machines/session retornar 401/403, revise CORS/credenciais e o fluxo de handshake documentados em docs/OPERACAO-PRODUCAO.md.