feat(resellers): campos de representante legal (preparação p/ contrato)

Usuário: o cadastro de revenda precisa ficar completo porque essa
mesma base vai alimentar a criação de contrato com a revenda dentro
do ERP. resellers ganha rep_full_name/rep_cpf/rep_role/rep_email/
rep_mobile_phone/rep_authorization_ack, mesmo shape de
client_registrations.pj_rep_* — um contrato precisa de um signatário
nomeado e autorizado, não só a lista geral de sócios.

Divergência deliberada: ao contrário de pj_rep_cpf (bloqueado do PATCH
genérico em client_registrations, esperando um fluxo de submissão
pública que o EDEN ainda não construiu — hoje uma lacuna conhecida,
nunca preenchido de fato), rep_cpf aqui fica livremente editável —
revenda não tem esse fluxo de submissão pública pra travar atrás.

Nova tela: card "Representante legal" entre "Dados da revenda" e
"Sócios". Suíte: 107/107 (106→107). pnpm turbo run typecheck build:
28/28. Testado ao vivo em navegador real.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-18 15:41:16 -03:00
parent ec13dccee6
commit d81553fcfe
8 changed files with 240 additions and 4 deletions

View File

@@ -39,6 +39,12 @@ export interface Reseller {
contact_technical_name: string | null;
contact_technical_email: string | null;
contact_technical_phone: string | null;
rep_full_name: string | null;
rep_cpf: string | null;
rep_role: string | null;
rep_email: string | null;
rep_mobile_phone: string | null;
rep_authorization_ack: boolean;
}
/** Request body — camelCase, matches `CreateResellerDto` exactly. */
@@ -74,6 +80,13 @@ export interface CreateResellerInput {
contactTechnicalName?: string;
contactTechnicalEmail?: string;
contactTechnicalPhone?: string;
repFullName?: string;
repCpf?: string;
repRole?: string;
repEmail?: string;
repMobilePhone?: string;
repAuthorizationAck?: boolean;
}
/** Matches `UpdateResellerDto`: everything optional. */