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ço | Responsabilidade |
|---|---|
api | REST/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. |
notifier | Server 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ço | Responsabilidade |
|---|---|
connector-neo4j | Concentra mutações e graph traverses no grafo Neo4j. Recebe operações idempotentes via FastStream RPC. |
connector-mongodb | Permite 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ço | Responsabilidade |
|---|---|
processor-entity-linker | Normalização das competências extraídas via técnicas de entity linking. |
processor-skill-extractor | Extração de competências usando SLM para detectar em texto livre instâncias de hard, soft skills e áreas de conhecimento candidatas. |
processor-prompt-generator | Recebe um currículo ou descrição de oportunidade e formata em modelo de prompt. |
recommender-cypher | Geração de recomendações usando o Índice de Jaccard. |
Loaders
Coletam dados de fontes externas para o sistema.
| Serviço | Responsabilidade |
|---|---|
loader-kaggle | Leitura dos datasets de currículos e oportunidades obtidos no Kaggle para serem processados pela pipeline |
loader-esco | Ingestã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, MonadResult), infraestrutura global de log via Loguru, e configurações topológicas do RabbbitMQ (exchanges, keys).