# julianomachados/t1_projac architecture

> Architecture diagram of the GitHub repository julianomachados/t1_projac, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/julianomachados/t1_projac
- Repository: https://github.com/julianomachados/t1_projac

## Overview

Este repositório reúne i-Educar, Moodle e um serviço que sincroniza turmas ativas do ano atual do i-Educar como cursos do Moodle. O fluxo principal pode ser iniciado pelo endpoint de sincronização ou automaticamente a cada minuto; o serviço cria cursos e registra vínculos e execuções em seu banco próprio. O README também documenta a consulta desses registros. A integração é o foco deste mapa; os detalhes internos do agendador e do banco não foram amostrados, então esses vínculos se apoiam na documentação.

Main entry points: [`integration/src/sincronizacao`](https://github.com/julianomachados/t1_projac/tree/main/integration/src/sincronizacao) (Sincronização de turmas), [`integration/src/sincronizacao/http/sincronizacao.controller.ts`](https://github.com/julianomachados/t1_projac/blob/main/integration/src/sincronizacao/http/sincronizacao.controller.ts) (API de sincronização), [`integration/src/app.module.ts`](https://github.com/julianomachados/t1_projac/blob/main/integration/src/app.module.ts) (Módulos da aplicação)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_integration["Serviço de integração"]
  node_app["Módulos da aplicação<br/>[app.module.ts]"]
  node_trigger["Disparo periódico"]
  node_endpoint["API de sincronização"]
  node_sync["Sincronização de turmas"]
  node_history["Consulta de vínculos e histórico"]
end

subgraph group_systems["Sistemas escolares"]
  node_ieducar["i-Educar"]
  node_moodle["Moodle"]
end

subgraph group_state["Estado da sincronização"]
  node_db[("Banco da integração")]
end

node_operator(("Operador"))

node_operator -->|"solicita sincronização"| node_endpoint
node_app -->|"registra módulo"| node_endpoint
node_endpoint -->|"dispara sincronização"| node_sync
node_trigger -.->|"dispara periodicamente"| node_sync
node_sync -.->|"consulta turmas"| node_ieducar
node_sync -.->|"cria cursos"| node_moodle
node_sync -.->|"grava vínculos e execuções"| node_db
node_operator -.->|"consulta registros"| node_history
node_history -.->|"lê vínculos e histórico"| node_db

click node_app "https://github.com/julianomachados/t1_projac/blob/main/integration/src/app.module.ts"
click node_trigger "https://github.com/julianomachados/t1_projac/tree/main/integration/src/sincronizacao"
click node_endpoint "https://github.com/julianomachados/t1_projac/blob/main/integration/src/sincronizacao/http/sincronizacao.controller.ts"
click node_sync "https://github.com/julianomachados/t1_projac/tree/main/integration/src/sincronizacao"
click node_history "https://github.com/julianomachados/t1_projac/tree/main/integration/src/sincronizacao"

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_app,node_trigger,node_endpoint,node_sync,node_history toneBlue
class node_ieducar,node_moodle toneAmber
class node_db toneMint
class node_operator toneIndigo
```

## Components

### Serviço de integração

- [Módulos da aplicação](https://github.com/julianomachados/t1_projac/blob/main/integration/src/app.module.ts): `integration/src/app.module.ts`
- [Disparo periódico](https://github.com/julianomachados/t1_projac/tree/main/integration/src/sincronizacao): `integration/src/sincronizacao`
- [API de sincronização](https://github.com/julianomachados/t1_projac/blob/main/integration/src/sincronizacao/http/sincronizacao.controller.ts): `integration/src/sincronizacao/http/sincronizacao.controller.ts`
- [Sincronização de turmas](https://github.com/julianomachados/t1_projac/tree/main/integration/src/sincronizacao): `integration/src/sincronizacao`
- [Consulta de vínculos e histórico](https://github.com/julianomachados/t1_projac/tree/main/integration/src/sincronizacao): `integration/src/sincronizacao`

### Sistemas escolares

- **i-Educar**
- **Moodle**

### Estado da sincronização

- **Banco da integração**

### Other components

- **Operador**

## Connections

- Operador → API de sincronização: solicita sincronização
- Módulos da aplicação → API de sincronização: registra módulo (evidence: `integration/src/app.module.ts`)
- API de sincronização → Sincronização de turmas: dispara sincronização (evidence: `integration/src/sincronizacao/http/sincronizacao.controller.ts`)
- Disparo periódico → Sincronização de turmas: dispara periodicamente
- Sincronização de turmas → i-Educar: consulta turmas
- Sincronização de turmas → Moodle: cria cursos
- Sincronização de turmas → Banco da integração: grava vínculos e execuções
- Operador → Consulta de vínculos e histórico: consulta registros
- Consulta de vínculos e histórico → Banco da integração: lê vínculos e histórico
