Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
18 KiB
JSON
1 line
18 KiB
JSON
{"repo": "appfbj-stack/hermes-agente", "files": {"HERMES_ADMIN_SETUP.md": {"359650990ed182a6ad82ab4680d204432a78c269": {"t": 1785746603.739673, "n": 6767, "h": "4067547a99d968cd", "c": "# Guia de Configuração do Hermes Admin\n\n## Passo 1: Configurar Variáveis de Ambiente\n\nAdicione as seguintes variáveis ao seu arquivo `.env`:\n\n```bash\n# API Keys para LLMs (OBRIGATÓRIO)\nOPENROUTER_API_KEY=sk-or-v1-sua_chave_aqui\nDEEPSEEK_API_KEY=sk-sua_chave_aqui\n\n# Telegram Bots (OBRIGATÓRIO)\nTELEGRAM_BOT_TOKEN=seu_bot_token_cliente\nTELEGRAM_ADMIN_TOKEN=seu_bot_token_admin\nHERMES_MASTER_BOT_TOKEN=seu_bot_token_master\nHERMES_MASTER_BOT_USERNAME=seu_bot_username\n\n# Outras configurações\nDATABASE_URL=postgresql+psycopg://postgres:senha@db:5432/hermes\nJWT_SECRET=seu_jwt_secret_aqui\n```\n\n## Passo 2: Criar Bots no Telegram\n\n### Bot para Clientes\n\n1. Converse com @BotFather no Telegram\n2. Use `/newbot`\n3. Siga as instruções\n4. Copie o token gerado\n5. Adicione como `TELEGRAM_BOT_TOKEN` no `.env`\n\n### Bot Admin (Hermes Admin Master)\n\n1. Converse com @BotFather no Telegram\n2. Use `/newbot`\n3. Nome: \"Hermes Admin Master\" (ou preferido)\n4. Username: deve ser único\n5. Copie o token gerado\n6. Adicione como `TELEGRAM_ADMIN_TOKEN` no `.env`\n\n### Bot Master (existente)\n\nSe já tiver um bot master:\n1. Use o token existente\n2. Adicione como `HERMES_MASTER_BOT_TOKEN` no `.env`\n3. Adicione o username como `HERMES_MASTER_BOT_USERNAME`\n\n## Passo 3: Configurar Webhooks\n\n### Webhook para Bot Admin\n\n```bash\ncurl -X POST \"https://api.telegram.org/bot<TELEGRAM_ADMIN_TOKEN>/setWebhook\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"url\": \"https://seu-dominio.com/api/webhook/telegram-admin\",\n \"secret_token\": \"your_secret_token_here\"\n }'\n```\n\n### Webhook para Bot Master (se necessário)\n\n```bash\ncurl -X POST \"https://api.telegram.org/bot<HERMES_MASTER_BOT_TOKEN>/setWebhook\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"url\": \"https://seu-dominio.com/api/webhook/telegram-master\",\n \"secret_token\": \"your_secret_token_here\"\n }'\n```\n\n### Webhook para Bot Cliente (existente)\n\n```bash\ncurl -X POST \"https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"url\": \"https://seu-dominio.com/api/webhook/telegram\",\n \"secret_token\": \"your_secret_token_here\"\n }'\n```\n\n## Passo 4: Criar Super Admin\n\n### Via Painel Web\n\n1. Acesse `https://seu-dominio.com/login`\n2. Faça login com a primeira conta criada\n3. O primeiro usuário é automaticamente promovido a `is_super_admin=True`\n4. Acesse `/admin/hermes` para usar o Hermes Admin\n\n### Via Banco de Dados (opcional)\n\n```sql\nUPDATE users SET is_super_admin = TRUE WHERE email = 'seu_email@exemplo.com';\n```\n\n## Passo 5: Testar Integração\n\n### Testar via API\n\n```bash\n# Login para obter token\ncurl -X POST \"https://seu-dominio.com/api/auth/login\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"email\": \"seu_email@exemplo.com\",\n \"password\": \"sua_senha\"\n }'\n\n# Testar Hermes Admin\ncurl -X POST \"https://seu-dominio.com/api/admin/hermes/chat\" \\\n -H \"Authorization: Bearer SEU_TOKEN_JWT\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"message\": \"status do sistema\"}'\n```\n\n### Testar via Telegram\n\n1. Inicie uma conversa com o bot admin\n2. Envie: \"status do sistema\"\n3. Verifique se recebe resposta\n\n### Testar via Script\n\n```bash\npython test_hermes_integration.py\n```\n\n## Passo 6: Configurar Skills Administrativas\n\n### Criar Skill via Painel\n\n1. Acesse `/admin/hermes`\n2. Vá para \"Skills\"\n3. Clique em \"Nova Skill\"\n4. Preencha:\n - Nome: \"Dashboard Diário\"\n - Descrição: \"Gera resumo diário do sistema\"\n - Trigger Type: \"manual\"\n - Instruções: \"Gerar dashboard completo com todos os tenants e métricas\"\n5. Salve\n\n### Criar Skill via API\n\n```bash\ncurl -X POST \"https://seu-dominio.com/api/admin/hermes/skills\" \\\n -H \"Authorization: Bearer SEU_TOKEN_JWT\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"dashboard_diario\",\n \"description\": \"Gera resumo diário do sistema\",\n \"trigger_type\": \"manual\",\n \"instructions\": \"Gerar dashboard completo com todos os tenants e métricas\",\n \"active\": true\n }'\n```\n\n## Passo 7: Monitoramento\n\n### Ver Logs\n\n```bash\n# Ver logs do aplicativo\ntail -f logs/app.log\n\n# Filtrar por Hermes Admin\ngrep \"Hermes Admin\" logs/app.log\n\n# Filtrar por LLM Router\ngrep \"LLM Router\" logs/app.log\n```\n\n### Ver Dashboard\n\n1. Acesse `/admin/hermes/dashboard`\n2. Visualize métricas em tempo real\n3. Monitore:\n - Clientes ativos\n - Créditos usados\n - Tarefas abertas\n - Rotinas ativas\n\n## Troubleshooting\n\n### Problema: Hermes Admin não responde\n\n**Solução:**\n1. Verifique se `OPENROUTER_API_KEY` está configurada\n2. Verifique logs: `logs/app.log`\n3. Teste API key:\n ```bash\n curl -X POST \"https://openrouter.ai/api/v1/chat/completions\" \\\n -H \"Authorization: Bearer $OPENROUTER_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"model\": \"z-ai/glm-4.7\", \"messages\": [{\"role\": \"user\", \"content\": \"test\"}]}'\n ```\n\n### Problema: Telegram Admin não recebe mensagens\n\n**Solução:**\n1. Verifique se webhook está configurado:\n ```bash\n curl \"https://api.telegram.org/bot<TOKEN>/getWebhookInfo\"\n ```\n2. Verifique se URL está acessível\n3. Verifique logs do servidor\n\n### Problema: Erro de autenticação\n\n**Solução:**\n1. Verifique se usuário tem `is_super_admin=True`\n2. Verifique se token JWT é válido\n3. Faça login novamente para obter novo token\n\n### Problema: Banco de dados não conecta\n\n**Solução:**\n1. Verifique se PostgreSQL está rodando\n2. Verifique se `DATABASE_URL` está correta\n3. Verifique se usuário e senha estão corretos\n4. Teste conexão:\n ```bash\n psql $DATABASE_URL\n ```\n\n## Manutenção\n\n### Backup Diário\n\nAdicione ao crontab:\n\n```bash\n0 2 * * * /path/to/backup_script.sh\n```\n\n### Limpeza de Logs\n\nConfigurar rotação automática no `app/core/logging.py`\n\n### Atualizações\n\n1. Pull do repositório\n2. Rodar migrações\n3. Reiniciar serviço\n4. Testar integração\n\n## Suporte\n\nEm caso de problemas:\n\n1. Verificar logs: `logs/app.log`\n2. Rodar testes: `python test_hermes_integration.py`\n3. Consultar documentação: `HERMES_ADMIN_INTEGRATION.md`\n4. Abrir issue no GitHub\n\n## Segurança\n\n### Boas Práticas\n\n1. Nunca comitar `.env` no git\n2. Usar valores fortes para secrets\n3. Rotacionar chaves periodicamente\n4. Monitorar logs de acesso\n5. Usar HTTPS em produção\n\n### Permissões\n\n- Super Admin: Acesso total\n- Usuário Comum: Acesso apenas ao tenant\n- NUNCA misturar dados entre tenants\n\n## Performance\n\n### Otimizações\n\n1. Usar cache para queries frequentes\n2. Limitar tamanho de contexto\n3. Usar índices no banco\n4. Monitorar tempo de resposta\n\n### Monitoramento\n\n1. Logs de uso de LLM\n2. Métricas de performance\n3. Alertas de erro\n4. Análise de custos\n\n## Próximos Passos\n\n1. Configurar notificações push\n2. Implementar dashboard em tempo real\n3. Adicionar mais skills administrativas\n4. Integrar com Coolify para deploy\n5. Criar app mobile para admin"}, "72df674d4c20f9dd9e5c17334050001a33187a72": {"t": 1785766218.1621141, "n": 6767, "h": "4067547a99d968cd", "c": "# Guia de Configuração do Hermes Admin\n\n## Passo 1: Configurar Variáveis de Ambiente\n\nAdicione as seguintes variáveis ao seu arquivo `.env`:\n\n```bash\n# API Keys para LLMs (OBRIGATÓRIO)\nOPENROUTER_API_KEY=sk-or-v1-sua_chave_aqui\nDEEPSEEK_API_KEY=sk-sua_chave_aqui\n\n# Telegram Bots (OBRIGATÓRIO)\nTELEGRAM_BOT_TOKEN=seu_bot_token_cliente\nTELEGRAM_ADMIN_TOKEN=seu_bot_token_admin\nHERMES_MASTER_BOT_TOKEN=seu_bot_token_master\nHERMES_MASTER_BOT_USERNAME=seu_bot_username\n\n# Outras configurações\nDATABASE_URL=postgresql+psycopg://postgres:senha@db:5432/hermes\nJWT_SECRET=seu_jwt_secret_aqui\n```\n\n## Passo 2: Criar Bots no Telegram\n\n### Bot para Clientes\n\n1. Converse com @BotFather no Telegram\n2. Use `/newbot`\n3. Siga as instruções\n4. Copie o token gerado\n5. Adicione como `TELEGRAM_BOT_TOKEN` no `.env`\n\n### Bot Admin (Hermes Admin Master)\n\n1. Converse com @BotFather no Telegram\n2. Use `/newbot`\n3. Nome: \"Hermes Admin Master\" (ou preferido)\n4. Username: deve ser único\n5. Copie o token gerado\n6. Adicione como `TELEGRAM_ADMIN_TOKEN` no `.env`\n\n### Bot Master (existente)\n\nSe já tiver um bot master:\n1. Use o token existente\n2. Adicione como `HERMES_MASTER_BOT_TOKEN` no `.env`\n3. Adicione o username como `HERMES_MASTER_BOT_USERNAME`\n\n## Passo 3: Configurar Webhooks\n\n### Webhook para Bot Admin\n\n```bash\ncurl -X POST \"https://api.telegram.org/bot<TELEGRAM_ADMIN_TOKEN>/setWebhook\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"url\": \"https://seu-dominio.com/api/webhook/telegram-admin\",\n \"secret_token\": \"your_secret_token_here\"\n }'\n```\n\n### Webhook para Bot Master (se necessário)\n\n```bash\ncurl -X POST \"https://api.telegram.org/bot<HERMES_MASTER_BOT_TOKEN>/setWebhook\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"url\": \"https://seu-dominio.com/api/webhook/telegram-master\",\n \"secret_token\": \"your_secret_token_here\"\n }'\n```\n\n### Webhook para Bot Cliente (existente)\n\n```bash\ncurl -X POST \"https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"url\": \"https://seu-dominio.com/api/webhook/telegram\",\n \"secret_token\": \"your_secret_token_here\"\n }'\n```\n\n## Passo 4: Criar Super Admin\n\n### Via Painel Web\n\n1. Acesse `https://seu-dominio.com/login`\n2. Faça login com a primeira conta criada\n3. O primeiro usuário é automaticamente promovido a `is_super_admin=True`\n4. Acesse `/admin/hermes` para usar o Hermes Admin\n\n### Via Banco de Dados (opcional)\n\n```sql\nUPDATE users SET is_super_admin = TRUE WHERE email = 'seu_email@exemplo.com';\n```\n\n## Passo 5: Testar Integração\n\n### Testar via API\n\n```bash\n# Login para obter token\ncurl -X POST \"https://seu-dominio.com/api/auth/login\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"email\": \"seu_email@exemplo.com\",\n \"password\": \"sua_senha\"\n }'\n\n# Testar Hermes Admin\ncurl -X POST \"https://seu-dominio.com/api/admin/hermes/chat\" \\\n -H \"Authorization: Bearer SEU_TOKEN_JWT\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"message\": \"status do sistema\"}'\n```\n\n### Testar via Telegram\n\n1. Inicie uma conversa com o bot admin\n2. Envie: \"status do sistema\"\n3. Verifique se recebe resposta\n\n### Testar via Script\n\n```bash\npython test_hermes_integration.py\n```\n\n## Passo 6: Configurar Skills Administrativas\n\n### Criar Skill via Painel\n\n1. Acesse `/admin/hermes`\n2. Vá para \"Skills\"\n3. Clique em \"Nova Skill\"\n4. Preencha:\n - Nome: \"Dashboard Diário\"\n - Descrição: \"Gera resumo diário do sistema\"\n - Trigger Type: \"manual\"\n - Instruções: \"Gerar dashboard completo com todos os tenants e métricas\"\n5. Salve\n\n### Criar Skill via API\n\n```bash\ncurl -X POST \"https://seu-dominio.com/api/admin/hermes/skills\" \\\n -H \"Authorization: Bearer SEU_TOKEN_JWT\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"dashboard_diario\",\n \"description\": \"Gera resumo diário do sistema\",\n \"trigger_type\": \"manual\",\n \"instructions\": \"Gerar dashboard completo com todos os tenants e métricas\",\n \"active\": true\n }'\n```\n\n## Passo 7: Monitoramento\n\n### Ver Logs\n\n```bash\n# Ver logs do aplicativo\ntail -f logs/app.log\n\n# Filtrar por Hermes Admin\ngrep \"Hermes Admin\" logs/app.log\n\n# Filtrar por LLM Router\ngrep \"LLM Router\" logs/app.log\n```\n\n### Ver Dashboard\n\n1. Acesse `/admin/hermes/dashboard`\n2. Visualize métricas em tempo real\n3. Monitore:\n - Clientes ativos\n - Créditos usados\n - Tarefas abertas\n - Rotinas ativas\n\n## Troubleshooting\n\n### Problema: Hermes Admin não responde\n\n**Solução:**\n1. Verifique se `OPENROUTER_API_KEY` está configurada\n2. Verifique logs: `logs/app.log`\n3. Teste API key:\n ```bash\n curl -X POST \"https://openrouter.ai/api/v1/chat/completions\" \\\n -H \"Authorization: Bearer $OPENROUTER_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"model\": \"z-ai/glm-4.7\", \"messages\": [{\"role\": \"user\", \"content\": \"test\"}]}'\n ```\n\n### Problema: Telegram Admin não recebe mensagens\n\n**Solução:**\n1. Verifique se webhook está configurado:\n ```bash\n curl \"https://api.telegram.org/bot<TOKEN>/getWebhookInfo\"\n ```\n2. Verifique se URL está acessível\n3. Verifique logs do servidor\n\n### Problema: Erro de autenticação\n\n**Solução:**\n1. Verifique se usuário tem `is_super_admin=True`\n2. Verifique se token JWT é válido\n3. Faça login novamente para obter novo token\n\n### Problema: Banco de dados não conecta\n\n**Solução:**\n1. Verifique se PostgreSQL está rodando\n2. Verifique se `DATABASE_URL` está correta\n3. Verifique se usuário e senha estão corretos\n4. Teste conexão:\n ```bash\n psql $DATABASE_URL\n ```\n\n## Manutenção\n\n### Backup Diário\n\nAdicione ao crontab:\n\n```bash\n0 2 * * * /path/to/backup_script.sh\n```\n\n### Limpeza de Logs\n\nConfigurar rotação automática no `app/core/logging.py`\n\n### Atualizações\n\n1. Pull do repositório\n2. Rodar migrações\n3. Reiniciar serviço\n4. Testar integração\n\n## Suporte\n\nEm caso de problemas:\n\n1. Verificar logs: `logs/app.log`\n2. Rodar testes: `python test_hermes_integration.py`\n3. Consultar documentação: `HERMES_ADMIN_INTEGRATION.md`\n4. Abrir issue no GitHub\n\n## Segurança\n\n### Boas Práticas\n\n1. Nunca comitar `.env` no git\n2. Usar valores fortes para secrets\n3. Rotacionar chaves periodicamente\n4. Monitorar logs de acesso\n5. Usar HTTPS em produção\n\n### Permissões\n\n- Super Admin: Acesso total\n- Usuário Comum: Acesso apenas ao tenant\n- NUNCA misturar dados entre tenants\n\n## Performance\n\n### Otimizações\n\n1. Usar cache para queries frequentes\n2. Limitar tamanho de contexto\n3. Usar índices no banco\n4. Monitorar tempo de resposta\n\n### Monitoramento\n\n1. Logs de uso de LLM\n2. Métricas de performance\n3. Alertas de erro\n4. Análise de custos\n\n## Próximos Passos\n\n1. Configurar notificações push\n2. Implementar dashboard em tempo real\n3. Adicionar mais skills administrativas\n4. Integrar com Coolify para deploy\n5. Criar app mobile para admin"}}, "docker-compose.yml": {"359650990ed182a6ad82ab4680d204432a78c269": {"t": 1786068609.6965802, "n": 3613, "h": "9354c3179cc719ef", "c": "services:\n db:\n image: 'postgres:16-alpine'\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-hermes}\n POSTGRES_USER: ${POSTGRES_USER:-postgres}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}\n volumes:\n - 'postgres_data:/var/lib/postgresql/data'\n networks:\n - coolify\n\n redis:\n image: 'redis:7-alpine'\n networks:\n - coolify\n\n backend:\n build:\n context: ./backend\n environment:\n DATABASE_URL: ${DATABASE_URL}\n JWT_SECRET: ${JWT_SECRET}\n SECRET_KEY: ${SECRET_KEY:-}\n ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-1440}\n JWT_EXPIRE_MINUTES: ${JWT_EXPIRE_MINUTES:-1440}\n BOOTSTRAP_TOKEN: ${BOOTSTRAP_TOKEN:-hermes-bootstrap}\n ADMIN_EMAIL: ${ADMIN_EMAIL:-}\n ADMIN_PASSWORD: ${ADMIN_PASSWORD:-}\n AI_PROVIDER: ${AI_PROVIDER:-deepseek}\n DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY:-}\n DEEPSEEK_BASE_URL: ${DEEPSEEK_BASE_URL:-https://openrouter.ai/api/v1}\n DEEPSEEK_MODEL: ${DEEPSEEK_MODEL:-deepseek/deepseek-chat}\n EVOLUTION_API_BASE_URL: ${EVOLUTION_API_BASE_URL:-}\n EVOLUTION_API_KEY: ${EVOLUTION_API_KEY:-}\n EVOLUTION_API_KEY_HEADER: ${EVOLUTION_API_KEY_HEADER:-apikey}\n HERMES_AGENT_URL: ${HERMES_AGENT_URL:-https://apihermes.fbautomacao.space}\n HERMES_AGENT_PATH: ${HERMES_AGENT_PATH:-/chat}\n HERMES_AGENT_API_KEY: ${HERMES_AGENT_API_KEY:-}\n TELEGRAM_CLIENT_TOKEN: ${TELEGRAM_CLIENT_TOKEN:-}\n TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN:-}\n TELEGRAM_ADMIN_TOKEN: ${TELEGRAM_ADMIN_TOKEN:-}\n HERMES_MASTER_BOT_TOKEN: ${HERMES_MASTER_BOT_TOKEN:-}\n HERMES_MASTER_BOT_USERNAME: ${HERMES_MASTER_BOT_USERNAME:-}\n PUBLIC_PANEL_URL: ${PUBLIC_PANEL_URL:-https://meuchat.fbautomacao.space}\n # Limites anti-prejuízo\n MAX_INPUT_CHARS: ${MAX_INPUT_CHARS:-800}\n MAX_OUTPUT_TOKENS: ${MAX_OUTPUT_TOKENS:-500}\n MAX_CONTEXT_MESSAGES: ${MAX_CONTEXT_MESSAGES:-12}\n MAX_CONTEXT_CHARS_PER_MESSAGE: ${MAX_CONTEXT_CHARS_PER_MESSAGE:-600}\n # Asaas (cole sua API key no Coolify)\n ASAAS_API_KEY: ${ASAAS_API_KEY:-}\n ASAAS_API_URL: ${ASAAS_API_URL:-https://sandbox.asaas.com/api/v3}\n ASAAS_WEBHOOK_TOKEN: ${ASAAS_WEBHOOK_TOKEN:-}\n ASAAS_OVERDUE_GRACE_DAYS: ${ASAAS_OVERDUE_GRACE_DAYS:-7}\n REDIS_URL: ${REDIS_URL:-redis://redis:6379/0}\n CORS_ORIGINS: '[\"https://meuchat.fbautomacao.space\",\"https://api.meuchat.fbautomacao.space\"]'\n depends_on:\n - db\n - redis\n expose:\n - '8000'\n networks:\n - coolify\n labels:\n - \"traefik.enable=true\"\n - \"traefik.http.routers.hermes-backend.rule=Host(`api.meuchat.fbautomacao.space`)\"\n - \"traefik.http.routers.hermes-backend.entrypoints=https\"\n - \"traefik.http.routers.hermes-backend.tls=true\"\n - \"traefik.http.routers.hermes-backend.tls.certresolver=letsencrypt\"\n - \"traefik.http.services.hermes-backend.loadbalancer.server.port=8000\"\n\n frontend:\n build:\n context: ./frontend\n args:\n VITE_API_BASE_URL: ${VITE_API_BASE_URL:-/api}\n depends_on:\n - backend\n expose:\n - '80'\n networks:\n - coolify\n labels:\n - \"traefik.enable=true\"\n - \"traefik.http.routers.hermes-frontend.rule=Host(`meuchat.fbautomacao.space`)\"\n - \"traefik.http.routers.hermes-frontend.entrypoints=https\"\n - \"traefik.http.routers.hermes-frontend.tls=true\"\n - \"traefik.http.routers.hermes-frontend.tls.certresolver=letsencrypt\"\n - \"traefik.http.services.hermes-frontend.loadbalancer.server.port=80\"\n\nvolumes:\n postgres_data:\n\nnetworks:\n coolify:\n external: true\n"}}}} |