papaia.dev.br · Ricardo Abdala

Cases / Patrimônio

Patrimônio: 63 regras viraram um app de retirada e devolução

Um painel de consulta e um app de movimentação deram visão e rastro ao patrimônio de uma instituição com vários campi.

ClienteInstituição com vários campi
Período2026
FrenteSistemas e regras de negócio
TecnologiaGoogle Apps Script · Next.js · TypeScript · Google Sheets API

O problema

A planilha de patrimônio, mantida por um app de campo, cadastrava e auditava bem, mas não mostrava o valor do acervo, as lacunas de cadastro nem quem estava com cada equipamento. Faltava também o registro de retiradas e devoluções.

O que foi construído

Painel de patrimônio. Somente leitura, com seis visões: visão geral, inventário, auditoria, valor, mídia e qualidade de dados. A de qualidade de dados é a que mais mudou a operação: em vez de relatar números, ela aponta anomalias com severidade e ação sugerida.

App de movimentação. Registra retiradas e devoluções com as regras testadas: não se retira item já emprestado, não se devolve o que está na base, a devolução ocorre no campus de origem, a data prevista é obrigatória e a data da operação nasce no servidor, nunca no aparelho. Até cinco fotos por movimentação.

A decisão que definiu o resto

A base oficial é mantida por outro sistema, e o acesso disponível era de leitura. Escrever nela seria sobrescrito na sincronização seguinte. Então o app passou a ter duas bases: a oficial, de onde só lê, e uma própria, onde escreve. A restrição virou regra de código: qualquer escrita dirigida à base oficial é recusada.

Um detalhe que vale contar

A ligação entre as duas bases não usa o número de plaqueta, que seria o caminho óbvio. A própria base prova por quê: há plaquetas duplicadas, com espaço sobrando e em branco. A chave é o identificador interno do ativo. A plaqueta serve para o operador buscar, não para o sistema confiar.

Simulação

Experimente: faça uma retirada e uma devolução.

Dados fictícios. Tente quebrar as regras: retirar sem data, marcar devolução no passado, devolver em outro campus.

Movimentação de Ativosoperador · exemplo
PlaquetaItemCampusStatusÚltima movimentação