Files
instrucoes_gerais/scoreodonto/arquitetura.md
T

56 lines
2.8 KiB
Markdown

# 🦷 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:** React + Vite + TypeScript + Tailwind
- Porta de Produção/Dev: `3013`
- **Backend:** Node.js + pg (Nativo)
- Porta de Produção/Dev: `8018`
- > [!IMPORTANT]
> **NÃO UTILIZE ORM (Prisma/Sequelize)**. Toda a persistência deve ser feita via driver nativo `pg` para máxima performance e controle de queries.
- **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 e Versionamento (+1)
O webhook do ScoreOdonto roda de forma isolada na VPS 4.
- **Webhook Listener Port (VPS 4):** `9002`
- O webhook escuta na porta 9002 e dispara o script de build/deploy exclusivo (`deploy-prod-scoreodonto.sh`).
### 📦 Regra de Incremento de Versão (Host-Side Bump)
Diferente do Clube67, o versionamento do ScoreOdonto ocorre no **Host (VPS 4)** antes do processo de rsync/build.
1. O script `update-version.js` está localizado em `/home/deploy/stack/scoreodonto.com/update-version.js`.
2. Este script é executado pelo pipeline de deploy (`deploy-prod-scoreodonto.sh`).
3. O script incrementa o `version.json`, gera o `deploys.json` e realiza um commit automático no Git com a tag `[version-bump]`.
> [!WARNING]
> **NÃO ADICIONE O UPDATE-VERSION AO PACKAGE.JSON**
> No ScoreOdonto, o arquivo `frontend/package.json` deve conter apenas `"build": "vite build"`.
> Adicionar `node ../update-version.js &&` ao script de build dentro do Docker fará com que a versão seja incrementada em um ambiente efêmero e não persista no Git, resultando em versões congeladas ou duplicadas na interface.
### 🐳 Arquitetura de Container (Stateless Build)
Como a versão já vem incrementada e persistida do Host via rsync, o Docker apenas compila o que recebe:
1. O **Build Context** no `docker-compose.yml` aponta para a raiz do projeto (`context: .`).
2. O `Dockerfile` do frontend realiza o `vite build` de forma limpa.
## 🤖 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):
1. **Grafana (Painel Central):** Regras de alerta configuradas com a tag `repo="scoreodonto.com"`.
2. **Gitea-Bridge (VPS 1):** Escuta na porta **9091** e faz o POST na API do Gitea.
> [!IMPORTANT]
> **Diferenciação de Portas:**
> * **9002:** Webhook de Deploy (VPS 4).
> * **9091:** Bridge de Auto-Cura (VPS 1).