# 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: 1. **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.). 2. **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. 1. **Clonar o repositório:** ```bash git clone [https://github.com/Lukibeg/nexus-inglinesystems.git](https://github.com/Lukibeg/nexus-inglinesystems.git) cd nexus-inglinesystems ``` 2. **Instalar dependências (PHP e JS):** ```bash composer install npm install npm run build ``` 3. **Configurar o Ambiente:** ```bash # Copie o arquivo de exemplo cp .env.example .env # Gere a chave da aplicação php artisan key:generate ``` 4. **Configurar o .env:** Abra o arquivo `.env` e configure as variáveis do banco de dados (`DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`). 5. **Rodar as Migrações:** ```bash php artisan migrate ``` 6. **(Opcional) Rodar Seeders para dados de teste:** ```bash php artisan db:seed ``` 7. **Iniciar o servidor de desenvolvimento:** ```bash 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:** 1. Conectar-se ao AMI (Asterisk Manager Interface). 2. Obter o status dos endpoints (ex: `pjsip show endpoints`). 3. Formatar os dados em um JSON. 4. 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. 5. Ser executado via `crontab` a cada 1 ou 5 minutos.