Suite OrdemPlus
Screenshots

Clique para ampliar

Vídeos Demonstrativos

Suite OrdemPlus

Plataforma integrada para gestão de ordens de serviço, composta por painel web, API REST e aplicativo mobile offline-first.

Destaques
Operação offline-first com sincronização inteligente. O técnico pode executar praticamente todo o atendimento sem internet. Ordens, checklists, itens, observações, anexos e assinaturas ficam armazenados no dispositivo e são sincronizados quando a conexã
Solução completa e integrada. O OrdemPlus reúne em um único ecossistema: * gestão administrativa pelo painel web; * regras de negócio centralizadas na API; * execução do atendimento pelo aplicativo mobile; * banco central no servidor; * banco SQL
Arquitetura modular, segura e expansível. O servidor utiliza arquitetura MVC e o aplicativo é organizado em camadas, facilitando manutenção, testes e implementação de novas funcionalidades. A autenticação do painel web, da API e da área técnica `/adm

Tem dúvidas?

Falar no WhatsApp

Descrição
O **OrdemPlus** é uma solução completa para empresas de manutenção, assistência técnica, instalação, vistoria e prestação de serviços em campo. O sistema acompanha todo o ciclo de uma ordem de serviço, desde o cadastro do cliente e a abertura da OS até a execução do atendimento, preenchimento de checklist, registro de produtos e serviços utilizados, coleta de assinaturas, inclusão de anexos e conclusão do serviço.

A plataforma é formada por três módulos integrados:

### OrdemPlus Web

Painel administrativo e operacional utilizado por gestores, administradores e operadores.

Por meio do painel web, a empresa pode:

* cadastrar clientes;
* cadastrar funcionários e técnicos;
* gerenciar produtos e serviços;
* registrar dispositivos autorizados;
* abrir e acompanhar ordens de serviço;
* atribuir ordens aos técnicos;
* consultar checklists;
* visualizar produtos e serviços utilizados;
* consultar fotos, PDFs, áudios e assinaturas;
* acompanhar o histórico de alterações;
* controlar o processo de sincronização dos dispositivos.

O painel possui controle de acesso por perfil, permitindo separar as funções de administrador, operador e técnico.

Também existe uma área técnica independente, acessada por `/admin`, destinada à configuração do ambiente, aplicação de migrations e manutenção da instalação. Esse administrador técnico é diferente do administrador funcional da empresa.

### OrdemPlus API

A API REST é responsável pela comunicação entre o servidor, o aplicativo mobile e outros clientes autorizados.

Ela centraliza:

* autenticação por token JWT;
* validação das regras de negócio;
* cadastro e consulta de informações;
* envio e recebimento das ordens;
* sincronização de clientes, funcionários, produtos e serviços;
* sincronização de checklists e itens utilizados;
* upload e download de anexos;
* registro do histórico de eventos;
* controle dos status das ordens;
* tratamento de exclusões e alterações incrementais.

A API utiliza UUIDs e datas de atualização para identificar os registros e decidir quais dados devem ser inseridos, atualizados ou ignorados. Isso evita duplicidades e permite repetir uma sincronização com segurança.

As regras importantes ficam centralizadas no servidor. Por exemplo, uma ordem não pode ser concluída enquanto existirem itens obrigatórios pendentes no checklist.

### OrdemPlus Mobile

Aplicativo desenvolvido em Delphi FMX para uso de técnicos e equipes externas.

O aplicativo permite:

* consultar as ordens atribuídas ao técnico;
* iniciar e acompanhar atendimentos;
* trabalhar sem conexão com a internet;
* preencher checklists;
* adicionar produtos e serviços utilizados;
* registrar observações;
* tirar e visualizar fotos;
* anexar e visualizar PDFs;
* gravar e reproduzir áudios;
* coletar assinaturas do cliente e do técnico;
* alterar o status da ordem;
* sincronizar os dados com o servidor.

Os dados estruturados são armazenados localmente em um banco SQLite. Fotos, áudios, PDFs e assinaturas permanecem na memória interna do dispositivo até serem enviados ao servidor.

Quando a conexão é restabelecida, o aplicativo envia as alterações locais e recebe somente os registros modificados desde a última sincronização. Esse processo reduz o consumo de dados e permite que o técnico continue trabalhando em locais com conexão instável ou inexistente.

No servidor, o banco MySQL ou MariaDB mantém a versão central e consolidada das informações. O SQLite do aplicativo funciona como uma base operacional local, utilizada para garantir o funcionamento offline.
Requisitos
# Requisitos de desenvolvimento

## Servidor, painel web e API

| Componente | Requisito |
| -------------------------- | ----------------------------------- |
| PHP | 8.1 ou superior |
| Arquitetura | MVC próprio |
| Banco de dados | MySQL 5.7+ ou MariaDB 10.4+ |
| Servidor web | Apache 2.4 ou Nginx com PHP-FPM |
| Ambiente local recomendado | XAMPP 8.1+ |
| Codificação do banco | UTF-8mb4 |
| Protocolo da API | REST com JSON e multipart/form-data |
| Autenticação da API | JWT com HMAC SHA-256 |
| Controle de versão | Git |

### Extensões PHP necessárias

```text
pdo_mysql
mbstring
json
openssl
fileinfo
```

### Recursos necessários no servidor web

No Apache:

```text
mod_rewrite
mod_headers
```

### Estrutura principal do backend

```text
Controllers/
Models/
Views/
Core/
Services/
Repositories/
database/
database/migrations/
Sourcer/storage/
docs/
```

### Configuração para desenvolvimento

É necessário criar um arquivo `.env` contendo:

* ambiente da aplicação;
* URL base;
* credenciais do banco;
* timezone;
* chave secreta da aplicação;
* configurações de armazenamento;
* limite de upload;
* credenciais do administrador técnico.

Exemplo:

```env
APP_ENV=development
APP_DEBUG=true
TIMEZONE=America/Sao_Paulo

BASE_URL=http://localhost/ordemplus/Sourcer
SCRIPT_NAME=

DB_HOST=localhost
DB_NAME=ordemplus
DB_USER=root
DB_PASS=
DB_CHARSET=utf8mb4

APP_SECRET=chave-secreta-de-desenvolvimento
MIGRATIONS_ENABLED=true
```

---

## Aplicativo mobile

| Componente | Requisito |
| -------------------------------------- | -------------------------------------------------- |
| Delphi | 11 Alexandria ou superior |
| Framework visual | FireMonkey — FMX |
| Plataforma principal | Android 64 bits |
| Arquitetura Android | `arm64-v8a` |
| Banco local | SQLite |
| Acesso ao banco | FireDAC |
| Requisições HTTP | `System.Net.HttpClient` |
| Integração REST | REST Components |
| Processamento JSON | `System.JSON` |
| Java | JDK 11 ou versão compatível com o Delphi utilizado |
| Android SDK e NDK | Instalados e configurados no Delphi |
| Sistema operacional de desenvolvimento | Windows 10 ou superior |

### Estrutura sugerida do aplicativo

```text
Models/
Controllers/
Views/
Services/
Repositories/
Sync/
DataModules/
Utils/
Assets/
```

### Recursos obrigatórios para compilação

* ícones do aplicativo;
* splash screens;
* fontes utilizadas pelo projeto;
* `AndroidManifest.xml`;
* URL da API configurável;
* banco SQLite local;
* scripts de criação e atualização do banco;
* keystore para assinatura;
* controle de versão do aplicativo.

### Permissões Android utilizadas conforme a funcionalidade

```text
INTERNET
CAMERA
RECORD_AUDIO
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
READ_MEDIA_IMAGES
READ_MEDIA_AUDIO
READ_MEDIA_VIDEO
FOREGROUND_SERVICE
```

Permissões como localização, acesso às mídias, chamadas telefônicas ou execução de serviços em primeiro plano devem ser declaradas somente quando a funcionalidade correspondente estiver realmente implementada.

---

# Requisitos de deploy para produção

## Servidor OrdemPlus

| Componente | Requisito mínimo |
| ------------------------ | -------------------------------------------------------- |
| PHP | 8.1 ou superior |
| Banco de dados | MySQL 5.7+ ou MariaDB 10.4+ |
| Servidor web | Apache 2.4 ou Nginx |
| Certificado de segurança | HTTPS com TLS 1.2 ou superior |
| Extensões PHP | PDO MySQL, mbstring, JSON, OpenSSL e Fileinfo |
| Armazenamento | Espaço suficiente para fotos, PDFs, áudios e assinaturas |
| Backup | Banco de dados, arquivos e configurações |
| Timezone | `America/Sao_Paulo` |
| Codificação | UTF-8mb4 |

### Configuração mínima do `.env`

```env
APP_ENV=production
APP_DEBUG=false
TIMEZONE=America/Sao_Paulo

BASE_URL=https://seudominio.com
SCRIPT_NAME=

DB_HOST=localhost
DB_NAME=ordemplus
DB_USER=usuario_ordemplus
DB_PASS=senha-forte
DB_CHARSET=utf8mb4

APP_SECRET=chave-aleatoria-segura-com-no-minimo-32-caracteres

MIGRATIONS_ENABLED=false

SISTEMA_EMAIL=admin@seudominio.com
SISTEMA_PASSWORD_HASH=hash-bcrypt-da-senha
```

### Requisitos de segurança

* HTTPS obrigatório;
* `APP_SECRET` forte e exclusivo;
* `APP_DEBUG=false`;
* credenciais do banco com acesso restrito;
* arquivo `.env` protegido;
* diretório de anexos com permissões controladas;
* validação do tamanho e tipo dos uploads;
* sessões seguras;
* proteção CSRF;
* rate limiting no login;
* backups periódicos;
* logs de erros sem exposição de informações sensíveis.

### Permissões recomendadas

```bash
chmod 640 .env
chmod -R 755 Sourcer/
chmod -R 775 Sourcer/storage/
chown -R www-data:www-data Sourcer/storage/
```

### Etapas de implantação

1. Enviar os arquivos para o servidor.
2. Criar o banco MySQL ou MariaDB.
3. Configurar o arquivo `.env`.
4. Apontar o DocumentRoot para o diretório público.
5. Aplicar as migrations pendentes.
6. Configurar HTTPS.
7. Verificar as permissões do storage.
8. Testar o login do painel.
9. Testar a autenticação da API.
10. Validar o endpoint `/api/v1/horaserver`.
11. Realizar uma sincronização com um dispositivo de homologação.
12. Configurar backups do banco e dos anexos.

---

## Aplicativo Android em produção

### Distribuição direta por APK

Para distribuição corporativa:

* gerar o projeto em modo `Release`;
* assinar o APK com uma keystore válida;
* compilar para Android 64 bits;
* atualizar `versionCode` e `versionName`;
* testar instalação e atualização;
* hospedar o APK em endereço HTTPS ou distribuir por MDM;
* manter a keystore armazenada em local seguro;
* executar testes de regressão antes de cada liberação.

### Publicação na Google Play

Para publicação em loja:

* gerar um arquivo AAB assinado;
* utilizar um identificador definitivo de pacote;
* configurar ícones adaptativos;
* preparar screenshots;
* criar descrição curta e completa;
* disponibilizar política de privacidade;
* preencher a classificação de conteúdo;
* justificar permissões sensíveis;
* testar primeiro em distribuição interna;
* promover para teste fechado;
* publicar em produção somente após homologação;
* verificar antes de cada publicação os requisitos atuais de `targetSdkVersion` e da Google Play.

### Validações finais do aplicativo

Antes da liberação, devem ser testados:

* primeiro login;
* expiração e renovação do token;
* funcionamento offline;
* sincronização completa;
* sincronização incremental;
* criação e atualização de ordens;
* preenchimento de checklist;
* bloqueio de conclusão com pendências;
* envio de fotos;
* envio de PDFs;
* gravação e envio de áudios;
* coleta de assinaturas;
* recuperação após falha de conexão;
* atualização do banco SQLite;
* atualização do aplicativo sem perda de dados pendentes.