julian 289c1a071e feat(web+api): cockpit gerente — painel, equipe, políticas e positivação
## API
- GET /dashboard/manager: KPIs agregados (faturamento, pedidos, ticket médio,
  promoções ativas), meta total do período, ranking top 10 com clientes
  atendidos e % meta, positivação por representante, venda necessária/dia
- Parâmetros opcionais ?mes&ano para filtrar período
- GET /equipe: lista de reps com pedidos, faturamento, ticket médio e % meta
  (deduplicação de vw_representantes)
- GET/POST /politicas/descontos: alçada de desconto por rep (AlcadaDesconto)
- GET/POST/PATCH/DELETE /politicas/promocoes: CRUD de promoções com validade
- Metas lidas de sar.vw_metas (tipo=GR), não de vw_metas do ERP

## Schema
- Novo model Promocao (sar.promocoes) criado via prisma db execute

## Frontend
- Cockpit /ger: GerPainel, EquipePage, PoliticasPage
- GerPainel: filtro mes/ano, cards KPI, cards de meta vs realizado
  (atingimento, falta, venda/dia), ranking com clientes atendidos,
  positivação de clientes por representante (paginada)
- Sidebar e BottomNav role-aware: rep / supervisor / gerente (manager+admin)
- Clientes acessível ao gerente (carteira completa de todos os reps)
- Rotas: HomeRoute redireciona por role; /ger, /ger/equipe, /ger/politicas

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 19:14:57 +00:00

SAR — Força de Vendas

Cliente: JCS Sistemas · Status: MVP em desenvolvimento

Plataforma SaaS B2B de força de vendas com 4 cockpits especializados (Rep / Supervisor / Dono / Admin) sobre dado único em tempo real, atravessado por WhatsApp nativo e IA contextual.


Stack canônica

Ver STACK.md v2.2 (fonte da verdade técnica) e CODING-RULES.md v2.0 (invariantes + pegadinhas 🔥).

Camada Tecnologia
Runtime Node 24 LTS · pnpm 11.1 · TypeScript 5.9
Monorepo Nx 22.7
Backend NestJS 11 (CJS) · Prisma 7 · PostgreSQL 18 · BullMQ
Frontend React 19 · Vite 8 · Ant Design 6.4 · TanStack Query/Router · Zustand
Multi-tenancy BD-por-workspace (ADR 0006)
Infra Proxmox on-prem BR (ADR 0004) · Docker Compose · Cloudflare

Quickstart (dev local)

# Pré-requisitos: Node 24, pnpm 11.1 (via corepack), Docker

# 1. Instalar deps
pnpm install

# 2. Copiar template de env
cp .env.example .env

# 3. Subir stack de dev (Postgres, Valkey, MinIO, Mailpit)
pnpm dev:up

# 4. Rodar api (Nest 11) — porta 3000
pnpm dev:api

# 5. Em outro terminal, rodar web (Vite + React 19) — porta 4200
pnpm dev:web

URLs locais:


Estrutura do monorepo

apps/
├── api/        # NestJS HTTP — monólito modular por domínio
├── api-e2e/    # E2E tests da API (Jest)
├── web/        # SPA React + Vite + AntD
└── web-e2e/    # E2E tests do frontend (Playwright)

libs/
└── shared/
    └── api-interface/    # Zod schemas + tipos compartilhados api ↔ web

design-artifacts/         # WDS — Phase 1/2/3 docs (Brief, Trigger Map, Scenarios)
_references/              # Logos, mockups legados, materiais
scripts/                  # SQL init, deploy scripts
docs/                     # Docs do projeto (ADRs futuras)

Scripts úteis

pnpm build              # Build de todos os projetos
pnpm lint               # ESLint em tudo
pnpm test               # Unit tests em tudo
pnpm graph              # Visualiza grafo de dependências Nx
pnpm affected -- -t build  # Só builda o que foi afetado pela mudança
pnpm format             # Prettier write

Próximos passos do setup

  • Provisionar VMs Proxmox para staging (Postgres, Valkey, MinIO, master-login, Vault)
  • Configurar Gitea Actions (.gitea/workflows/) — CI básico (lint + test + build)
  • Implementar master-login (IdP OAuth2/OIDC) — ADR 0005
  • Implementar multi-tenant BD-por-workspace — ADR 0006
  • Primeiro cockpit: Rafael (Rep) PWA mobile-first

Powered by JCS Sistemas · Stack canon JCS v2.2

Description
No description provided
Readme 6.5 MiB
Languages
Python 54.3%
TypeScript 31.3%
HTML 10.1%
JavaScript 2.6%
PLpgSQL 0.7%
Other 0.9%