Agentic Trading Lab
에이전트와 대화하고, 거래 아이디어를 테스트하며, 코드 없이 실제 시장 데이터에 AI 트레이딩 에이전트를 적용
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Painel Executivo Financeiro - Ragga Gestão
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Evolução do atual Painel Executivo Financeiro (HTML com dados embutidos) para uma aplicação web com banco de dados permanente, usada pelo Financeiro/Administrativo do Grupo Londrino/Ragga para acompanhamento financeiro e operacional das 17 unidades.
Estado atual: Etapa 1 — Fundação do projeto. Sem dados reais importados, sem telas completas, sem migração do painel HTML antigo.
Usuário (desktop/mobile)
│
Next.js (App Router, TypeScript) ── Vercel
│ API routes / server actions
▼
PostgreSQL (Supabase) + Auth + Storage
Detalhes completos do planejamento e das regras de negócio aprovadas: docs/regras-negocio.md.
.
├─ apps/
│ └─ web/ # aplicação Next.js
│ ├─ app/
│ │ ├─ (dashboard)/ # Visão Geral, Comparativo, Indicadores,
│ │ │ Controles de Caixa, Análise Gerencial,
│ │ │ Plano de Ação, Fechamentos
│ │ ├─ (admin)/importacao/
│ │ └─ api/ # rotas de importação, indicadores, tratativas
│ ├─ components/
│ ├─ lib/
│ │ ├─ db/ # clientes Supabase/Drizzle, schema (Etapa 2)
│ │ ├─ import/ # parsers por tipo de base (Etapa 3)
│ │ ├─ rules/ # regras de negócio centralizadas
│ │ └─ calc/ # motor de indicadores/comparação (próximas etapas)
│ └─ tests/
│ ├─ unit/ # Vitest — regras de negócio
│ └─ e2e/ # Playwright
├─ packages/
│ └─ shared/ # tipos e constantes compartilhados (unidades, perfis, tipos de base)
├─ supabase/
│ ├─ migrations/ # geradas pelo Drizzle Kit
│ └─ seed/
├─ docs/
│ └─ regras-negocio.md # regras de negócio aprovadas (fonte de verdade)
└─ .github/workflows/ # CI
Toda regra de data, período, semáforo, deduplicação e importação vive em
apps/web/lib/rules/ — nenhuma tela reimplementa essas regras localmente.
Ver docs/regras-negocio.md para o detalhamento
de cada regra e o mapeamento para o arquivo que a implementa.
Pré-requisitos: Node.js 24+, npm 11+.
npm install
npm run dev # inicia apps/web em http://localhost:3000
npm run lint
npm run typecheck
npm run test # testes unitários (Vitest)
npm run build
Testes E2E (Playwright) exigem os browsers instalados uma vez:
npx playwright install --with-deps
npm run test:e2e
Schema definido em apps/web/lib/db/schema/*.ts. Os arquivos SQL ficam em
supabase/migrations/ (pasta de saída do Drizzle Kit — não é o mecanismo de
migrations da CLI do Supabase; não há config.toml nem o schema
supabase_migrations), com o seed em supabase/seed/:
| Migration | Conteúdo |
|---|---|
0000_schema_inicial.sql | tabelas de fato, dimensão, controle e gestão |
0001_rls.sql | Row Level Security (escrita à mão) |
0002_lonely_zaran.sql | tratativas.data_ocorrencia |
0003_cancelamento_salao_detalhe.sql | detalhe individual dos estornos do Cancelamento Salão (índice parcial, RLS e policy; idempotente) |
Como as migrations são aplicadas hoje: manualmente, sem rastreamento no banco.
O banco compartilhado (Supabase) recebeu cada SQL por fora do drizzle-kit migrate; a tabela de controle drizzle.__drizzle_migrations existe, mas está
vazia — nenhuma migration (0000 a 0003) está registrada nela. O deploy na
Vercel roda apenas next build: nenhum passo de migration é executado no
deploy. Por isso:
npm run db:migrate contra o banco compartilhado sem antes
registrar a referência (baseline) em drizzle.__drizzle_migrations: sem ela,
o Drizzle tentaria reaplicar a 0000 (as tabelas já existem) e falharia.meta/_journal.json e meta/NNNN_snapshot.json servem ao
db:generate (diff do schema); eles refletem o schema atual (até a 0003) e
não o estado do banco.Para uma nova migration: editar apps/web/lib/db/schema/*.ts, rodar
npm run db:generate (não conecta ao banco), revisar o SQL gerado, aplicá-lo
manualmente no banco (ou nas rotinas aprovadas) e fazer o commit do .sql, do
_journal.json e do novo snapshot. Para um banco novo: copiar
apps/web/.env.example para apps/web/.env.local, preencher DATABASE_URL,
aplicar os SQL de supabase/migrations/ em ordem e rodar os scripts de
supabase/seed/ (17 unidades + parâmetros de semáforo aprovados).
atualizar base)Comando permanente de linha de comando que usa a importação oficial do painel (processarArquivoBase: colunas
obrigatórias, parsers, chaves e upsert) — a mesma da tela "Importação de Bases":
cd apps/web
# 1) simulação (não grava nada): identifica as bases, valida e lista o que precisa de decisão
npm run atualizar-bases -- "caminho/BRINDES.xlsx" "caminho/CANCEL SALÃO.xlsx" ...
# 2) gravação (só sem pendências): upsert pela chave oficial, uma base por vez, com conferência de contagens
npm run atualizar-bases -- "caminho/BRINDES.xlsx" ... --gravar --plano "<plano impresso na simulação>"
CONTROLE DE CONFERENCIA E QUEBRAS DE CAIXA (n).xlsx
alimenta Conferência e Quebra de Caixa (ciclo escolhido pela data de hoje; --ref AAAA-MM-DD para outra data).tabela depois = antes + inseridos, e qualquer divergência
interrompe a execução. Guarda uma referência (contagem + hash) das tabelas e compara ao final.apps/web/scripts/rejeicoes-aceitas.json não bloqueiam.cancelamento_salao_detalhe, idempotente).DATABASE_URL em apps/web/.env.local. O procedimento completo para o Claude Code está no CLAUDE.md da raiz.fontes_por_periodo, perfis/usuários, RLS, seed). Schema definido e
migrations geradas; aplicadas manualmente ao banco compartilhado
(Supabase), inclusive a 0003 (cancelamento_salao_detalhe). As migrations
não estão registradas em drizzle.__drizzle_migrations, que permanece
vazia (ver "Banco de dados (Supabase)").resolverAba, upsert/delete+insert).O painel HTML atual permanece a referência funcional e visual até que paridade completa seja validada.