feat(shared): contrato Zod PingResponse em @sar/api-interface (Frente C)
Primeiro contrato compartilhado API↔Web. Lib stays framework-free:
nestjs-zod (createZodDto) fica fora — Web vai consumir esta mesma lib
e não pode arrastar dependência backend.
- PingResponseSchema + type PingResponse (z.infer) em ping.contract.ts
- 6 testes vitest (1 happy + 5 rejeições: status, uuid, uptime, datetime, workspaceId)
- ping.controller importa PingResponse via @sar/api-interface
- placeholders Nx api-interface.{ts,spec.ts} removidos
- design-log atualizado com decisão arquitetural e pegadinhas da sessão
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,21 +1,13 @@
|
||||
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';
|
||||
|
||||
// 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.
|
||||
|
||||
interface PingResponse {
|
||||
status: 'ok';
|
||||
service: string;
|
||||
version: string;
|
||||
workspaceId: string;
|
||||
requestId: string;
|
||||
uptimeSeconds: number;
|
||||
now: string;
|
||||
}
|
||||
// Contrato: @sar/api-interface · PingResponseSchema (zod).
|
||||
|
||||
@Controller({ path: 'ping' })
|
||||
export class PingController {
|
||||
|
||||
Reference in New Issue
Block a user