Skip to content

squad6-deneasybot/deneasy-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

258 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Manual do Deneasy Bot

Este guia descreve o passo a passo para colocar a solução no ar, partindo de uma máquina nova e utilizando os repositórios oficiais da Squad.

Parte 1 — Preparando o Computador

Instale as ferramentas básicas para rodar o projeto:

  1. Git;
  2. Java 21 (JDK);
  3. Node.js (LTS);
  4. VS Code (melhor para o Front-End);
  5. IntelliJ (melhorar para o Back-End).

Parte 2 — Baixando o Código

  1. Crie uma pasta no seu computador (ex: C:\Projetos\Deneasy).

  2. Abra o terminal nesta pasta e clone os repositórios:

    # Clone o Backend
    git clone https://github.com/squad6-deneasybot/deneasy-bot.git
    # Clone o Frontend
    git clone https://github.com/squad6-deneasybot/deneasy-admin-hub.git

Parte 3 — Serviços Externos (Credenciais)

Antes de subir o sistema, você precisa obter as chaves de acesso do e-mail e do WhatsApp.

3.1. Mailtrap (Serviço de E-mail)

Usamos o Mailtrap para testar o envio de códigos de segurança sem precisar de um servidor de e-mail real.

3.2. Meta for Developers (WhatsApp API)

Necessário para o Bot funcionar no WhatsApp.

  • O que fazer: Criar um App do tipo "Empresa" na Meta e configurar o produto "WhatsApp".
  • Tutoriais: Configurando WhatsApp Cloud API (Youtube) ou Guia Oficial da Meta.
  • O que você precisa copiar de lá:
    1. Token de Acesso: (Pode ser o temporário de 24h para teste rápido ou o Permanente de Usuário do Sistema).
    2. Phone ID (Identificação do número de telefone): O ID do número de teste ou real.
    3. App Secret (Chave Secreta do Aplicativo): Fica nas configurações básicas do App (necessário para segurança).

Parte 4 — Deploy do Backend (Render)

  1. Crie uma conta no Render.com.
  2. Crie o Banco de Dados:
    • New + > PostgreSQL.
    • Nome: deneasy-db.
    • Copie a Internal DB URL gerada.
  3. Crie a Aplicação:
    • New + > Web Service.

    • Conecte o repositório deneasy-bot.

    • Runtime: Docker.

    • Preencha as Environment Variables abaixo:

      Chave Valor / Onde encontrar
      DB_URL A Internal DB URL do banco criado no passo anterior.
      DB_USER Usuário do banco (veja no painel do Render).
      DB_PASSWORD Senha do banco (veja no painel do Render).
      MAILTRAP_USER O Username copiado na Parte 3.1.
      MAILTRAP_PASS O Password copiado na Parte 3.1.
      WHATSAPP_API_URL https://graph.facebook.com/v21.0/SEU_PHONE_ID/messages (Coloque o Phone ID da Parte 3.2).
      WHATSAPP_API_TOKEN O Token copiado na Parte 3.2.
      WHATSAPP_APP_SECRET O App Secret copiado na Parte 3.2.
      WHATSAPP_VERIFY_TOKEN Crie uma senha simples (ex: deneasy123) para usar na configuração do Webhook.
      DENEASY_SECURITY_COOKIE_SECURE true
      DENEASY_ENCRYPTION_SECRET Invente uma senha forte aleatória.
      DENEASY_ENCRYPTION_SALT Invente outra senha aleatória.
      JWT_SECRET Invente uma senha longa aleatória.
      FRONTEND_URL https://<dominio_do_projeto>.vercel.app (URL padrão prevista para o Frontend).
  4. Clique em Deploy Web Service.

Importante: o Banco de Dados usado pela Squad foi o Supabase. Criamos diretamente no Supabase usando o SQL Editor. Aqui está o código para caso queira — e recomendamos — usá-lo:

-- WARNING: This schema is for context only and is not meant to be run.
-- Table order and constraints may not be valid for execution.

CREATE TABLE company_table (
  id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name TEXT NOT NULL,
  app_key TEXT NOT NULL UNIQUE,
  app_secret TEXT NOT NULL,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT now() NOT NULL
);
CREATE TABLE super_admin_table (
  id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name TEXT NOT NULL,
  email TEXT NOT NULL UNIQUE,
  password_hash TEXT NOT NULL,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT now() NOT NULL
);
CREATE TABLE public.company_table (
  id bigint NOT NULL DEFAULT nextval('company_table_id_seq'::regclass),
  name character varying NOT NULL,
  app_key text NOT NULL UNIQUE,
  app_secret text NOT NULL,
  created_at timestamp with time zone NOT NULL DEFAULT now(),
  CONSTRAINT company_table_pkey PRIMARY KEY (id)
);
CREATE TABLE public.evaluation_table (
  id bigint NOT NULL DEFAULT nextval('evaluation_table_id_seq'::regclass),
  user_id bigint NOT NULL,
  content text NOT NULL,
  rating integer NOT NULL CHECK (rating >= 1 AND rating <= 5),
  created_at timestamp with time zone NOT NULL DEFAULT now(),
  CONSTRAINT evaluation_table_pkey PRIMARY KEY (id),
  CONSTRAINT evaluation_table_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.user_table(id)
);
CREATE TABLE public.report_subscription_table (
  id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,
  user_id bigint NOT NULL,
  frequency character varying NOT NULL CHECK (frequency::text = ANY (ARRAY['WEEKLY'::character varying::text, 'BIWEEKLY'::character varying::text, 'MONTHLY'::character varying::text])),
  last_sent_at date,
  CONSTRAINT report_subscription_table_pkey PRIMARY KEY (id),
  CONSTRAINT report_subscription_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.user_table(id)
);
CREATE TABLE public.super_admin_table (
  id bigint NOT NULL DEFAULT nextval('super_admin_table_id_seq'::regclass),
  name character varying NOT NULL,
  email USER-DEFINED NOT NULL UNIQUE,
  password_hash text NOT NULL,
  created_at timestamp with time zone NOT NULL DEFAULT now(),
  CONSTRAINT super_admin_table_pkey PRIMARY KEY (id)
);
CREATE TABLE public.user_table (
  id bigint NOT NULL DEFAULT nextval('user_table_id_seq'::regclass),
  company_id bigint NOT NULL,
  name character varying NOT NULL,
  email USER-DEFINED NOT NULL,
  phone character varying,
  profile character varying NOT NULL,
  created_at timestamp with time zone NOT NULL DEFAULT now(),
  session_token character varying,
  CONSTRAINT user_table_pkey PRIMARY KEY (id),
  CONSTRAINT user_table_company_id_fkey FOREIGN KEY (company_id) REFERENCES public.company_table(id)
);
CREATE TABLE public.wishlist_table (
  id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,
  content text NOT NULL,
  created_at timestamp with time zone NOT NULL,
  user_id bigint NOT NULL,
  CONSTRAINT wishlist_table_pkey PRIMARY KEY (id),
  CONSTRAINT fkobicikgtb5iqq2or04218115d FOREIGN KEY (user_id) REFERENCES public.user_table(id)
);

Adendo Essencial: Criar o primeiro acesso; registro de Super Admin

-- Senha padrão: "admin123" (Hash BCrypt)
INSERT INTO super_admin_table (name, email, password_hash)
VALUES ('Admin Inicial', '[email protected]', '$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy');

Parte 5 — Deploy do Frontend (Vercel)

  1. Crie uma conta na Vercel.com.
  2. Add New... > Project > Importe deneasy-admin-hub.
  3. Nas Environment Variables, adicione:
    • VITE_API_URL: A URL do seu backend no Render (ex: https://<dominio_do_projeto>.onrender.com). (Sem barra no final).
  4. Clique em Deploy.

Parte 6 — Configuração Final

  1. Ativar o Webhook na Meta:
    • Volte ao painel do App na Meta > WhatsApp > Configuração.
    • Edite o Webhook.
    • URL: Cole a URL do seu backend + /webhook (ex: https://<dominio_do_projeto>.onrender.com/webhook).
    • Token: Coloque a senha que você inventou (WHATSAPP_VERIFY_TOKEN).
    • Salve e assine o evento messages.
  2. Testar:
    • Mande um "Oi" no WhatsApp para o número de teste. O bot deve responder.
      • Mesmo que possua as chaves de uma empresa, é necessário que o e-mail enviado seja de um registro real de usuário nessa empresa no ERP Omie. Além disso, o telefone que estiver mandando a mensagem também deve ser o mesmo desse usuário que está registrado no ERP. É uma camada extra de segurança às informações financeiras.
    • Acesse o site na Vercel e tente logar (deve adicionar um usuário diretamente no banco de dados antes).

About

Assistente virtual para a Easy Gestão de Negócios. Este chatbot para WhatsApp automatiza consultas financeiras, permitindo que clientes acessem dados de suas empresas de forma rápida e segura, reduzindo o custo operacional e melhorando a experiência do cliente.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages