92 lines
4.1 KiB
Markdown
92 lines
4.1 KiB
Markdown
# 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.
|