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 {
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: {
'accept': 'application/json',
@ -274,7 +274,7 @@ const GestaoColaboradores = () => {
try {
const response = await fetch(
`${process.env.NEXT_PUBLIC_BFF_API_URL}/usuarios/${id}`,
`${process.env.NEXT_PUBLIC_BFF_API_URL}/users/${id}`,
{
method: 'DELETE',
headers: {
@ -298,7 +298,7 @@ const GestaoColaboradores = () => {
const handleToggleStatus = async (colaborador: Colaborador) => {
try {
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',
headers: {
@ -872,4 +872,4 @@ const EnderecoModal = ({ endereco, onClose }: EnderecoModalProps) => {
);
};
export default GestaoColaboradores;
export default GestaoColaboradores;

View file

@ -181,7 +181,7 @@ export default function GestaoPedidosPage() {
// 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
if (user && user.superadmin === false) {

View file

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

View file

@ -90,7 +90,7 @@ const UsuariosPendentesPage = () => {
}
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',
headers: {
@ -106,7 +106,10 @@ const UsuariosPendentesPage = () => {
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
const usuariosCompletos = await Promise.all(
@ -179,7 +182,7 @@ const UsuariosPendentesPage = () => {
const token = localStorage.getItem('access_token');
const response = await fetch(
`${process.env.NEXT_PUBLIC_BFF_API_URL}/usuarios/${usuarioId}`,
`${process.env.NEXT_PUBLIC_BFF_API_URL}/users/${usuarioId}`,
{
method: 'PATCH',
headers: {
@ -646,4 +649,4 @@ const UsuariosPendentesPage = () => {
);
};
export default UsuariosPendentesPage;
export default UsuariosPendentesPage;

View file

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

View file

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

View file

@ -1,6 +1,6 @@
/**
* 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!;
@ -112,7 +112,7 @@ export const entregasApiService = {
if (params.search) queryParams.append('search', params.search);
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, {
@ -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',
headers: {
'accept': 'application/json',
@ -209,7 +209,7 @@ export const entregasApiService = {
if (!token) return;
// 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',
headers: {
'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',
headers: {
'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',
headers: {
'accept': 'application/json',
@ -406,7 +406,7 @@ export const entregasApiService = {
}
const fazerRequisicao = async (dados: any) => {
return await fetch(`${BFF_BASE_URL}/entregas/cotacao`, {
return await fetch(`${BFF_BASE_URL}/shipping/calculate`, {
method: 'POST',
headers: {
'accept': 'application/json',
@ -527,4 +527,4 @@ export const entregasApiService = {
return null;
}
}
};
};

View file

@ -1,6 +1,6 @@
/**
* 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!;
@ -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',
headers: {
'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',
headers: {
'accept': 'application/json',
@ -317,7 +317,7 @@ export const pedidoApiService = {
// 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',
headers: {
'accept': 'application/json',
@ -327,7 +327,7 @@ export const pedidoApiService = {
// Se a busca específica não funcionar, fazer busca geral
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',
headers: {
'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',
headers: {
'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',
headers: {
'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',
headers: {
'accept': 'application/json',
@ -494,4 +494,4 @@ export const pedidoApiService = {
return { success: false, error: 'Erro de conexão ao atualizar status' };
}
},
};
};