2026-05-25 14:27:57 -03:00
# Omnichannel Sothis
2026-03-19 18:24:39 -03:00
2026-05-27 15:28:06 -03:00
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.
2026-03-19 18:24:39 -03:00
2026-05-27 15:28:06 -03:00
O projeto foi construído para validar e evoluir um MVP de atendimento corporativo, com perfis de agente, supervisor e administrador.
2026-03-19 18:24:39 -03:00
2026-05-27 16:26:02 -03:00
## 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
```
2026-05-27 15:28:06 -03:00
## Principais Recursos
2026-03-19 18:24:39 -03:00
2026-05-27 15:28:06 -03:00
- 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.
2026-03-19 18:24:39 -03:00
2026-05-27 15:28:06 -03:00
## Stack Técnica
2026-03-19 18:24:39 -03:00
2026-05-27 15:28:06 -03:00
### Backend
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- 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` .
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
### Frontend
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- React `^18.3` .
- Vite `^5.4` .
- React Router `^6.30` .
- Socket.IO Client `^4.8` .
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
### Banco
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- PostgreSQL 16 recomendado.
- O banco não é gerenciado pelo `docker-compose.yml` deste repositório.
- As migrations ficam em `database/migrations` .
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
### Docker
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
O Docker Compose da raiz sobe somente:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- `backend`
- `frontend`
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
O banco deve ser externo ao compose: VM, banco corporativo, RDS, container separado ou PostgreSQL local gerenciado fora deste projeto.
2026-05-25 14:27:57 -03:00
## Estrutura do Repositório
2026-05-27 15:28:06 -03:00
```txt
2026-05-25 14:27:57 -03:00
omnichannel/
├── backend/ # API NestJS e regras de negócio
├── frontend/ # Interface React/Vite
├── database/migrations/ # Migrations SQL
2026-05-27 15:28:06 -03:00
├── docs/ # Wiki operacional e arquitetura
├── docker-compose.yml # Sobe backend e frontend
2026-05-25 14:27:57 -03:00
└── README.md
```
2026-05-27 15:28:06 -03:00
## Como Subir com Docker Compose
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
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:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
```bash
docker compose up -d --build
```
URLs padrão:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- Frontend: `http://localhost:4000`
- Backend: `http://localhost:4001`
Health:
2026-03-19 18:24:39 -03:00
```bash
2026-05-27 15:28:06 -03:00
curl http://localhost:4001/health
2026-03-19 18:24:39 -03:00
```
2026-05-27 16:26:02 -03:00
## 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.
2026-05-27 15:28:06 -03:00
## Como Rodar em Desenvolvimento
Backend:
2026-05-25 14:27:57 -03:00
```bash
cd backend
npm install
npm run dev
```
2026-05-27 15:28:06 -03:00
Frontend:
2026-05-25 14:27:57 -03:00
```bash
cd frontend
npm install
npm run dev
```
2026-05-27 15:28:06 -03:00
URLs comuns:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- Frontend Vite: `http://localhost:5173`
2026-05-25 14:27:57 -03:00
- Backend: `http://localhost:3001`
2026-05-27 15:28:06 -03:00
## Banco e Migrations
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
As migrations SQL estão em:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
```txt
database/migrations
```
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
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.
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
Para ambiente novo, antes de subir backend para uso real:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
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.
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
Detalhes em:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- [Deploy e operação ](./docs/deploy.md )
- [Database ](./backend/docs/database.md )
## Documentação
Wiki raiz:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- [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 )
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
Backend:
2026-05-25 14:27:57 -03:00
2026-05-27 15:28:06 -03:00
- [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 )
2026-03-19 18:24:39 -03:00
2026-05-27 15:28:06 -03:00
## Estado Atual e Próximos Passos
2026-03-19 18:24:39 -03:00
2026-05-27 15:28:06 -03:00
O produto já foi validado em demo com cliente final. Antes de produção real, os principais fechamentos são:
2026-05-26 09:08:53 -03:00
2026-05-27 15:28:06 -03:00
- 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.