C2: Containers

A arquitetura do backend do TCC é altamente distribuída, rodando um conjunto de microserviços orientados a evento através de RabbitMQ e programados de forma assíncrona usando FastStream + FastAPI (asyncio).

Component Diagram

Renderizando diagrama...

APIs

ServiçoResponsabilidade
apiREST/HTTP Gateway. Única porta de entrada síncrona do usuário, recebe uploads e requisições, delega o trabalho pesado gerando eventos lógicos pro barramento.
notifierServer Sent Events (SSE) Engine. Mantém conexões simultâneas via sse_manager e escuta o avanço de eventos no RabbitMQ para disparar notificações em tempo real pro TCC Web, enriquecendo o loading screen.

Data Connectors (RPC Interfaces)

Serviços exclusivos para encapsular o acesso a bancos de dados, evitando acesso global. Toda a comunicação com eles é via RPC over Message Queue.

ServiçoResponsabilidade
connector-neo4jConcentra mutações e graph traverses no grafo Neo4j. Recebe operações idempotentes via FastStream RPC.
connector-mongodbPermite leitura e escrita de documentos brutos, perfis de usuários, logs temporários e catálogos no MongoDB.

Processors

Serviços que compoem cada etapa da pipeline de extração e normalização de competências.

ServiçoResponsabilidade
processor-entity-linkerNormalização das competências extraídas via técnicas de entity linking.
processor-skill-extractorExtração de competências usando SLM para detectar em texto livre instâncias de hard, soft skills e áreas de conhecimento candidatas.
processor-prompt-generatorRecebe um currículo ou descrição de oportunidade e formata em modelo de prompt.
recommender-cypherGeração de recomendações usando o Índice de Jaccard.

Loaders

Coletam dados de fontes externas para o sistema.

ServiçoResponsabilidade
loader-kaggleLeitura dos datasets de currículos e oportunidades obtidos no Kaggle para serem processados pela pipeline
loader-escoIngestão one-shot da ontologia ESCO. Lê os datasets, gera embeddings via Ollama e popula o Neo4j via RPC (connector-neo4j).

Shared Library

  • ors-shared: Biblioteca central instalada em todos os serviços citados acima. Compartilha modelos Pydantic (Eventos, Mensagens RPC, Monad Result), infraestrutura global de log via Loguru, e configurações topológicas do RabbbitMQ (exchanges, keys).