omnichannel-deploy/README.md

208 lines
5.5 KiB
Markdown

# Omnichannel Sothis
Plataforma omnichannel para atendimento com foco inicial em WhatsApp. O sistema combina atendimento em tempo real, Agente Virtual para triagem, filas por especialidade, abertura ativa por template, agenda de contatos, painéis operacionais e administração de usuários/perfis.
O projeto foi construído para validar e evoluir um MVP de atendimento corporativo, com perfis de agente, supervisor e administrador.
## Clonando o Projeto
Este repositório funciona como o repositório de deploy/orquestração. O backend e o frontend ficam em repositórios separados e devem ser clonados dentro das pastas esperadas pelo `docker-compose.yml`.
Em uma pasta vazia:
```bash
git clone https://chaleiradev.sothistelecom.com/Sothis/omnichannel-deploy.git .
git clone https://chaleiradev.sothistelecom.com/Sothis/omnichannel-backend.git backend
git clone https://chaleiradev.sothistelecom.com/Sothis/omnichannel-frontend.git frontend
```
Ao final, a estrutura deve ficar assim:
```txt
omnichannel/
├── backend/
├── frontend/
├── database/
├── docker-compose.yml
└── README.md
```
## Principais Recursos
- Login corporativo via LDAP/Active Directory.
- Estrutura para Microsoft OAuth / Entra ID.
- JWT próprio da aplicação com perfis e especialidades.
- Atendimento WhatsApp em tempo real via `whatsapp-web.js`.
- Socket.IO para atualização de chats/mensagens.
- Agente Virtual Sothis para triagem e roteamento.
- Fila por especialidade.
- Assumir, liberar, transferir e fechar atendimento.
- Abertura ativa com templates aprovados.
- Agenda de contatos com WhatsApp, telefone/SMS, email, etiqueta e observação.
- Painel do agente.
- Painel operacional do supervisor.
- Painel administrativo com usuários, acessos, templates, IA, canais e configurações.
- Conteúdos da IA e regras/travas.
- Migrations SQL versionadas.
## Stack Técnica
### Backend
- Node.js 20+ recomendado.
- NestJS `^11.1`.
- TypeScript `^6.0`.
- PostgreSQL via `pg`.
- Socket.IO `^4.8`.
- `whatsapp-web.js` `^1.34`.
- LDAP via `ldapts`.
- JWT via `jsonwebtoken`.
- Logs com `winston`.
### Frontend
- React `^18.3`.
- Vite `^5.4`.
- React Router `^6.30`.
- Socket.IO Client `^4.8`.
### Banco
- PostgreSQL 16 recomendado.
- O banco não é gerenciado pelo `docker-compose.yml` deste repositório.
- As migrations ficam em `database/migrations`.
### Docker
O Docker Compose da raiz sobe somente:
- `backend`
- `frontend`
O banco deve ser externo ao compose: VM, banco corporativo, RDS, container separado ou PostgreSQL local gerenciado fora deste projeto.
## Estrutura do Repositório
```txt
omnichannel/
├── backend/ # API NestJS e regras de negócio
├── frontend/ # Interface React/Vite
├── database/migrations/ # Migrations SQL
├── docs/ # Wiki operacional e arquitetura
├── docker-compose.yml # Sobe backend e frontend
└── README.md
```
## Como Subir com Docker Compose
1. Configure `.env.development` na raiz com os dados do banco externo.
2. Garanta que o PostgreSQL externo esteja acessível a partir do container backend.
3. Suba backend e frontend:
```bash
docker compose up -d --build
```
URLs padrão:
- Frontend: `http://localhost:4000`
- Backend: `http://localhost:4001`
Health:
```bash
curl http://localhost:4001/health
```
## Deploy Automatizado
O deploy deve seguir pelo Gitea Actions. O antigo fluxo manual via arquivo `.bat` não faz mais parte do processo recomendado.
Responsabilidades esperadas da pipeline:
- baixar/clonar os repositórios necessários;
- configurar variáveis de ambiente do ambiente alvo;
- buildar backend e frontend;
- subir os serviços com Docker Compose;
- executar validações pós-deploy;
- não gerenciar o banco dentro do compose.
## Como Rodar em Desenvolvimento
Backend:
```bash
cd backend
npm install
npm run dev
```
Frontend:
```bash
cd frontend
npm install
npm run dev
```
URLs comuns:
- Frontend Vite: `http://localhost:5173`
- Backend: `http://localhost:3001`
## Banco e Migrations
As migrations SQL estão em:
```txt
database/migrations
```
Elas representam a intenção de schema final/evolutivo do produto, mas o projeto ainda precisa de um runner formal para aplicar tudo em ordem em ambientes novos.
Para ambiente novo, antes de subir backend para uso real:
1. criar o banco PostgreSQL;
2. aplicar as migrations em ordem;
3. validar tabelas principais;
4. criar/atribuir usuário admin;
5. subir backend e frontend.
Detalhes em:
- [Deploy e operação](./docs/deploy.md)
- [Database](./backend/docs/database.md)
## Documentação
Wiki raiz:
- [docs/README.md](./docs/README.md)
- [Deploy e operação](./docs/deploy.md)
- [Arquitetura geral](./docs/arquitetura.md)
- [Fluxos end-to-end](./docs/fluxos-end-to-end.md)
- [Regras de negócio](./docs/regras-negocio.md)
- [ADRs](./docs/adrs.md)
- [Ambientes](./docs/ambientes.md)
- [Runbook](./docs/runbook.md)
Backend:
- [backend/docs/README.md](./backend/docs/README.md)
- [Auth](./backend/docs/auth.md)
- [WhatsApp](./backend/docs/whatsapp.md)
- [Admin](./backend/docs/admin.md)
- [Swagger/OpenAPI](./backend/docs/swagger.md)
## Estado Atual e Próximos Passos
O produto já foi validado em demo com cliente final. Antes de produção real, os principais fechamentos são:
- implementar guards JWT no backend;
- validar autorização por perfil no backend;
- formalizar runner de migrations;
- configurar backup/restore do banco externo;
- persistir sessão WhatsApp em volume;
- criar Swagger com DTOs;
- adicionar testes nos fluxos críticos.