Topologia
Módulos Core

-
Manager (Backend): API HTTP transacional que permite criar e manipular os Chatbots, suas configurações, disparar publicações e todas as demais operações que o usuário da plataforma precisa. Escrita em Kotlin com Spring Boot e arquitetura Cebola. Se apoia num banco Postgres 12. Depende do Integrador onde de fatos são executados jobs assíncronos para criar/publicar/desativar chatbots.
-
Interface Única: Aplicação web escrita em Typescript + Angular que consome a API de backend do Manager que gerencia os chatbos e a plataforma em si. É a interface principal para os administradores e desenvolvedores que irão criar e manter os chatbots.
-
Integrador: API HTTP onde são disparados os jobs da plataforma tais como configurar elastic, provisionar recursos e configurar estaleiro para um chatbot; criar/remover publicações no estaleiro para os bots; coletar informações de bilhetagem dos bots periodicamente; monitorar disponibilidade dos bots periodicamente, dentre outros. Escrito em Kotlin com Spring Boot e Spring Batch.
-
Infra: Pipeline do Gitlab-CI para execução de automações que precisam de um runner para executar Shell Script e comandos do Console do Estaleiro e outros utilitários de integração contínua. Utiliza uma definição Terraform para criar o módulo de um chatbot.
-
Stack: Microserviço de um chatbot em particular, uma API HTTP stateless que recebe as perguntas e dá respostas, integrando-se com o IBM Watson Assistant por exemplo. Escrito em Kotlin com Quarkus e compilado nativo com GraalVM. Depende do Manager (Backend) onde busca as configurações correntes do bot durante o boot.
-
Gateway: Serviço web HTTP por onde todas as chamadas aos chatbots são interceptadas para que seja recuperado/atualizado o contexto de conversação no Redis e registrado no Elastic todo o log das conversas. Aqui também ocorre o Rate Limit das conversas para evitar ataques. Escrito em Kotlin com Quarkus e compilado nativo com GraalVM.
IA Generativa
-
Kestra: Plataforma de orquestração de workflows que permite criar pipelines de processamento de dados. Possui conjunto de fluxos que processam publicações realizadas no Manager, criando embeddings com a API RAG e armazeando no Elastic Search para serem consumidos pelos módulo Inferecer. Depende de plugins customizados desenvolvidos em java.
-
Inferencer: Microserviço que consome as requisições de chatbots (Stack) que possuem IA Generativa, processando as perguntas com técnicas de RAG, através da API RAG, recuperando os documentos relevantes do Elastic Search e gerando respostas com a LLMs. Utiliza Kotlin com Quarkus e compilado nativo com GraalVM.
Canais

-
UI Web: Aplicação web escrita em Typescript + Angular representando a janela responsiva de um Chatbot, consumindo a API HTTP do chatbot (via gateway).
-
Trigger: Acionador que fica flutuando no site dos clientes e pode ser clicado apra abrir a janela do chat, escrito em Javascript puro. Fica dentro do UI Web pois é empacotado junto.
-
UI Flutter: uma componente de janela de chat escrito em Flutter para ser utilizada em aplicações Mobile.
-
Integração Canais: Aplicação que promove a integração com canais Whatsapp, Twitter e Facebook Messenger, consumindo filas do Kafka onde webhooks postam mensagens recebidas nessas plataformas, conversando com os chatbots passando pelo Gateway e acionando as APIs dessas plataformas de mensagem para enviar a resposta de volta aos usuários. Escrito em Kotlin com Quarkus e compilado nativo com GraalVM.
-
Facebook Webhook Server: serviço HTTP que atua como webhook-server para recepção de eventos com as mensagens enviadas pelos usuários no Facebook Messenger que são então enfileiradas no Kafka. Escrito em Kotlin com Quarkus e compilado nativo com GraalVM.
-
Twitter Webhook Server: serviço HTTP que atua como webhook-server para recepção de eventos com as mensagens diretas enviadas pelos usuários no Twitter que são então enfileiradas no Kafka. Escrito em Kotlin com Quarkus e compilado nativo com GraalVM.
Aplicações de apoio
-
Migrations: Projeto do Flyway Migrations onde está versionado todo histórico de SQL para criação do banco transcional usado pelo Manager. Sempre que houver uma mudança no modelo de dados, é preciso criar um novo SQL aqui para ser aplicado nos ambientes. Executado com Gradle.
-
Publicador Backend / Publicador Frontend: aplicação web para gerar e publicar uma Release. Aciona o Git para passar tags nos projetos e acionar o Estaleiro para promover as builds de uma determinada Release para um determinado ambiente. Escrito em Kotlin com Spring Boot e Typescript + Angular.
Sites
-
Root: Site raiz da plataforma onde existe a landing page, links para os aplicativos, documentação, etc. além de hospedar alguns conteúdos estáticos.
-
Docs: Documentação da plataforma Serprobots.
-
Guias: Guias com boas práticas, tutoriais e roteiros sobre o assunto Chatbots em geral, independente da plataforma.
-
Dev: este site que você está lendo.