|
|
||
|---|---|---|
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| README.md | ||
| artisan | ||
| composer.json | ||
| composer.lock | ||
| package-lock.json | ||
| package.json | ||
| phpunit.xml | ||
| vite.config.js | ||
README.md
Nexus - Ingline Systems
Status: 🚧 Em Desenvolvimento 🚧
Sistema central (Nexus) para o monitoramento de PABX (FreePBX/Asterisk) e gestão de informações de clientes, desenvolvido para a equipe de suporte da Ingline Systems.
1. Sobre o Projeto
O Nexus é a ferramenta definitiva para a equipe de suporte da Ingline Systems. Ele foi criado para centralizar duas necessidades críticas em uma única aplicação Laravel:
- Gestão de Clientes: Manter um registro centralizado e confiável com todas as informações vitais dos clientes (Razão Social, CNPJ, contatos, detalhes técnicos, etc.).
- Monitoramento Ativo: Acompanhar o estado de saúde (status de endpoints, troncos, etc.) de todos os servidores FreePBX/Asterisk dos clientes em tempo real.
A arquitetura do projeto utiliza um modelo "push". Um script PHP leve, instalado no servidor FreePBX de cada cliente, coleta os dados de status via AMI (Asterisk Manager Interface) e os envia periodicamente para a API deste sistema.
O Nexus, então, processa, armazena e exibe essas informações em um dashboard unificado, permitindo que a equipe de suporte aja proativamente antes que um problema seja reportado.
2. Funcionalidades Planejadas
- Dashboard de Monitoramento: Visualização em tempo real do status de todos os endpoints de todos os clientes.
- Cadastro Completo de Clientes: CRUD para clientes, armazenando informações comerciais (CNPJ, Endereço) e técnicas (IP, Versão do FreePBX, etc.).
- API Segura: Endpoint POST para recebimento dos dados (heartbeats) dos scripts dos clientes, protegido por autenticação baseada em token (Sanctum).
- Alertas: Notificações (via Email, Slack, etc.) quando um cliente fica offline (para de enviar heartbeats) ou um endpoint específico falha.
- Histórico de Status: Logs de mudanças de estado para permitir diagnósticos (ex: "Ramal 1020 do Cliente X ficou offline às 14:30").
- Gestão de Usuários: Controle de acesso para a equipe de suporte.
3. Arquitetura e Stack
Este projeto é construído com a seguinte stack:
- Backend: Laravel 12 (PHP 8.3+)
- Frontend: Blade com (potencialmente) Livewire ou Vue.js para reatividade
- Banco de Dados: MySQL (ou PostgreSQL)
- Filas (Jobs): Redis (Recomendado) para processar os heartbeats de forma assíncrona
- Broadcasting (WebSockets): Laravel Reverb para atualizações em tempo real no dashboard
- Autenticação da API: Laravel Sanctum (para os tokens dos scripts clientes)
4. Primeiros Passos (Ambiente de Desenvolvimento)
Siga os passos abaixo para configurar o projeto localmente.
-
Clonar o repositório:
git clone [https://github.com/Lukibeg/nexus-inglinesystems.git](https://github.com/Lukibeg/nexus-inglinesystems.git) cd nexus-inglinesystems -
Instalar dependências (PHP e JS):
composer install npm install npm run build -
Configurar o Ambiente:
# Copie o arquivo de exemplo cp .env.example .env # Gere a chave da aplicação php artisan key:generate -
Configurar o .env: Abra o arquivo
.enve configure as variáveis do banco de dados (DB_DATABASE,DB_USERNAME,DB_PASSWORD). -
Rodar as Migrações:
php artisan migrate -
(Opcional) Rodar Seeders para dados de teste:
php artisan db:seed -
Iniciar o servidor de desenvolvimento:
php artisan serve
5. Script Cliente (Agente)
A pasta /client-script (ou um repositório separado) conterá o script PHP monitor.php que deve ser instalado em cada servidor FreePBX do cliente.
Responsabilidades do script:
- Conectar-se ao AMI (Asterisk Manager Interface).
- Obter o status dos endpoints (ex:
pjsip show endpoints). - Formatar os dados em um JSON.
- Enviar os dados via POST para a API do Nexus (
https://nexus.inglinesystems.com.br/api/v1/status-update), incluindo o Token de Autenticação no cabeçalho. - Ser executado via
crontaba cada 1 ou 5 minutos.