############################################################
 [OBSOLETO] Este arquivo descreve o modelo ANTIGO (Baileys:
 instancia + QR + tunel por cliente). Para instalar cliente
 NOVO use o modelo atual (Cloud API / numero unico):
       Deploy\ONBOARDING-CLIENTE.md
 Mantido aqui so como referencia para quem ainda esta migrando.
############################################################

============================================================
 DIAMANTE - AGENTE WHATSAPP  |  INSTALACAO NO CLIENTE
============================================================

O agente responde perguntas de vendas/estoque/financeiro pelo WhatsApp,
consultando o SQL Server do ERP Diamante.

Em PRODUCAO usamos o modo NUVEM: o WhatsApp fica na VPS (Evolution) e no
servidor do cliente roda SO o servico C#. A instalacao tem 2 partes:

  PARTE A - na VPS (voce/admin, ~5 min, 1 vez por cliente)
  PARTE B - no servidor do cliente (este LEIAME + o INSTALAR-AGENTE.bat)

------------------------------------------------------------
 ANTES DE COMECAR - tenha em maos
------------------------------------------------------------
 [ ] cliente_id unico (ex.: loja02, mercadoxyz)
 [ ] Numero de WhatsApp do bot (um celular para escanear o QR)
 [ ] Chave de IA do cliente (Groq gratis: https://console.groq.com -> API Keys)
 [ ] Da VPS (arquivo AGENTEWHATSAPP.VPS/docker-compose.yml):
       - EVOLUTION_APIKEY  (para criar a instancia)
       - CONECTOR_TOKEN    (vai no config.xml do C#)
 [ ] Dados do banco do cliente (connection string do SQL Server)

============================================================
 PARTE A - NA VPS: criar a instancia do cliente
============================================================


(antes de iniciar a instalação tem que extrair o arquivo ocienv.zip na c:\

1) Abrir o tunel de manutencao (a Evolution/8080 e interna):


     ssh -i "C:\ocienv\.ssh\oci_arm" -L 18080:localhost:8080 ubuntu@163.176.235.68

2) Criar a instancia (nome = cliente_id). No PowerShell:

     $body = @{
       instanceName = "loja02"
       integration  = "WHATSAPP-BAILEYS"
       qrcode       = $true
       webhook      = @{ url = "http://broker:8090/whatsapp/webhook"; events = @("MESSAGES_UPSERT") }
     } | ConvertTo-Json -Depth 5

     Invoke-RestMethod -Method Post -Uri "http://localhost:18080/instance/create" `
       -Headers @{ apikey = "EVOLUTION_APIKEY" } `
       -ContentType "application/json" -Body $body

   (No PowerShell NAO use "curl" - use "Invoke-RestMethod".)

3) Parear o WhatsApp: abrir no navegador  http://localhost:18080/manager
   -> logar com a EVOLUTION_APIKEY -> clicar em loja02 -> QR Code/Connect
   -> escanear com o CELULAR DO BOT. O status vira "open".

4) Fechar o tunel. A instancia segue rodando na VPS.

============================================================
 PARTE B - NO SERVIDOR DO CLIENTE: servico C#
============================================================




1) Copie a pasta do servico (bin\Release) para o servidor, por exemplo:
     C:\DiamanteWhatsApp\
   Coloque o INSTALAR-AGENTE.bat e este LEIAME na MESMA pasta do
   AGENTEWHATSAPP.Service.exe.

2) Aponte o banco: edite  AGENTEWHATSAPP.Service.exe.config
   -> connection string chave "a" = banco do cliente.

3) Gere o config: rode o INSTALAR-AGENTE.bat, opcao [1] (roda em console).
   Na 1a vez ele cria o config.xml nesta pasta. Feche com CTRL+C.

4) Edite o config: opcao [2] do bat (abre o config.xml no Bloco de Notas).
   Deixe assim (modo nuvem):

     <Config>
       <modo>nuvem</modo>
       <Nuvem>
         <vps_url>https://whatsapp.diamantesistemas.com.br</vps_url>
         <cliente_id>loja02</cliente_id>
         <token>CONECTOR_TOKEN</token>
         <poll_timeout>30</poll_timeout>
       </Nuvem>

       <IA>
         <provider>groq</provider>
         <modelo>llama-3.3-70b-versatile</modelo>
         <api_key>gsk_...CHAVE_DO_CLIENTE...</api_key>
         <base_url>https://api.groq.com/openai</base_url>
         <max_tokens>1024</max_tokens>
       </IA>

       <limite_mensagens_por_hora>200</limite_mensagens_por_hora>

       <Empresas>
         <Empresa>
           <empresa_id>1</empresa_id>
           <connection_string></connection_string>
           <NumerosAutorizados>
             <numero>5599999999999</numero>
           </NumerosAutorizados>
         </Empresa>
       </Empresas>
     </Config>

   IMPORTANTE:
   - cliente_id = o MESMO nome da instancia criada na Parte A.
   - token = o CONECTOR_TOKEN da VPS.
   - Groq EXIGE  base_url = https://api.groq.com/openai  (sem isso, nao responde).
     Gemini: provider=gemini, modelo=gemini-2.5-flash, base_url vazio.
   - Numeros autorizados: so digitos, com DDI 55 (ex.: 5573991683077).

5) Teste: opcao [1] do bat. Deve aparecer:
     "Modo NUVEM ativo"  e  "Conector nuvem iniciado. VPS: https://whatsapp..."
   NAO pode ficar em "Conector nuvem: falha".
   Entao, de um numero AUTORIZADO, mande no WhatsApp do bot:
     "quanto vendi hoje"   -> deve responder.

6) Instale como servico do Windows para subir sozinho:
   Feche o bat e reabra com BOTAO DIREITO > "Executar como administrador".
   Opcao [3] (instalar) -> ele cria e inicia o servico.

   Depois, para gerenciar: opcoes [4] iniciar, [5] parar, [6] status,
   [7] desinstalar.

============================================================
 PROBLEMAS COMUNS
============================================================
 - "Conector nuvem: falha ... Retentando":
     o C# nao alcanca a VPS. Teste no navegador do servidor:
       https://whatsapp.diamantesistemas.com.br/health   (deve dar {"ok":true})
     Confira internet, o vps_url e o token (= CONECTOR_TOKEN da VPS).

 - Nao responde a numero autorizado:
     confira o numero em <NumerosAutorizados> (tolera o 9o digito, mas
     precisa estar cadastrado).

 - Sem resposta usando Groq:
     faltou o base_url = https://api.groq.com/openai .

 - Mensagem chega mas nada volta:
     na VPS, "docker compose logs broker" (ver se o simbolo de mensagem
     chega) e conferir se a instancia esta "open" no manager.

============================================================
 CUSTO DE IA (opcional conferir no banco)
============================================================
   SELECT agente, SUM(custo_usd) AS custo_usd,
          SUM(tokens_input+tokens_output) AS tokens
   FROM ia_log_uso GROUP BY agente;
   (Com Groq/Gemini gratis, custo ~ 0.)

Documentacao completa no repositorio:
  DOC_Arquitetura_AgenteWhatsApp.md  (como funciona)
  DOC_Instalacao_AgenteWhatsApp.md   (este passo a passo, detalhado)
  DOC_AgenteWhatsApp.md              (config e consultas)
