feat(orders): fluxo de aprovação — approve/reject endpoints + UIs (C5)

PATCH /orders/:id/approve e /reject com alçada role-gated; OrderDetailPage
com modais de aprovação e recusa; ApprovalQueuePage para Sandra; badge de
pendências na Sidebar; DevLogin com 4 perfis (rep, supervisor, gerente).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 00:01:14 +00:00
parent 6769a0d82a
commit 356c8e3c2c
9 changed files with 731 additions and 33 deletions

View File

@@ -112,3 +112,17 @@ export const CreateOrderSchema = z.object({
items: z.array(CreateOrderItemSchema).min(1),
});
export type CreateOrder = z.infer<typeof CreateOrderSchema>;
// ─── Approve / Reject (PATCH /orders/:id/approve|reject) ─────────────────────
export const ApproveOrderSchema = z.object({
// Opcional — supervisor pode ajustar o desconto global. Se omitido, mantém o original.
discountPct: z.number().min(0).max(100).optional(),
note: z.string().optional(),
});
export type ApproveOrder = z.infer<typeof ApproveOrderSchema>;
export const RejectOrderSchema = z.object({
reason: z.string().min(1, 'Motivo é obrigatório'), // FR-5.4
});
export type RejectOrder = z.infer<typeof RejectOrderSchema>;