# no-country-simulation/g10-brasil-equipo-25-novamente architecture

> Architecture diagram of the GitHub repository no-country-simulation/g10-brasil-equipo-25-novamente, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/no-country-simulation/g10-brasil-equipo-25-novamente
- Repository: https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente

## Overview

NovaMente transforma documentos técnicos em materiais educacionais personalizados: a interface coleta fonte e parâmetros, a API cria um job assíncrono, e o worker coordena processamento RAG, geração e avaliação antes de persistir e expor o pacote. A interface também acompanha jobs, consulta histórico e oferece renderização e exportação. A arquitetura dos principais passos do backend é sustentada pelos trechos e pelo índice; algumas ligações da interface e capacidades documentadas sem código amostrado ficam sem evidência direta.

Main entry points: [`frontend/src/services/api/httpApiClient.ts`](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/services/api/httpApiClient.ts) (Cliente HTTP), [`backend/app/main.py`](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/main.py) (Aplicação FastAPI), [`backend/app/api/v1/routers/adaptacoes.py`](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/adaptacoes.py) (Rotas de adaptação), [`backend/app/rag/servico.py`](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/servico.py) (Serviço RAG)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Experiência educacional"]
  node_ingestion["Formulário de ingestão<br/>[IngestionForm.tsx]"]
  node_formfields["Fonte e parâmetros"]
  node_adaptform["Envio de adaptação"]
  node_api_client["Cliente HTTP<br/>[httpApiClient.ts]"]
  node_jobview["Progresso do job<br/>[JobProgress.tsx]"]
  node_resultview["Visualização de conteúdo<br/>[ResultadoView.tsx]"]
  node_contentrender["Renderizadores pedagógicos"]
  node_history["Histórico<br/>[HistoricoView.tsx]"]
  node_export["Exportação<br/>[useExport.ts]"]
end

subgraph group_api["API e jobs"]
  node_api_entry["Aplicação FastAPI<br/>[main.py]"]
  node_adapt_router["Rotas de adaptação<br/>[adaptacoes.py]"]
  node_job_router["Rotas de jobs<br/>[jobs.py]"]
  node_health_router["Health check<br/>[health.py]"]
  node_oci_router["Status OCI<br/>[oci.py]"]
  node_worker["Worker assíncrono<br/>[job_worker.py]"]
end

subgraph group_processing["Geração e RAG"]
  node_pipeline["Pipeline de conteúdo<br/>[pipeline.py]"]
  node_extract["Extração documental<br/>[extracao.py]"]
  node_rag_service["Serviço RAG<br/>[servico.py]"]
  node_chunking["Segmentação<br/>[chunking.py]"]
  node_embeddings["Embeddings Gemini<br/>[embeddings.py]"]
end

subgraph group_persistence["Persistência e nuvem"]
  node_vector_store[("Índice vetorial<br/>[armazenamento.py]")]
  node_repository[("Repositório de jobs e pacotes<br/>[repositorio.py]")]
  node_oci_service["OCI Object Storage<br/>[oci.py]"]
end

node_learner(("Autor de conteúdo"))
node_oci_cloud[("OCI Object Storage")]
node_gemini["Google Gemini"]

node_learner -->|"fornece documento"| node_ingestion
node_ingestion -->|"apresenta campos"| node_formfields
node_ingestion -->|"delegates envio"| node_adaptform
node_adaptform -.->|"submete adaptação"| node_api_client
node_api_client -.->|"faz requisições"| node_api_entry
node_api_entry -->|"registra rotas"| node_adapt_router
node_api_entry -->|"registra rotas"| node_job_router
node_api_entry -->|"registra rotas"| node_health_router
node_api_entry -->|"registra rotas"| node_oci_router
node_adapt_router -->|"extrai arquivo"| node_extract
node_adapt_router -->|"cria job"| node_worker
node_adapt_router -->|"consulta pacotes"| node_repository
node_job_router -->|"controla job"| node_worker
node_job_router -->|"consulta job"| node_repository
node_health_router -->|"consulta status"| node_oci_service
node_oci_router -->|"consulta status"| node_oci_service
node_worker -->|"executa pipeline"| node_pipeline
node_worker -->|"salva job e pacote"| node_repository
node_pipeline -->|"indexa e recupera"| node_rag_service
node_pipeline -->|"envia pacote"| node_oci_service
node_rag_service -->|"segmenta texto"| node_chunking
node_rag_service -->|"vetoriza texto"| node_embeddings
node_rag_service -->|"indexa e busca"| node_vector_store
node_embeddings -->|"gera vetores"| node_gemini
node_oci_service -->|"grava e consulta"| node_oci_cloud
node_api_client -.->|"fornece estado"| node_jobview
node_api_client -.->|"fornece pacote"| node_resultview
node_resultview -.->|"renderiza conteúdo"| node_contentrender
node_api_client -.->|"consulta adaptações"| node_history
node_api_client -.->|"baixa arquivo"| node_export
node_api_client -.->|"consulta saúde"| node_health_router
node_api_client -.->|"consulta OCI"| node_oci_router

click node_ingestion "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/forms/IngestionForm.tsx"
click node_formfields "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/tree/main/frontend/src/components/forms/campos"
click node_adaptform "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/features/adaptations/useAdaptationForm.ts"
click node_api_client "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/services/api/httpApiClient.ts"
click node_jobview "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/views/JobProgress.tsx"
click node_resultview "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/views/ResultadoView.tsx"
click node_contentrender "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/views/ContentRenderer.tsx"
click node_history "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/views/HistoricoView.tsx"
click node_export "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/features/adaptations/useExport.ts"
click node_api_entry "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/main.py"
click node_adapt_router "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/adaptacoes.py"
click node_job_router "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/jobs.py"
click node_health_router "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/health.py"
click node_oci_router "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/oci.py"
click node_worker "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/workers/job_worker.py"
click node_pipeline "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/services/pipeline.py"
click node_extract "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/services/extracao.py"
click node_rag_service "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/servico.py"
click node_chunking "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/chunking.py"
click node_embeddings "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/embeddings.py"
click node_vector_store "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/armazenamento.py"
click node_repository "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/services/repositorio.py"
click node_oci_service "https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/services/oci.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ingestion,node_formfields,node_adaptform,node_api_client,node_jobview,node_resultview,node_contentrender,node_history,node_export toneBlue
class node_api_entry,node_adapt_router,node_job_router,node_health_router,node_oci_router,node_worker,node_oci_cloud toneAmber
class node_pipeline,node_extract,node_rag_service,node_chunking,node_embeddings toneMint
class node_vector_store,node_repository,node_oci_service toneRose
class node_learner,node_gemini toneIndigo
```

## Components

### Experiência educacional

- [Formulário de ingestão](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/forms/IngestionForm.tsx): `frontend/src/components/forms/IngestionForm.tsx`
- [Fonte e parâmetros](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/tree/main/frontend/src/components/forms/campos): `frontend/src/components/forms/campos`
- [Envio de adaptação](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/features/adaptations/useAdaptationForm.ts): `frontend/src/features/adaptations/useAdaptationForm.ts`
- [Cliente HTTP](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/services/api/httpApiClient.ts): `frontend/src/services/api/httpApiClient.ts`
- [Progresso do job](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/views/JobProgress.tsx): `frontend/src/components/views/JobProgress.tsx`
- [Visualização de conteúdo](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/views/ResultadoView.tsx): `frontend/src/components/views/ResultadoView.tsx`
- [Renderizadores pedagógicos](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/views/ContentRenderer.tsx): `frontend/src/components/views/ContentRenderer.tsx`
- [Histórico](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/components/views/HistoricoView.tsx): `frontend/src/components/views/HistoricoView.tsx`
- [Exportação](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/frontend/src/features/adaptations/useExport.ts): `frontend/src/features/adaptations/useExport.ts`

### API e jobs

- [Aplicação FastAPI](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/main.py): `backend/app/main.py`
- [Rotas de adaptação](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/adaptacoes.py): `backend/app/api/v1/routers/adaptacoes.py`
- [Rotas de jobs](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/jobs.py): `backend/app/api/v1/routers/jobs.py`
- [Health check](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/health.py): `backend/app/api/v1/routers/health.py`
- [Status OCI](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/api/v1/routers/oci.py): `backend/app/api/v1/routers/oci.py`
- [Worker assíncrono](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/workers/job_worker.py): `backend/app/workers/job_worker.py`

### Geração e RAG

- [Pipeline de conteúdo](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/services/pipeline.py): `backend/app/services/pipeline.py`
- [Extração documental](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/services/extracao.py): `backend/app/services/extracao.py`
- [Serviço RAG](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/servico.py): `backend/app/rag/servico.py`
- [Segmentação](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/chunking.py): `backend/app/rag/chunking.py`
- [Embeddings Gemini](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/embeddings.py): `backend/app/rag/embeddings.py`

### Persistência e nuvem

- [Índice vetorial](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/rag/armazenamento.py): `backend/app/rag/armazenamento.py`
- [Repositório de jobs e pacotes](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/services/repositorio.py): `backend/app/services/repositorio.py`
- [OCI Object Storage](https://github.com/no-country-simulation/g10-brasil-equipo-25-novamente/blob/main/backend/app/services/oci.py): `backend/app/services/oci.py`

### Other components

- **Autor de conteúdo**
- **OCI Object Storage**
- **Google Gemini**

## Connections

- Autor de conteúdo → Formulário de ingestão: fornece documento (evidence: `frontend/src/components/forms/IngestionForm.tsx`)
- Formulário de ingestão → Fonte e parâmetros: apresenta campos (evidence: `frontend/src/components/forms/IngestionForm.tsx`)
- Formulário de ingestão → Envio de adaptação: delegates envio (evidence: `frontend/src/components/forms/IngestionForm.tsx`)
- Envio de adaptação → Cliente HTTP: submete adaptação
- Cliente HTTP → Aplicação FastAPI: faz requisições
- Aplicação FastAPI → Rotas de adaptação: registra rotas (evidence: `backend/app/main.py`)
- Aplicação FastAPI → Rotas de jobs: registra rotas (evidence: `backend/app/main.py`)
- Aplicação FastAPI → Health check: registra rotas (evidence: `backend/app/main.py`)
- Aplicação FastAPI → Status OCI: registra rotas (evidence: `backend/app/main.py`)
- Rotas de adaptação → Extração documental: extrai arquivo (evidence: `backend/app/api/v1/routers/adaptacoes.py`)
- Rotas de adaptação → Worker assíncrono: cria job (evidence: `backend/app/api/v1/routers/adaptacoes.py`)
- Rotas de adaptação → Repositório de jobs e pacotes: consulta pacotes (evidence: `backend/app/api/v1/routers/adaptacoes.py`)
- Rotas de jobs → Worker assíncrono: controla job (evidence: `backend/app/api/v1/routers/jobs.py`)
- Rotas de jobs → Repositório de jobs e pacotes: consulta job (evidence: `backend/app/api/v1/routers/jobs.py`)
- Health check → OCI Object Storage: consulta status (evidence: `backend/app/api/v1/routers/health.py`)
- Status OCI → OCI Object Storage: consulta status (evidence: `backend/app/api/v1/routers/oci.py`)
- Worker assíncrono → Pipeline de conteúdo: executa pipeline (evidence: `backend/app/workers/job_worker.py`)
- Worker assíncrono → Repositório de jobs e pacotes: salva job e pacote (evidence: `backend/app/workers/job_worker.py`)
- Pipeline de conteúdo → Serviço RAG: indexa e recupera (evidence: `backend/app/services/pipeline.py`)
- Pipeline de conteúdo → OCI Object Storage: envia pacote (evidence: `backend/app/services/pipeline.py`)
- Serviço RAG → Segmentação: segmenta texto (evidence: `backend/app/rag/servico.py`)
- Serviço RAG → Embeddings Gemini: vetoriza texto (evidence: `backend/app/rag/servico.py`)
- Serviço RAG → Índice vetorial: indexa e busca (evidence: `backend/app/rag/servico.py`)
- Embeddings Gemini → Google Gemini: gera vetores (evidence: `backend/app/rag/embeddings.py`)
- OCI Object Storage → OCI Object Storage: grava e consulta (evidence: `backend/app/services/oci.py`)
- Cliente HTTP → Progresso do job: fornece estado
- Cliente HTTP → Visualização de conteúdo: fornece pacote
- Visualização de conteúdo → Renderizadores pedagógicos: renderiza conteúdo
- Cliente HTTP → Histórico: consulta adaptações
- Cliente HTTP → Exportação: baixa arquivo
- Cliente HTTP → Health check: consulta saúde
- Cliente HTTP → Status OCI: consulta OCI
