# SAR — Força de Vendas
**JCS Sistemas · Produto SaaS B2B**

---

## O que é o SAR

O SAR é um sistema web de força de vendas desenvolvido pela JCS Sistemas para representantes comerciais e empresas do setor B2B.

Ele substitui e expande um aplicativo Android/Desktop legado, centralizando em uma única plataforma moderna tudo que o representante precisa para trabalhar: pedidos, clientes, financeiro, comissões e CRM.

---

## A ideia

Representantes comerciais perdem tempo com ferramentas fragmentadas — um app para pedido, outro para financeiro, outro para agenda. O SAR resolve isso com uma plataforma única que o representante acessa do celular ou do computador, com os dados sempre sincronizados com o ERP da empresa.

**Para o representante:** visão 360° do cliente, lançamento rápido de pedido, acompanhamento de comissão e FLEX, funil de vendas e agenda integrados.

**Para a empresa:** controle de limite de crédito, bloqueios automáticos, configurações por empresa/filial, relatórios e dashboards em tempo real.

---

## Público-alvo

| Perfil | Uso principal |
|---|---|
| Representante externo | Pedidos, CRM, agenda, comissão |
| Supervisor de vendas | Acompanhamento de equipe, liberação de descontos |
| Administrador | Configurações, pautas, relatórios |

---

## Módulos

| Módulo | O que faz |
|---|---|
| **Vendas** | Pedidos (Orçamento → Faturado), catálogo, pautas de preço |
| **Fiscal** | ICMS-ST, IPI, grupos tributários por UF |
| **Financeiro** | Títulos, recebimentos, limite de crédito |
| **Comissão / FLEX** | Cálculo por representante e produto, rateio com supervisor, saldo FLEX |
| **CRM** | Funil Kanban, agenda, check-in GPS, timeline 360° do cliente |
| **Administrativo** | Multi-empresa, configurações, gestão de representantes |

---

## Identidade Visual

### Paleta de cores

| Papel | Nome | Hex |
|---|---|---|
| Primária | JCS Blue | `#004a99` |
| Primária hover | JCS Blue Hover | `#003a7a` |
| Fundo ativo (menu) | JCS Blue Light | `#e6eff8` |
| Background app | Body | `#f4f7fa` |
| Texto principal | Text Main | `#2d3748` |
| Texto secundário | Text Muted | `#718096` |
| Sucesso / Faturado | Green | `#38a169` |
| Alerta / Em aberto | Orange | `#ed8936` |
| Erro / Bloqueado | Red | `#e53e3e` |
| WhatsApp | WA Green | `#25d366` |

### Tipografia

**Plus Jakarta Sans** · Google Fonts  
Pesos utilizados: 400 · 500 · 600 · 700 · 800

### Ícones e gráficos

- Ícones: **Font Awesome 6.4.0**
- Gráficos: **Chart.js**

### Bordas e sombras

| Token | Valor |
|---|---|
| Radius grande (cards, modais) | `20px` |
| Radius médio (inputs, botões) | `12px` |
| Sombra padrão | `0 4px 25px rgba(0,0,0,0.05)` |

### Tom visual

Clean e minimalista — muito branco, azul `#004a99` como único destaque cromático, bordas suaves, sem zebra agressiva em tabelas. Inspiração Apple: espaço em branco generoso, hierarquia clara, sem ruído visual.

---

## Layout padrão

```
┌─────────────────────────────────────────────────────┐
│  TOPBAR (80px)                                      │
├──────────────┬──────────────────────────────────────┤
│              │                                      │
│  SIDEBAR     │  CONTEÚDO (scrollável)               │
│  (260px)     │                                      │
│  fixa        │                                      │
│              │                                      │
└──────────────┴──────────────────────────────────────┘
```

**Login:** tela cheia com card centralizado, gradiente sutil `#f0f4f8 → #d9e2ec`.

---

## Stack técnica

| Camada | Tecnologia |
- **Runtime:** Node 24 LTS · pnpm 11.1 · TypeScript 5.9 → [§01](docs/01-runtime-tooling.md)
- **Monorepo:** Nx 22.7 → [§02](docs/02-monorepo-nx.md)
- **Backend:** NestJS 11.1 (Express 5) · Prisma 7 · PostgreSQL 18 · `nestjs-cls` · `@nestjs/terminus` · `@nestjs/throttler` + `@nest-lab/throttler-storage-redis` → [§03](docs/03-backend.md), [§20](docs/20-praticas-nest-universais.md)
- **Frontend:** React 19.2 + Compiler · Vite 8 (Rolldown) · Ant Design 6.4 · TanStack Query 5.100 · TanStack Router · Zustand 5.0.13+ → [§04](docs/04-frontend.md)
- **API:** REST + OpenAPI 3.1 + RFC 9457 Problem Details · Zod 4 (pnpm catalog) + nestjs-zod + react-hook-form (`zodResolver`) → [§05](docs/05-api-design.md), [§06](docs/06-validacao.md)
- **Auth:** Guards NestJS + `jose` + **master-login** (IdP OAuth2/OIDC próprio em VM Proxmox; HS256 hoje → RS256 roadmap) · argon2id centralizado no IdP → [§07](docs/07-autenticacao.md), [ADR 0005](docs/adr/0005-auth-master-login.md)
- **Segredos:** **HashiCorp Vault** (KV v2) self-host · Vault Agent injeta env vars no container → [§08](docs/08-secrets-config.md)
- **Observabilidade:** Pino + nestjs-pino 10.3 · OpenTelemetry (Traces+Metrics GA; Logs Beta) · Grafana Cloud LGTM · Sentry → [§09](docs/09-observabilidade.md)
- **Flags:** OpenFeature SDK + GrowthBook self-host → [§10](docs/10-feature-flags.md)
- **Filas:** BullMQ 5.77 + `@nestjs/bullmq` 11 · Bull Board · **Valkey em VM/LXC** Proxmox → [§11](docs/11-filas-jobs.md)
- **Cache:** `@nestjs/cache-manager` v3 + cache-manager 6 + `@keyv/redis` + `cacheable` (L1) — TTL em **ms** → [§12](docs/12-cache.md)
- **Real-time:** Socket.IO 4 + `@socket.io/redis-adapter` · SSE via `@Sse()` nativo NestJS → [§13](docs/13-realtime.md)
- **Uploads:** **MinIO** (S3-compat) presigned **POST policy** + AWS SDK v3 · Uppy + `@uppy/aws-s3` · **ClamAV** em worker BullMQ · sharp 0.34 → [§14](docs/14-uploads.md)
- **Email:** **Resend** (SaaS — não self-host) + React Email via BullMQ → [§15](docs/15-email-notificacoes.md)
- **Testes:** Vitest 4.1 · Testcontainers 12 · Supertest 7.2.2 (encapsulado) · Playwright 1.60 → [§16](docs/16-testes.md)
- **Qualidade:** ESLint 10.4 flat · typescript-eslint 8.59 · Prettier 3.8.3 · eslint-plugin-import-**x** 4.16.2 · Husky 9 + lint-staged 17 · **gitleaks** → [§17](docs/17-qualidade-codigo.md)
- **CI/Deploy:** GitHub Actions + Nx Cloud · Trivy gate · pin actions por SHA · Docker multi-stage `node:24-alpine` · **Ansible/SSH para VMs Proxmox** com docker-compose rolling (backend) · **Cloudflare + Nginx** servindo SPA estática (frontend, **não containerizar**) → [§18](docs/18-cicd-containers.md)


---

## Variáveis CSS — referência rápida

```css
:root {
  --jcs-blue:        #004a99;
  --jcs-blue-hover:  #003a7a;
  --jcs-blue-light:  #e6eff8;
  --bg-body:         #f4f7fa;
  --text-main:       #2d3748;
  --text-muted:      #718096;
  --green:           #38a169;
  --whatsapp-green:  #25d366;
  --red:             #e53e3e;
  --orange:          #ed8936;
  --radius-lg:       20px;
  --radius-md:       12px;
  --shadow:          0 4px 25px rgba(0, 0, 0, 0.05);
}
```

---

*Powered JCS. sistemas SAR - Força de Vendas · v1.0*
