多渠道医疗聊天机器人系统

一个基于FastAPI、PostgreSQL、Redis和OpenAI的多渠道医疗聊天机器人系统,支持与Meta(WhatsApp/Instagram)和Google Calendar的集成,用于医疗诊所的预约管理和患者服务。

  • by pulseadm
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 pulseadm/mcp-pulse

使用说明

'''# Pulsesys MCP & Orchestrator

Sistema de Chatbot Multicanal para Clínicas Médicas, utilizando FastAPI, PostgreSQL, Redis, OpenAI e integrações com Meta (WhatsApp/Instagram) e Google Calendar.

Este projeto foi desenvolvido pelo agente de IA Manus, seguindo as especificações técnicas fornecidas.


🚀 Setup do Projeto (Docker)

  1. Pré-requisitos:

    • Docker e Docker Compose instalados.
  2. Configuração do Ambiente: Crie um arquivo .env na raiz do projeto (pulsesys-mcp/) e preencha as variáveis com base no .env.example.

    cp .env.example .env
    # Edite o arquivo .env com suas chaves e tokens reais
    
  3. Build e Execução: Suba os containers da aplicação, banco de dados e Redis em modo detached.

    docker-compose up --build -d
    
  4. Acesso:

    • A API estará disponível em http://localhost:8000.
    • A documentação interativa (Swagger UI) estará em http://localhost:8000/docs.
  5. Verificar Logs: Para acompanhar os logs da aplicação em tempo real:

    docker-compose logs -f app
    

⚙️ Arquitetura e Endpoints

A aplicação está estruturada de forma modular para facilitar a manutenção e escalabilidade.

Endpoints Principais

Método Rota Descrição
GET /api/v1/health Verificação de status da aplicação.
GET /api/v1/webhook/whatsapp Verificação do Webhook do WhatsApp (para setup na Meta).
POST /api/v1/webhook/whatsapp Recepção de mensagens do WhatsApp.
GET /api/v1/webhook/instagram Verificação do Webhook do Instagram (para setup na Meta).
POST /api/v1/webhook/instagram Recepção de mensagens do Instagram (atualmente um mock).
POST /api/v1/event/confirmar_agendamento Endpoint interno para a secretária confirmar/recusar agendamentos.
POST /api/v1/token Gera um token JWT para autenticação em endpoints protegidos (mock).

💡 Fluxo de Teste

Para testar o fluxo completo de conversação e agendamento, siga os passos abaixo:

  1. Configurar o Webhook da Meta:

    • No painel de desenvolvedores da Meta, configure o webhook para apontar para SEU_DOMINIO_PUBLICO/api/v1/webhook/whatsapp.
    • Use o META_VERIFY_TOKEN que você configurou no seu arquivo .env.
  2. Simular uma Mensagem de Paciente:

    • Envie uma mensagem de uma conta de WhatsApp para o número configurado na sua aplicação da Meta.
    • Exemplos de interação:
      • "Quais serviços vocês oferecem?" (deve acionar listar_servicos)
      • "Gostaria de agendar uma Consulta Geral" (deve acionar listar_horarios)
      • "Pode ser para o dia 25/11/2025 às 10:00?" (deve acionar solicitar_agendamento)
  3. Simular a Aprovação da Secretária:

    • Após a solicitar_agendamento, um registro pendente é criado no banco de dados. O ID do agendamento é logado no console.

    • Primeiro, obtenha um token de autenticação:

      curl -X POST "http://localhost:8000/api/v1/token" -H "Content-Length: 0"
      
    • Use o token obtido para chamar o endpoint de confirmação, substituindo SEU_JWT_TOKEN e o appointment_id:

      curl -X POST "http://localhost:8000/api/v1/event/confirmar_agendamento" \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer SEU_JWT_TOKEN" \
        -d '{"appointment_id": 1, "status": "confirmado"}'
      
    • O sistema deve então enviar a mensagem de confirmação final para o número do paciente.


🧠 Observações Importantes

  • Mocks: Várias partes do sistema são mocks para fins de demonstração (ex: calendar_client, instagram_client, faq). A lógica de autenticação com o Google e a complexidade total da API do Instagram precisam ser implementadas.
  • Segurança: As chaves e tokens devem ser gerenciados de forma segura em um ambiente de produção (ex: usando um serviço de secrets management).
  • Banco de Dados: O sistema cria as tabelas automaticamente no startup e insere dados de teste (mock_data.py). Em produção, as migrações de banco de dados devem ser gerenciadas com ferramentas como Alembic. '''