Frontend completo (Etapas 11-18) e extensões de backend (Etapas 13 e 18)
Adiciona o frontend Next.js em frontend/ (setup, design system, autenticação/tema, layout/navegação, área master, área tenant completa: clientes, produtos, vendas, recebimentos, whatsapp, e-mail, alertas, equipe e perfil). Estende o backend de forma aditiva e autorizada: cookie httpOnly para refresh token (Etapa 13) e CRUD de equipe + edição de perfil do tenant (Etapa 18, módulo src/modules/equipe/ novo e PUT /tenant/perfil). Detalhes completos em Etapas/V2/*. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import { apiClient } from '@/lib/api/client';
|
||||
|
||||
/** Espelha o retorno de `TenantEmailConfigService#obter` — dois formatos possíveis conforme `usar_config_padrao`. */
|
||||
export interface TenantEmailConfig {
|
||||
usar_config_padrao: boolean;
|
||||
smtp_host?: string;
|
||||
smtp_porta?: number;
|
||||
smtp_usuario?: string;
|
||||
/** Mascarada (`maskSecret`) — nunca o valor real. */
|
||||
smtp_senha?: string;
|
||||
email_remetente?: string;
|
||||
}
|
||||
|
||||
/** Espelha `UpdateTenantEmailConfigDto`. */
|
||||
export interface UpdateTenantEmailConfigInput {
|
||||
usar_config_padrao: boolean;
|
||||
smtp_host?: string;
|
||||
smtp_porta?: number;
|
||||
smtp_usuario?: string;
|
||||
smtp_senha?: string;
|
||||
email_remetente?: string;
|
||||
}
|
||||
|
||||
export function getTenantEmailConfig() {
|
||||
return apiClient.get<TenantEmailConfig>('/tenant/email-config');
|
||||
}
|
||||
|
||||
export function updateTenantEmailConfig(input: UpdateTenantEmailConfigInput) {
|
||||
return apiClient.put<TenantEmailConfig>('/tenant/email-config', input);
|
||||
}
|
||||
|
||||
/**
|
||||
* Espelha `DispatchResult` (`src/modules/alert-dispatch/alert-dispatch.service.ts`):
|
||||
* o endpoint sempre responde HTTP 200 — falha de envio (SMTP indisponível,
|
||||
* config incompleta etc) vem como `{ sucesso: false, erro }`, não como erro
|
||||
* HTTP. Quem chama precisa checar `sucesso` explicitamente, não só o status
|
||||
* da resposta.
|
||||
*/
|
||||
export interface TestarEnvioResult {
|
||||
sucesso: boolean;
|
||||
erro?: string;
|
||||
}
|
||||
|
||||
export function testarEnvioEmail(destinatario: string) {
|
||||
return apiClient.post<TestarEnvioResult>('/tenant/email-config/testar-envio', { destinatario });
|
||||
}
|
||||
Reference in New Issue
Block a user