Revoga ADR 0006 (BD-por-workspace separado). O SAR agora conecta ao banco PostgreSQL do ERP (módulo SIG) e usa o schema `sar` para tudo. PRISMA - Remove: Client, Product, Order, OrderItem, OrderStatusHistory, RepTarget, RepDiscountLimit, PushSubscription (modelos isolados) - Adiciona: Pedido, PedidoItem, HistoricoPedido, AlcadaDesconto, MetaRepresentante, PushSubscription (mapeados para sar.*) - IDs: id_cliente/cod_vendedor/id_empresa são INTEGER (ERP) - situa: Int (1=Pendente 2=Aprovado 3=Cancelado 4=Faturado) - JWT: workspace_id:string → id_empresa:number - URL: inclui ?schema=sar para Prisma rotear ao schema ERP SERVICES - ClientsService: $queryRawUnsafe contra sar.vw_clientes + sar.pedidos - CatalogService: $queryRawUnsafe contra sar.vw_produtos + sar.vw_estoque - OrdersService: Prisma models Pedido/PedidoItem/HistoricoPedido/AlcadaDesconto - DashboardService: MetaRepresentante + queries raw para inativos - NotificationsService: PushSubscription com codVendedor + idEmpresa CONTRATOS (api-interface) - client.contract: campos ERP (idCliente, nome, cgcpf, cod_vendedor…) - order.contract: PedidoSummary/PedidoDetail/CreatePedido + SITUA_LABEL - product.contract: ProdutoSummary/ProdutoDetail (vw_produtos) - auth.contract: workspaceId:string → idEmpresa:number WEB - Todos os cockpits e queries atualizados para os novos tipos Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
import { Controller, Get } from '@nestjs/common';
|
|
import { ClsService } from 'nestjs-cls';
|
|
import type { PingResponse } from '@sar/api-interface';
|
|
import type { WorkspaceClsStore } from '../workspace/workspace.types';
|
|
import { Public } from '../auth/public.decorator';
|
|
|
|
// Endpoint de verificação de fundação:
|
|
// - confirma que CLS está populando workspaceId + requestId;
|
|
// - serve como alvo do healthcheck do docker compose / smoke test;
|
|
// - usado pela Web (Frente B) para validar conectividade real.
|
|
// Contrato: @sar/api-interface · PingResponseSchema (zod).
|
|
|
|
@Public()
|
|
@Controller({ path: 'ping' })
|
|
export class PingController {
|
|
constructor(private readonly cls: ClsService<WorkspaceClsStore>) {}
|
|
|
|
@Get()
|
|
ping(): PingResponse {
|
|
return {
|
|
status: 'ok',
|
|
service: 'sar-api',
|
|
version: process.env['npm_package_version'] ?? '0.1.0',
|
|
idEmpresa: this.cls.get('idEmpresa'),
|
|
requestId: this.cls.get('requestId'),
|
|
uptimeSeconds: Math.round(process.uptime()),
|
|
now: new Date().toISOString(),
|
|
};
|
|
}
|
|
}
|