diff --git a/clube67/arquitetura.md b/clube67/arquitetura.md index 27ffebb..1dd7838 100644 --- a/clube67/arquitetura.md +++ b/clube67/arquitetura.md @@ -1,4 +1,9 @@ -# 📐 Arquitetura de Rede e Topologia de Servidores +# 📐 Arquitetura de Rede e Topologia de Servidores (Clube67 / NewWhats) + +> [!WARNING] +> **REGRAS DE ISOLAMENTO (MULTI-TENANT)** +> Este documento dita a arquitetura EXCLUSIVA do ecossistema Clube67 e NewWhats. +> As informações contidas aqui (como MySQL, redis na porta 6379 índice 0, e uso da VPS 5) **NÃO SE APLICAM** ao ScoreOdonto ou outros projetos. Este documento descreve detalhadamente a arquitetura de servidores e rede privada projetada para garantir **alta performance, isolamento de riscos, segurança de dados e facilidade de escalonamento**. @@ -242,3 +247,16 @@ Para garantir que a invasão de um container não resulte no comprometimento do * **Read-Only Root Filesystem**: Monta o sistema de arquivos do container como apenas leitura, forçando gravações temporárias apenas em volumes declarados ou `/tmp` na memória (tmpfs). * **CAP Drop**: Remove capacidades de sistema desnecessárias ao container (ex: `NET_ADMIN`, `SYS_ADMIN`, `SYS_CHROOT`). * **Rootless Containers**: Sempre que suportado pela aplicação, os containers devem rodar com IDs de usuário não privilegiados (non-root). + +--- + +## 🤖 Fluxo de Auto-Cura (Self-Healing) com Grafana/Gitea + +O Clube67 / NewWhats utiliza um fluxo GitOps de Auto-Cura para detecção e mitigação autônoma de falhas. Quando ocorrem falhas críticas de execução no container, o Grafana deve enviar um webhook para a Gitea-Bridge. + +Para configurar alertas de auto-cura no Grafana: +1. Acesse o **Grafana** e crie uma nova regra de alerta baseada em LogQL (Loki) do container afetado. +2. Na seção de **Labels**, você **não precisa** definir a label `repo`, pois o `clube67_newwhats.local` é o repositório padrão de fallback da Bridge. +3. Roteie a notificação para o Contact Point `Gitea-Bridge`. + +Assim que a falha disparar, a Gitea-Bridge multi-tenant criará uma Issue automática com o prefixo `🚨 [AUTO-BUG]` no repositório `clube67_newwhats.local`, contendo todo o stack trace para o Agente IA realizar a manutenção e o hotfix. diff --git a/arquitetura_vlan_proposta.md b/lixeira/arquitetura_vlan_proposta.md similarity index 100% rename from arquitetura_vlan_proposta.md rename to lixeira/arquitetura_vlan_proposta.md diff --git a/instrucoes/.gitignore b/lixeira/instrucoes_duplicada/.gitignore similarity index 100% rename from instrucoes/.gitignore rename to lixeira/instrucoes_duplicada/.gitignore diff --git a/instrucoes/arquitetura.md b/lixeira/instrucoes_duplicada/arquitetura.md similarity index 100% rename from instrucoes/arquitetura.md rename to lixeira/instrucoes_duplicada/arquitetura.md diff --git a/instrucoes/compartilhamento_instrucoes.md b/lixeira/instrucoes_duplicada/compartilhamento_instrucoes.md similarity index 100% rename from instrucoes/compartilhamento_instrucoes.md rename to lixeira/instrucoes_duplicada/compartilhamento_instrucoes.md diff --git a/instrucoes/monitor_cal_install.sh b/lixeira/instrucoes_duplicada/monitor_cal_install.sh similarity index 100% rename from instrucoes/monitor_cal_install.sh rename to lixeira/instrucoes_duplicada/monitor_cal_install.sh diff --git a/instrucoes/monitoramento-calendar.md b/lixeira/instrucoes_duplicada/monitoramento-calendar.md similarity index 100% rename from instrucoes/monitoramento-calendar.md rename to lixeira/instrucoes_duplicada/monitoramento-calendar.md diff --git a/instrucoes/protocolo_agentes.md b/lixeira/instrucoes_duplicada/protocolo_agentes.md similarity index 100% rename from instrucoes/protocolo_agentes.md rename to lixeira/instrucoes_duplicada/protocolo_agentes.md diff --git a/instrucoes/seguranca_deploy_user.md b/lixeira/instrucoes_duplicada/seguranca_deploy_user.md similarity index 100% rename from instrucoes/seguranca_deploy_user.md rename to lixeira/instrucoes_duplicada/seguranca_deploy_user.md diff --git a/instrucoes/vpn-setup.md b/lixeira/instrucoes_duplicada/vpn-setup.md similarity index 100% rename from instrucoes/vpn-setup.md rename to lixeira/instrucoes_duplicada/vpn-setup.md diff --git a/instrucoes/vps3-banco-tuning.md b/lixeira/instrucoes_duplicada/vps3-banco-tuning.md similarity index 100% rename from instrucoes/vps3-banco-tuning.md rename to lixeira/instrucoes_duplicada/vps3-banco-tuning.md diff --git a/monitor_cal_install.sh b/lixeira/monitor_cal_install.sh similarity index 100% rename from monitor_cal_install.sh rename to lixeira/monitor_cal_install.sh diff --git a/system_resources_monitor.py b/lixeira/system_resources_monitor.py similarity index 100% rename from system_resources_monitor.py rename to lixeira/system_resources_monitor.py diff --git a/protocolo_agentes.md b/protocolo_agentes.md index 36ad5d4..5ec47f6 100644 --- a/protocolo_agentes.md +++ b/protocolo_agentes.md @@ -1,11 +1,20 @@ # 🤖 Protocolo Gitea Swarm (PGS): Coordenação de Multi-Agentes em Ambiente Multi-VPS -Este documento estabelece o protocolo de comunicação padrão, obrigatório e imutável para todos os Agentes de Inteligência Artificial (IAs) que atuarem no gerenciamento, desenvolvimento ou manutenção da infraestrutura do **Clube67** distribuída em múltiplos servidores. +Este documento estabelece o protocolo de comunicação padrão, obrigatório e imutável para todos os Agentes de Inteligência Artificial (IAs) que atuarem no gerenciamento, desenvolvimento ou manutenção da infraestrutura multi-tenant (múltiplos projetos) distribuída em múltiplos servidores. Como a arquitetura adota segurança **Zero-Trust de movimentação lateral** (impedindo que agentes em uma VPS acessem outras máquinas via SSH automático), o **Gitea** atua como o **Orquestrador de Estado Assíncrono** do enxame de agentes. --- +## 🧭 REGRA MESTRE DE ROTEAMENTO (DISPATCHER PROTOCOL) +**ATENÇÃO AGENTE DE IA:** Esta infraestrutura hospeda múltiplos projetos independentes (Multi-Tenant). Antes de tomar qualquer ação, você deve ler a arquitetura e as regras **específicas** do projeto solicitado. + +1. Se a tarefa envolver o **Clube67** ou **NewWhats**, você DEVE LER OBRIGATORIAMENTE a documentação na pasta `/home/deploy/instrucoes/clube67/`. +2. Se a tarefa envolver o **ScoreOdonto**, você DEVE LER OBRIGATORIAMENTE a documentação na pasta `/home/deploy/instrucoes/scoreodonto/`. +3. **Jamais** presuma que a arquitetura ou as portas de um projeto se aplicam ao outro. Mantenha os contextos estritamente isolados. + +--- + ## ⚠️ Regras Cruciais de Governança e Codificação (Obrigatório) 1. **Comunicação Prévia e Autorização:** Qualquer alteração na estrutura, infraestrutura ou lógica core do sistema deve ser obrigatoriamente comunicada de antemão. **As mudanças somente devem ser aplicadas após a autorização explícita do Administrador**. diff --git a/scoreodonto/arquitetura.md b/scoreodonto/arquitetura.md new file mode 100644 index 0000000..40ef2ca --- /dev/null +++ b/scoreodonto/arquitetura.md @@ -0,0 +1,37 @@ +# 🦷 Arquitetura ScoreOdonto CRM (Multi-Tenant) + +Este documento dita as regras exclusivas e as portas da arquitetura do **ScoreOdonto CRM**. +**Nunca** misture essas configurações com as do Clube67. + +## 🚀 Stack Tecnológica e Portas de Rede + +- **Frontend:** Next.js (React) + - Porta de Produção/Dev: `3013` +- **Backend:** Node.js + Prisma ORM + - Porta de Produção/Dev: `8018` +- **Banco de Dados (VPS 3):** PostgreSQL 18 + - Porta Padrão: `5432` + - Banco de Dados Isolado: `scoreodonto` +- **Cache (VPS 3):** DragonflyDB + - Porta Padrão: `6379` + - Índice Isolado: `/1` (exclusivo para ScoreOdonto) +- **Proxy Reverso (VPS 1):** Nginx / Traefik + - Domínio: `scoreodonto.com` + +## 🔄 Fluxo de Deploy Contínuo +O webhook do ScoreOdonto deve rodar de forma isolada do NewWhats. +- **Webhook Listener Port (VPS 4):** `9002` +- O webhook escuta na porta 9002 e dispara o script de build/deploy exclusivo (`deploy-prod-scoreodonto.sh`). + +## 🤖 Fluxo de Auto-Cura (Self-Healing) com Grafana/Gitea +Para automatizar a geração de Issues no repositório `ruicesar/scoreodonto.com` quando ocorrerem falhas em produção (VPS 1), os Agentes/Administradores devem configurar as regras no Grafana estritamente desta forma: + +1. Acesse o **Grafana** (Painel Central). +2. Vá em **Alerting** -> **Alert rules** e crie uma nova regra de alerta (ex: `sum(rate({container="scoreodontocom-scoreodonto-backend-1"} |= "error" [5m])) > 0`). +3. Na seção de **Labels (Custom Labels)**, é OBRIGATÓRIO adicionar: + * **Chave:** `repo` + * **Valor:** `scoreodonto.com` +4. Na seção **Notifications**, garanta que o alerta está roteado para o Contact Point `Gitea-Bridge`. + +> [!IMPORTANT] +> A tag `repo="scoreodonto.com"` é vital. A Gitea-Bridge multi-tenant na VPS 1 lerá essa tag dinamicamente e fará o POST na API do Gitea criando a Issue de Auto-Cura automaticamente no repositório correto. Sem essa tag, a bridge tentará abrir no repositório padrão.