fix(frontend): use english api slugs and harden dashboard modules

This commit is contained in:
Tiago Yamamoto 2026-03-04 15:12:33 -06:00
parent bf0e6f3e0d
commit bf588993c5
8 changed files with 46 additions and 39 deletions

View file

@ -201,7 +201,7 @@ const GestaoColaboradores = () => {
try { try {
const response = await fetch( const response = await fetch(
`${process.env.NEXT_PUBLIC_BFF_API_URL}/usuarios?page=${page}&empresas_dados_id=${empresaId}`, `${process.env.NEXT_PUBLIC_BFF_API_URL}/users?page=${page}&company_id=${empresaId}`,
{ {
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -274,7 +274,7 @@ const GestaoColaboradores = () => {
try { try {
const response = await fetch( const response = await fetch(
`${process.env.NEXT_PUBLIC_BFF_API_URL}/usuarios/${id}`, `${process.env.NEXT_PUBLIC_BFF_API_URL}/users/${id}`,
{ {
method: 'DELETE', method: 'DELETE',
headers: { headers: {
@ -298,7 +298,7 @@ const GestaoColaboradores = () => {
const handleToggleStatus = async (colaborador: Colaborador) => { const handleToggleStatus = async (colaborador: Colaborador) => {
try { try {
const response = await fetch( const response = await fetch(
`${process.env.NEXT_PUBLIC_BFF_API_URL}/usuarios/${colaborador.id}`, `${process.env.NEXT_PUBLIC_BFF_API_URL}/users/${colaborador.id}`,
{ {
method: 'PATCH', method: 'PATCH',
headers: { headers: {

View file

@ -181,7 +181,7 @@ export default function GestaoPedidosPage() {
// Construir URL com filtro baseado no nível do usuário // Construir URL com filtro baseado no nível do usuário
let url = `${process.env.NEXT_PUBLIC_BFF_API_URL}/pedidos?page=${currentPage}&limit=${pageSize}`; let url = `${process.env.NEXT_PUBLIC_BFF_API_URL}/orders?page=${currentPage}&limit=${pageSize}`;
// Se o usuário não for superadmin, filtrar pelos pedidos dele // Se o usuário não for superadmin, filtrar pelos pedidos dele
if (user && user.superadmin === false) { if (user && user.superadmin === false) {

View file

@ -269,6 +269,7 @@ const GestaoLaboratorios = () => {
onPrevPage={handlePrevPage} onPrevPage={handlePrevPage}
onNextPage={handleNextPage} onNextPage={handleNextPage}
onSearch={handleSearch} onSearch={handleSearch}
onRefresh={handleRefresh}
/> />
</TableContainer> </TableContainer>
)} )}

View file

@ -90,7 +90,7 @@ const UsuariosPendentesPage = () => {
} }
const response = await fetch( const response = await fetch(
`${process.env.NEXT_PUBLIC_BFF_API_URL}/usuarios?page=${pageNum}&ativo=false`, `${process.env.NEXT_PUBLIC_BFF_API_URL}/users?page=${pageNum}`,
{ {
method: 'GET', method: 'GET',
headers: { headers: {
@ -106,7 +106,10 @@ const UsuariosPendentesPage = () => {
const data = await response.json(); const data = await response.json();
const usuariosData = data.data || data.items || data; const rawUsuariosData = data.data || data.items || data || [];
const usuariosData = Array.isArray(rawUsuariosData)
? rawUsuariosData.filter((usuario: any) => usuario?.ativo === false)
: [];
// Para cada usuário, buscar dados do endereço e empresa // Para cada usuário, buscar dados do endereço e empresa
const usuariosCompletos = await Promise.all( const usuariosCompletos = await Promise.all(
@ -179,7 +182,7 @@ const UsuariosPendentesPage = () => {
const token = localStorage.getItem('access_token'); const token = localStorage.getItem('access_token');
const response = await fetch( const response = await fetch(
`${process.env.NEXT_PUBLIC_BFF_API_URL}/usuarios/${usuarioId}`, `${process.env.NEXT_PUBLIC_BFF_API_URL}/users/${usuarioId}`,
{ {
method: 'PATCH', method: 'PATCH',
headers: { headers: {

View file

@ -227,29 +227,29 @@ const CadastroProdutoWizard: React.FC = () => {
// Tentar diferentes estruturas possíveis // Tentar diferentes estruturas possíveis (incluindo payload nulo)
let laboratoriosArray = []; let laboratoriosArray: any[] = [];
let categoriasArray = []; let categoriasArray: any[] = [];
// Para laboratórios // Para laboratórios
if (Array.isArray(labsData)) { if (Array.isArray(labsData)) {
laboratoriosArray = labsData; laboratoriosArray = labsData;
} else if (labsData.documents && Array.isArray(labsData.documents)) { } else if (labsData && Array.isArray((labsData as any).documents)) {
laboratoriosArray = labsData.documents; laboratoriosArray = labsData.documents;
} else if (labsData.data && Array.isArray(labsData.data)) { } else if (labsData && Array.isArray((labsData as any).data)) {
laboratoriosArray = labsData.data; laboratoriosArray = labsData.data;
} else if (labsData.items && Array.isArray(labsData.items)) { } else if (labsData && Array.isArray((labsData as any).items)) {
laboratoriosArray = labsData.items; laboratoriosArray = labsData.items;
} }
// Para categorias // Para categorias
if (Array.isArray(catsData)) { if (Array.isArray(catsData)) {
categoriasArray = catsData; categoriasArray = catsData;
} else if (catsData.documents && Array.isArray(catsData.documents)) { } else if (catsData && Array.isArray((catsData as any).documents)) {
categoriasArray = catsData.documents; categoriasArray = catsData.documents;
} else if (catsData.data && Array.isArray(catsData.data)) { } else if (catsData && Array.isArray((catsData as any).data)) {
categoriasArray = catsData.data; categoriasArray = catsData.data;
} else if (catsData.items && Array.isArray(catsData.items)) { } else if (catsData && Array.isArray((catsData as any).items)) {
categoriasArray = catsData.items; categoriasArray = catsData.items;
} }

View file

@ -19,6 +19,7 @@ interface LaboratorioListProps {
onPrevPage: () => void; onPrevPage: () => void;
onNextPage: () => void; onNextPage: () => void;
onSearch: (nome: string) => void; onSearch: (nome: string) => void;
onRefresh: () => void;
} }
const LaboratorioList: React.FC<LaboratorioListProps> = ({ const LaboratorioList: React.FC<LaboratorioListProps> = ({
@ -34,7 +35,8 @@ const LaboratorioList: React.FC<LaboratorioListProps> = ({
onDelete, onDelete,
onPrevPage, onPrevPage,
onNextPage, onNextPage,
onSearch onSearch,
onRefresh
}) => { }) => {
const totalPages = Math.ceil(totalLaboratorios / pageSize); const totalPages = Math.ceil(totalLaboratorios / pageSize);
const startItem = (currentPage - 1) * pageSize + 1; const startItem = (currentPage - 1) * pageSize + 1;
@ -42,7 +44,8 @@ const LaboratorioList: React.FC<LaboratorioListProps> = ({
const [search, setSearch] = React.useState(''); const [search, setSearch] = React.useState('');
const handleSearch = () => { const handleSearch = (e: React.FormEvent) => {
e.preventDefault();
onSearch(search); onSearch(search);
}; };

View file

@ -1,6 +1,6 @@
/** /**
* Serviço para gerenciar entregas via BFF * Serviço para gerenciar entregas via BFF
* Integração com https://bff-dev.saveinmed.com.br/api/v1/entregas * Integração com https://bff-dev.saveinmed.com.br/api/v1/shipments
*/ */
const BFF_BASE_URL = process.env.NEXT_PUBLIC_BFF_API_URL!; const BFF_BASE_URL = process.env.NEXT_PUBLIC_BFF_API_URL!;
@ -112,7 +112,7 @@ export const entregasApiService = {
if (params.search) queryParams.append('search', params.search); if (params.search) queryParams.append('search', params.search);
if (params.status && params.status !== 'todos') queryParams.append('status', params.status); if (params.status && params.status !== 'todos') queryParams.append('status', params.status);
const url = `${BFF_BASE_URL}/entregas${queryParams.toString() ? `?${queryParams.toString()}` : ''}`; const url = `${BFF_BASE_URL}/shipments${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
const response = await fetch(url, { const response = await fetch(url, {
@ -162,7 +162,7 @@ export const entregasApiService = {
} }
const response = await fetch(`${BFF_BASE_URL}/entregas/${entregaId}`, { const response = await fetch(`${BFF_BASE_URL}/shipments/${entregaId}`, {
method: 'GET', method: 'GET',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -209,7 +209,7 @@ export const entregasApiService = {
if (!token) return; if (!token) return;
// Tentar OPTIONS para ver se retorna schema // Tentar OPTIONS para ver se retorna schema
const optionsResponse = await fetch(`${BFF_BASE_URL}/entregas`, { const optionsResponse = await fetch(`${BFF_BASE_URL}/shipments`, {
method: 'OPTIONS', method: 'OPTIONS',
headers: { headers: {
'Authorization': `Bearer ${token}`, 'Authorization': `Bearer ${token}`,
@ -243,7 +243,7 @@ export const entregasApiService = {
}; };
const response = await fetch(`${BFF_BASE_URL}/entregas`, { const response = await fetch(`${BFF_BASE_URL}/shipments`, {
method: 'POST', method: 'POST',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -308,7 +308,7 @@ export const entregasApiService = {
} }
const response = await fetch(`${BFF_BASE_URL}/entregas/${entregaId}`, { const response = await fetch(`${BFF_BASE_URL}/shipments/${entregaId}`, {
method: 'PATCH', method: 'PATCH',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -406,7 +406,7 @@ export const entregasApiService = {
} }
const fazerRequisicao = async (dados: any) => { const fazerRequisicao = async (dados: any) => {
return await fetch(`${BFF_BASE_URL}/entregas/cotacao`, { return await fetch(`${BFF_BASE_URL}/shipping/calculate`, {
method: 'POST', method: 'POST',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',

View file

@ -1,6 +1,6 @@
/** /**
* Serviço para gerenciar pedidos via BFF * Serviço para gerenciar pedidos via BFF
* Integração com https://bff-dev.saveinmed.com.br/api/v1/pedidos * Integração com https://bff-dev.saveinmed.com.br/api/v1/orders
*/ */
const BFF_BASE_URL = process.env.NEXT_PUBLIC_BFF_API_URL!; const BFF_BASE_URL = process.env.NEXT_PUBLIC_BFF_API_URL!;
@ -248,7 +248,7 @@ export const pedidoApiService = {
}; };
const response = await fetch(`${BFF_BASE_URL}/pedidos`, { const response = await fetch(`${BFF_BASE_URL}/orders`, {
method: 'POST', method: 'POST',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -283,7 +283,7 @@ export const pedidoApiService = {
} }
const response = await fetch(`${BFF_BASE_URL}/pedidos/${pedidoId}`, { const response = await fetch(`${BFF_BASE_URL}/orders/${pedidoId}`, {
method: 'GET', method: 'GET',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -317,7 +317,7 @@ export const pedidoApiService = {
// Primeiro, tentar buscar com filtro específico // Primeiro, tentar buscar com filtro específico
let response = await fetch(`${BFF_BASE_URL}/pedidos?carrinhos=${carrinhoId}&status=pendente&limit=10`, { let response = await fetch(`${BFF_BASE_URL}/orders?carrinhos=${carrinhoId}&status=pendente&limit=10`, {
method: 'GET', method: 'GET',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -327,7 +327,7 @@ export const pedidoApiService = {
// Se a busca específica não funcionar, fazer busca geral // Se a busca específica não funcionar, fazer busca geral
if (!response.ok) { if (!response.ok) {
response = await fetch(`${BFF_BASE_URL}/pedidos?page=1&limit=100`, { response = await fetch(`${BFF_BASE_URL}/orders?page=1&limit=100`, {
method: 'GET', method: 'GET',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -399,7 +399,7 @@ export const pedidoApiService = {
} }
const response = await fetch(`${BFF_BASE_URL}/pedidos?page=${page}&limit=100&usuario_id=${userId}`, { const response = await fetch(`${BFF_BASE_URL}/orders?page=${page}&limit=100&usuario_id=${userId}`, {
method: 'GET', method: 'GET',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -432,7 +432,7 @@ export const pedidoApiService = {
} }
const response = await fetch(`${BFF_BASE_URL}/pedidos/${pedidoId}`, { const response = await fetch(`${BFF_BASE_URL}/orders/${pedidoId}`, {
method: 'PATCH', method: 'PATCH',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',
@ -471,7 +471,7 @@ export const pedidoApiService = {
}; };
const response = await fetch(`${BFF_BASE_URL}/pedidos/${pedidoId}`, { const response = await fetch(`${BFF_BASE_URL}/orders/${pedidoId}`, {
method: 'PATCH', method: 'PATCH',
headers: { headers: {
'accept': 'application/json', 'accept': 'application/json',