Pular para o conteúdo principal

Documentação dos Serviços - Force Mobile - 2026

Visão Geral

Esta seção contém a documentação dos serviços implementados para gerenciar as operações na aplicação Force Mobile. Estes serviços são responsáveis pela integração com a API REST para buscar e manipular dados remotos.

Nota: Alguns serviços já implementam padrão offline-first com integração ao banco de dados local (SQLite).

Serviços Disponíveis

Client Service

Gerencia operações relacionadas aos clientes, incluindo busca, cadastro, atualização e sincronização com banco de dados local (offline-first).

  • Endpoints: GET /cliente, POST /cliente, PUT /cliente/{id}, GET /cliente/search/clientes, GET /cliente/cnpj/{cnpj}, GET /cliente/cep/{cep}
  • Principais recursos: Busca paginada, busca com filtros, cadastro, atualização, sincronização local, cache offline, consulta de CNPJ e CEP

Layout Service

Gerencia operações relacionadas aos layouts de formulários, permitindo buscar configurações de layout por entidade.

  • Endpoint: GET /layout
  • Principais recursos: Busca de layouts por entidade (Cliente, Produto, Cabeçalho, Contato), configuração dinâmica de formulários

Field Layout Service

Gerencia operações relacionadas aos campos individuais de layouts, fornecendo configurações detalhadas para renderização dinâmica de formulários.

  • Endpoint: GET /campoLayout
  • Principais recursos: Busca de campos por layout, configurações de visibilidade/obrigatoriedade/editabilidade, opções de campos

Contact Service

Gerencia operações relacionadas aos contatos de clientes, incluindo cadastro e atualização.

  • Endpoints: POST /cliente/contato/{clientId}, PUT /cliente/contato/{contactId}
  • Principais recursos: Cadastro de contatos vinculados a clientes, atualização de contatos, validação de CPF/CNPJ

Client Attachment Service

Gerencia anexos de clientes: listar anexos de um cliente, enviar novos anexos (upload) e excluir anexos existentes.

  • Endpoints: GET /cliente/anexo/cliente/{clientId}, POST /cliente/anexo/{clientId}, DELETE /cliente/anexo/{attachmentId}
  • Localização: services/client-attachment/client-attachment.service.ts
  • Principais recursos: Busca paginada de anexos por cliente, upload via FormData, remoção de anexos, validação de tamanho e tipos MIME aceitos

Activity Note Service

Gerencia apontamentos de atividade (check-ins/visitas) realizados pelos usuários, permitindo registrar, listar, atualizar, finalizar (checkout) e excluir atividades.

  • Endpoints: GET /checkin/porUsuario/{userId}, GET /checkin/{id}, POST /checkin, PUT /checkin/{id}, DELETE /checkin/{id}, PATCH /checkin/checkout/{id}
  • Principais recursos: Registro de check-in/check-out, listagem paginada por usuário, suporte a payloads com FormData (anexos), validação via schema (zod), finalização de atividade (checkout) e histórico de visitas

Activity Type Service

Busca os tipos de atividade (check-in) disponíveis na API remota, usado para popular selects, filtros e validações que dependem da lista de tipos.

  • Endpoint: GET /tipoAtividadeCheckin
  • Localização: services/activity-type/activity-type.service.ts
  • Principais recursos: Busca paginada de tipos de atividade, suporte a sincronização incremental, uso em selects e filtros

Reasons Not Selling Service

Fornece acesso aos motivos de não-venda cadastrados na API, usado para popular selects, filtros e validações quando um vendedor registra uma visita sem venda.

  • Endpoints: GET /motivosNaoVenda
  • Principais recursos: Busca paginada de motivos, suporte a sincronização incremental, filtro por data de atualização, integração em telas de apontamento de atividade

Publication Service

Gerencia publicações e comentários dentro da solução, permitindo listar publicações ativas, consultar detalhes, gerenciar comentários e alternar likes por usuário.

  • Endpoints: GET /publicacoes/ativas, GET /publicacoes/:publicationId, GET /publicacoes/:publicationId/comentarios, POST /publicacoes/:publicationId/:userId, PUT /publicacoes/:publicationId/:commentId, DELETE /publicacoes/:publicationId/:commentId, PATCH /publicacoes/:publicationId/:userId
  • Principais recursos: Busca de publicações ativas (paginada), detalhes de publicação, listagem/registro/edição/remoção de comentários, alternância de curtida por usuário, paginação de comentários

Profile Image Service

Gerencia a imagem de perfil dos usuários: baixar (blob), enviar via FormData e remover a imagem vinculada ao usuário.

  • Endpoints: GET /usuario/:userId/imagemPerfil, POST /usuario/:userId/imagemPerfil, DELETE /usuario/:userId/imagemPerfil
  • Principais recursos: Download como Blob, upload com FormData, remoção, integração com perfil do usuário

Version Service

Busca versões e changelogs da solução, com paginação e filtros por solução/data.

  • Endpoint: GET /versoes
  • Principais recursos: Lista paginada de versões, filtro por solucaoId e dataHora, exibição de registro de alterações (changelog)

AI Service

Fornece funcionalidades de IA para extração de produtos de documentos e sugestão de pedidos baseada em parâmetros de negociação.

  • Endpoints: POST /documents/extrair-produtos, GET /pedido-sugerido
  • Principais recursos: Extração de produtos via upload (PDF/imagem) com metadados, sugestão de pedido baseada em parâmetros comerciais, integração com helpers buildFormData e buildQueryParams, suporte a testes via mocks

Open Title Service

Gerencia operações relacionadas aos títulos em aberto, permitindo buscar títulos pendentes de forma geral ou filtrados por cliente.

  • Endpoints: GET /titulosAberto, GET /titulosAberto/cliente/{clientId}
  • Principais recursos: Busca paginada de títulos em aberto, consulta por cliente específico, filtros por data, informações de valor, parcelas e status

Aliquot Service

Gerencia operações relacionadas às alíquotas fiscais, permitindo buscar configurações de tributação.

  • Endpoint: GET /aliquota
  • Principais recursos: Busca paginada de alíquotas, configurações de ICMS, margem de lucro, base ST reduzida, informações fiscais detalhadas

Payment Method Service

Gerencia operações relacionadas às formas de pagamento, permitindo buscar métodos de pagamento disponíveis para vendas.

  • Endpoint: GET /formaPagamento
  • Principais recursos: Busca de formas de pagamento, condições de pagamento, juros, prazos e restrições, filtros por consumidor

Product Group Service

Gerencia operações relacionadas aos grupos de produtos, permitindo buscar hierarquias de categorização de produtos.

  • Endpoint: GET /grupoProdutos
  • Principais recursos: Busca de grupos de produtos, estrutura hierárquica de categorias, grupos pai e filhos, filtros analíticos e sintéticos

Operations Group Service

Fornece acesso aos grupos de operações configurados na API (ex: entrada, saída, transferência, ajuste). Permite listar grupos e tipos de operação associados com paginação.

  • Endpoint: GET /gruposOperacao
  • Principais recursos: Busca paginada de grupos de operação, tipos de operação por grupo, opções para popular selects e filtros de operações

Company Service

Gerencia operações relacionadas às empresas, permitindo buscar informações sobre as empresas/filiais da organização.

  • Endpoint: GET /empresa
  • Principais recursos: Busca de empresas, informações de filiais, controle por unidade de negócio

Price Service

Gerencia operações relacionadas aos preços de produtos, permitindo buscar tabelas de preços e consultar valores conforme diferentes políticas comerciais.

  • Endpoint: GET /precoProduto
  • Principais recursos: Busca de preços por tabela, consulta de valores por produto, preços flexíveis e fixos, múltiplas políticas de precificação

Product Service

Gerencia operações relacionadas aos produtos, permitindo buscar catálogo completo com filtros avançados.

  • Endpoints: GET /produtos, GET /produtos/{ids}
  • Principais recursos: Busca de produtos com paginação, busca por IDs específicos, filtros por cliente/tabela de preços/marcas/fabricantes/fornecedores/grupos, informações detalhadas, especificações técnicas, dimensões e classificações fiscais

Payment Slip Service

Gerencia operações relacionadas ao boleto de cobrança, permitindo buscar e salvar o PDF do boleto localmente.

  • Endpoint: GET /api/v1/document/boleto
  • Principais recursos: Busca do boleto PDF, conversão em base64, salvamento do arquivo local, integração com serviço de armazenamento

Stock Service

Gerencia operações relacionadas ao estoque de produtos, permitindo consultar disponibilidade por empresa, local, lote e controle de validade.

  • Endpoint: GET /estoque
  • Principais recursos: Busca de estoque, consulta por empresa/filial, filtros por local de armazenagem, controle de lotes e validade, cálculo de saldo disponível

Order Header Service

Gerencia operações relacionadas aos pedidos de venda, permitindo buscar histórico, inicializar pedidos, atualizar e deletar.

  • Endpoints: GET /cabecalhoPedido, GET /cabecalhoPedido/{id}, POST /cabecalhoPedido/cabecalhoBasico/{clientId}, PUT /cabecalhoPedido/{orderHeaderId}, DELETE /cabecalhoPedido/{orderHeaderId}
  • Principais recursos: Busca de pedidos com paginação, filtros por período (data início/fim), filtros por líder/usuário/cliente, inicialização de pedido básico, consulta de detalhes completos, atualização e deleção de pedidos, informações de cabeçalho e itens do pedido

User Service

Gerencia operações relacionadas aos usuários do sistema, permitindo buscar lista completa de usuários e consultar subordinados de um líder específico.

  • Endpoints: GET /usuario/usuarios, GET /usuario/listarSubordinados/{leaderId}
  • Principais recursos: Busca de usuários com paginação, consulta de subordinados por líder, informações de perfil e hierarquia, acesso a organizações vinculadas, clientes atribuídos e colaboradores

Client Profile Service

Gerencia operações relacionadas aos perfis de clientes, permitindo buscar perfis e produtos associados.

  • Endpoint: GET /perfil
  • Principais recursos: Busca de perfis de clientes com paginação, consulta de produtos associados ao perfil, informações básicas de produtos

Organization Configuration Service

Gerencia configurações e funcionalidades das organizações, permitindo controlar acessos, definir parâmetros e personalizar comportamentos do sistema.

  • Endpoints: GET /configuracaoOrganizacao, GET /configuracaoOrganizacao/funcionalidades/context
  • Principais recursos: Busca de configurações da organização, consulta de contextos de funcionalidades por organização/grupo/usuário, controle de acessos, valores padrões, gerenciamento de permissões

Access Log Service

Gerencia o registro de acessos ao sistema, coletando informações do dispositivo e enviando logs de entrada do usuário.

  • Endpoint: POST /logAcesso
  • Principais recursos: Registro de acessos, coleta automática de dados do dispositivo, informações de bateria/memória/armazenamento, rastreamento de versões, monitoramento de compatibilidade

Usage Log Service

Gerencia o registro de uso de funcionalidades do sistema, permitindo rastrear interações dos usuários e tempos de execução.

  • Endpoint: POST /logUso
  • Principais recursos: Registro de uso de funcionalidades, rastreamento de tempo de execução, monitoramento de status HTTP, registro de mensagens e tipos de uso, análise de performance

Item Service

Gerencia operações relacionadas aos itens de pedidos, permitindo cadastro, atualização completa e atualização parcial.

  • Endpoints: POST /item, PUT /item/{itemId}, PATCH /item/{itemId}
  • Principais recursos: Cadastro de novos itens em pedidos, atualização completa de itens, atualização parcial de campos específicos, gerenciamento de produtos/preços/quantidades, controle de descontos e impostos

Sync Queue Service

Gerencia operações relacionadas à fila de sincronização de dados, permitindo iniciar sincronizações e consultar histórico básico e avançado.

  • Endpoints: POST /historicoSincronizacao/sincronizacaoTotal, GET /historicoSincronizacao/historico, GET /historicoSincronizacao/historico/filtrar
  • Principais recursos: Iniciar sincronização total de dados, consultar histórico básico por dispositivo/usuário, consultar histórico avançado por entidade com filtros (status, solicitante, dispositivo), monitorar status e tempo de processamento, rastrear registros incluídos e alterados

Promotion Service

Gerencia operações relacionadas às promoções, permitindo buscar promoções disponíveis com paginação e filtros avançados.

  • Endpoint: GET /promocoes
  • Principais recursos: Busca de promoções com paginação, filtro por data de atualização, descontos por cliente/produto/grupo, descontos por quantidade, promoções por tabela de preços, controle de período de vigência

Pricing Table Service

Gerencia operações relacionadas às tabelas de preço, permitindo buscar tabelas disponíveis com paginação e por IDs específicos.

  • Endpoints: GET /tabelaPreco, GET /tabelaPreco/{ids}
  • Principais recursos: Busca de tabelas de preço com paginação, busca por IDs específicos, filtro por data de atualização, informações de organização e identificação externa

Measurement Unit Service

Gerencia operações relacionadas às unidades de medida, permitindo buscar unidades disponíveis para produtos.

  • Endpoint: GET /unidadeMedida
  • Principais recursos: Busca paginada de unidades de medida, sincronização offline, popular dropdowns/selects com opções de unidades disponíveis

PDF Service

Gerencia operações relacionadas à criação e gerenciamento de PDFs, incluindo geração local de PDFs de pedidos, download de documentos online e acesso a relatórios formatados.

  • Endpoints: POST /api/v1/document/pdf, GET /relatorioFormatado, GET /relatorioFormatado/{id}
  • Principais recursos: Geração de PDFs de pedidos em Base64, download de documentos online, busca de relatórios formatados com paginação, integração com sistema de arquivos local

Alternative Unit Service

Gerencia operações relacionadas às unidades alternativas de medida para produtos, permitindo buscar unidades alternativas com filtros por produto.

  • Endpoint: GET /unidadeAlternativa
  • Principais recursos: Busca paginada de unidades alternativas, filtro por produto, conversão de quantidades entre unidades, sincronização offline

City Service

Gerencia operações relacionadas às cidades, permitindo buscar dados geográficos e fiscais para formulários e cadastros.

  • Endpoint: GET /cidades
  • Principais recursos: Busca paginada de cidades, filtros por município/UF/estado/nome, sincronização offline, apoio a cadastros e formulários

Carrier Service

Gerencia operações relacionadas às transportadoras, permitindo buscar transportadoras com filtros por cliente, localidade e condições comerciais.

  • Endpoint: GET /transportadora
  • Principais recursos: Busca paginada de transportadoras, filtros por cidade/UF/cliente/valor mínimo, sincronização offline, apoio a formulários de venda e logística

Componentes Compartilhados

buildQueryParams Helper

Função utilitária que converte um objeto de parâmetros em URLSearchParams, tratando adequadamente arrays e valores nulos/undefined.

Localização: helpers/buildQueryParams.ts

type QueryValue =
| string
| number
| boolean
| undefined
| null
| (string | number | boolean)[];

function buildQueryParams<T extends Record<string, QueryValue>>(
params: T,
): URLSearchParams;

Comportamento:

  • Remove parâmetros undefined ou null
  • Converte arrays em múltiplos parâmetros com mesmo nome
  • Converte todos os valores para string

PageResponse Interface

Interface compartilhada para respostas paginadas da API.

Localização: services/client/client.service.ts

interface PageResponse<T> {
content: T[]; // Array de itens da página atual
page?: number; // Número da página atual
size?: number; // Tamanho da página
totalPages?: number; // Total de páginas
totalElements?: number; // Total de elementos
// ... outros campos de paginação
}

API Service

Instâncias configuradas do Axios para comunicação com a API.

Localização: services/api.service.ts

  • api: Cliente HTTP com autenticação (token de acesso)
  • apiWithoutAccessToken: Cliente HTTP sem autenticação (usado pelos serviços atuais)

Helpers de Validação

Helpers para validação de documentos brasileiros e formatação.

Localização: helpers/

cpfValidate.ts

  • isValidCpf(cpf: string): boolean - Valida CPF
  • cpfMask(cpf: string): string - Aplica máscara de CPF

cnpjValidate.ts

  • isValidCnpj(cnpj: string): boolean - Valida CNPJ
  • cnpjMask(cnpj: string): string - Aplica máscara de CNPJ

formatCpfCnpj.ts

  • formatCpfCnpj(value: string): string - Formata CPF ou CNPJ automaticamente

zod.ts

  • Helpers customizados para validação com Zod
  • nullableString, nullableStringWithRegex, nullableEmail, etc.

filterLayoutByEntity Helper

Função utilitária que filtra layouts por entidade.

Localização: helpers/fiterLayoutByEntity.ts

function filterLayoutByEntity(layout: Layout[], entity: string): Layout[];

Repositories

ClientRepository

Repositório para acesso ao banco de dados local.

Localização: repositories/client/client.repository.ts

Principais métodos:

  • saveBatch(clients): Salva clientes em lote
  • findById(id): Busca cliente por ID
  • findMany(params): Busca clientes com filtros
  • clearAll(): Limpa todos os clientes
  • getAvailableLocations(): Obtém localizações únicas

Testes

Todos os serviços possuem testes unitários implementados:

  • services/client/client.service.test.ts
  • services/layout/layout.service.test.ts
  • services/field-layout/field-layout.service.test.ts
  • services/contact/contact.service.test.ts

Executar Testes

# Todos os testes
npm test

# Teste específico
npx jest services/client/client.service.test.ts

# Modo watch
npx jest services/contact/contact.service.test.ts --watch

# Com coverage
npm test -- --coverage

Mocks

Dados mock estão disponíveis para desenvolvimento e testes:

  • __mocks__/client.mock.ts - Dados de clientes e cadastros
  • __mocks__/layout.mock.ts - Layouts de exemplo para diferentes entidades
  • __mocks__/field-layout.mock.ts - Campos de layout com diversas configurações
  • __mocks__/contact.mock.ts - Dados de contatos

Padrões e Arquitetura

Instâncias dos Serviços

Cada serviço possui um arquivo de instância que exporta uma instância singleton:

  • services/client/client.service.instance.ts
  • services/layout/layout.instance.ts
  • services/field-layout/field-layout.instance.ts
  • services/contact/contact.service.instance.ts

Exemplo de uso:

import { clientService } from "@/services/client/client.service.instance";

const clients = await clientService.fetchRemote({ page: 0, size: 20 });

Offline-First (Client Service)

O ClientService implementa padrão offline-first:

  1. Sincronização: Dados são baixados da API e salvos localmente
  2. Cache Local: App trabalha com dados do banco local (SQLite)
  3. Busca Híbrida: Busca remota quando necessário + filtros locais
  4. Performance: Reduz latência e permite operação offline

Formulários Dinâmicos (Layout & Field Layout)

Os serviços de Layout e Field Layout permitem renderização dinâmica de formulários:

  1. Buscar Layout: Obter configuração do layout para uma entidade
  2. Processar Campos: Iterar sobre os campos do layout
  3. Renderizar UI: Criar inputs baseados nas configurações
  4. Validar: Aplicar regras de validação (obrigatório, editável, etc.)
  5. Submeter: Enviar dados para o serviço correspondente (Client, Contact, etc.)

Validações com Zod

Todos os schemas de cadastro/atualização usam Zod para validação:

  • Validação em tempo de execução
  • Type-safe (TypeScript)
  • Mensagens de erro customizadas
  • Regras complexas (refinements)

Exemplo:

import { clientRegisterBaseSchema } from "@/types/client/client-register.type";

const validated = clientRegisterBaseSchema.parse(formData);
// Se passar, dados estão válidos e tipados