# 🗺️ MAPA MENTAL DO PROJETO - SIGED Laravel Multi-tenant

```
SIGED LARAVEL MULTI-TENANT (v1.0)
│
├─── 📊 ESTRUTURA GERAL
│    ├─── Backend
│    │    ├─── Laravel 11
│    │    ├─── Eloquent ORM
│    │    └─── Stancl Tenancy
│    │
│    ├─── Frontend
│    │    ├─── Blade Templates
│    │    ├─── Bootstrap 5
│    │    └─── Alpine.js
│    │
│    └─── Database
│         ├─── MySQL/MariaDB
│         ├─── 20+ Tabelas
│         └─── Multi-tenant
│
├─── 🏗️ ARQUITETURA MULTI-TENANT
│    ├─── Banco Central (Landlord)
│    │    ├─── tenants
│    │    ├─── usuarios (admin)
│    │    ├─── roles
│    │    └─── permissions
│    │
│    └─── Bancos de Tenant
│         ├─── Tenant 1
│         │    ├─── alunos
│         │    ├─── turmas
│         │    ├─── notas
│         │    └─── ...
│         │
│         ├─── Tenant 2
│         │    └─── [Mesma estrutura]
│         │
│         └─── Tenant N
│              └─── [Mesma estrutura]
│
├─── 📁 ESTRUTURA DE DIRETÓRIOS
│    │
│    ├─── app/
│    │    ├─── Models/                (10 Models)
│    │    │    ├─── Aluno
│    │    │    ├─── Turma
│    │    │    ├─── Disciplina
│    │    │    ├─── Nota
│    │    │    ├─── Falta
│    │    │    ├─── OcorrenciaDisciplinar
│    │    │    ├─── ChamadaBiometrica
│    │    │    ├─── Usuario
│    │    │    ├─── Tenant
│    │    │    └─── AnoLetivo
│    │    │
│    │    ├─── Http/
│    │    │    ├─── Controllers/
│    │    │    │    ├─── Installer/
│    │    │    │    ├─── Admin/
│    │    │    │    ├─── Academic/
│    │    │    │    ├─── Discipline/
│    │    │    │    ├─── Attendance/
│    │    │    │    ├─── Portal/
│    │    │    │    ├─── Reports/
│    │    │    │    ├─── Integration/
│    │    │    │    ├─── Api/
│    │    │    │    └─── Auth/
│    │    │    │
│    │    │    ├─── Middleware/
│    │    │    ├─── Requests/
│    │    │    └─── Resources/
│    │    │
│    │    ├─── Services/
│    │    │    ├─── AlunoService
│    │    │    ├─── NotaService
│    │    │    ├─── DisciplinaryService
│    │    │    ├─── BiometricService
│    │    │    ├─── WhatsAppService
│    │    │    ├─── ReportService
│    │    │    ├─── TenantService
│    │    │    ├─── ExportService
│    │    │    └─── EmailService
│    │    │
│    │    ├─── Traits/
│    │    ├─── Helpers/
│    │    ├─── Events/
│    │    └─── Exceptions/
│    │
│    ├─── database/
│    │    ├─── migrations/
│    │    │    ├─── Academic Tables
│    │    │    ├─── Grades & Discipline
│    │    │    └─── Users & Permissions
│    │    │
│    │    ├─── seeders/
│    │    └─── factories/
│    │
│    ├─── resources/
│    │    └─── views/
│    │         ├─── installer/
│    │         ├─── layouts/
│    │         ├─── dashboard/
│    │         ├─── academic/
│    │         ├─── discipline/
│    │         ├─── portal/
│    │         ├─── reports/
│    │         ├─── auth/
│    │         └─── admin/
│    │
│    ├─── routes/
│    │    ├─── web.php
│    │    ├─── api.php
│    │    └─── installer.php
│    │
│    └─── config/
│         ├─── tenancy.php
│         ├─── app.php
│         ├─── database.php
│         └─── permission.php
│
├─── 📚 FUNCIONALIDADES
│    │
│    ├─── 🎓 GESTÃO ACADÊMICA
│    │    ├─── Alunos
│    │    │    ├─── CRUD
│    │    │    ├─── Importação (CSV)
│    │    │    ├─── Exportação (Excel/PDF)
│    │    │    ├─── Cálculo de média
│    │    │    └─── Cálculo de frequência
│    │    │
│    │    ├─── Turmas
│    │    │    ├─── CRUD
│    │    │    ├─── Ocupação
│    │    │    └─── Alocação de disciplinas
│    │    │
│    │    ├─── Disciplinas
│    │    │    ├─── CRUD
│    │    │    └─── Alocação de professores
│    │    │
│    │    └─── Anos Letivos
│    │         ├─── CRUD
│    │         └─── Ativação
│    │
│    ├─── 📊 AVALIAÇÃO
│    │    ├─── Notas
│    │    │    ├─── Lançamento individual
│    │    │    ├─── Lançamento em lote
│    │    │    ├─── Validação (0-10)
│    │    │    ├─── Cálculo de média
│    │    │    └─── Boletins
│    │    │
│    │    └─── Relatório de Desempenho
│    │         ├─── Por aluno
│    │         ├─── Por turma
│    │         └─── Por disciplina
│    │
│    ├─── 📋 FREQUÊNCIA
│    │    ├─── Chamada Biométrica
│    │    │    ├─── Registro de entrada
│    │    │    ├─── Registro de saída
│    │    │    ├─── Reconhecimento facial
│    │    │    └─── Cálculo de presença
│    │    │
│    │    ├─── Faltas
│    │    │    ├─── Registro manual
│    │    │    ├─── Justificativa
│    │    │    └─── Relatório
│    │    │
│    │    └─── Relatório de Frequência
│    │         ├─── Por aluno
│    │         ├─── Por turma
│    │         └─── Comparativo
│    │
│    ├─── 🚨 DISCIPLINA ESCOLAR
│    │    ├─── Ocorrências
│    │    │    ├─── Registro
│    │    │    ├─── Enquadramento
│    │    │    ├─── Agravantes/Atenuantes
│    │    │    └─── Histórico
│    │    │
│    │    ├─── Punições
│    │    │    ├─── Repreensão
│    │    │    ├─── Suspensão
│    │    │    └─── Expulsão
│    │    │
│    │    ├─── Assinatura Digital
│    │    │    └─── Termo de punição (PDF)
│    │    │
│    │    └─── Nota Disciplinar
│    │         └─── Cálculo automático
│    │
│    ├─── 📈 RELATÓRIOS
│    │    ├─── Acadêmicos
│    │    ├─── Disciplinares
│    │    ├─── De Frequência
│    │    └─── Exportação (PDF/Excel)
│    │
│    └─── 🔐 PORTAIS
│         ├─── Portal do Aluno
│         │    ├─── Notas
│         │    ├─── Faltas
│         │    ├─── Ocorrências
│         │    └─── Confirmação de honrarias
│         │
│         ├─── Portal do Responsável
│         │    ├─── Acompanhamento de alunos
│         │    ├─── Notas
│         │    ├─── Faltas
│         │    └─── Ocorrências
│         │
│         ├─── Portal do Professor
│         │    ├─── Turmas
│         │    ├─── Lançamento de notas
│         │    ├─── Registro de faltas
│         │    └─── Ocorrências
│         │
│         └─── Portal do Diretor
│              ├─── Dashboard
│              ├─── Relatórios
│              ├─── Gestão de usuários
│              └─── Configurações
│
├─── 🔒 SEGURANÇA
│    ├─── Autenticação
│    │    ├─── Email/Senha
│    │    ├─── Hash bcrypt
│    │    └─── Sanctum (API)
│    │
│    ├─── Autorização
│    │    ├─── Roles (Admin, Diretor, etc)
│    │    └─── Permissions (granulares)
│    │
│    ├─── Proteção
│    │    ├─── CSRF Protection
│    │    ├─── SQL Injection Prevention
│    │    ├─── XSS Protection
│    │    └─── Multi-tenant Isolamento
│    │
│    └─── Futura
│         ├─── Two-Factor Authentication
│         └─── Rate Limiting
│
├─── 🌐 INTEGRAÇÕES
│    ├─── ✅ Implementadas
│    │    └─── Multi-tenant (Stancl Tenancy)
│    │
│    ├─── ⏳ Em Desenvolvimento
│    │    ├─── WhatsApp (Evolution API)
│    │    ├─── Google Maps
│    │    ├─── Reconhecimento Facial
│    │    └─── IA (OpenAI)
│    │
│    └─── 🔌 Future APIs
│         ├─── SMS
│         ├─── Email (SMTP)
│         └─── Cloud Storage (S3)
│
├─── 🎯 INSTALADOR WEB
│    ├─── Passo 1: Verificação de Requisitos
│    ├─── Passo 2: Configuração de Banco de Dados
│    ├─── Passo 3: Configuração do Sistema
│    ├─── Passo 4: Configuração do Tenant
│    └─── Passo 5: Resumo e Confirmação
│
├─── 📖 DOCUMENTAÇÃO
│    ├─── INDEX.md                      (Central)
│    ├─── README.md                     (Este projeto)
│    ├─── GUIA_INSTALACAO.md            (Passo a passo)
│    ├─── GUIA_COMPLETO.md              (Técnico)
│    ├─── CONTROLLERS_A_IMPLEMENTAR.md  (Especificações)
│    ├─── SERVICES_DOCUMENTACAO.md      (Services)
│    ├─── RESUMO_DA_CONVERSAO.md        (Status)
│    └─── CHECKLIST.md                  (Verificação)
│
└─── ✅ STATUS
     ├─── FASE 1: ARQUITETURA ✅ 100%
     │    ├─── Models ✅
     │    ├─── Migrations ✅
     │    ├─── Config ✅
     │    └─── Documentação ✅
     │
     ├─── FASE 2: CONTROLLERS ⏳ 0%
     │    └─── 20+ Controllers para implementar
     │
     ├─── FASE 3: SERVICES ⏳ 0%
     │    └─── 9 Services para implementar
     │
     ├─── FASE 4: VIEWS ⏳ 0%
     │    └─── 30+ Views para criar
     │
     ├─── FASE 5: TESTES ⏳ 0%
     │    └─── Unit, Feature e Integration
     │
     └─── FASE 6: INTEGRAÇÕES ⏳ 0%
          └─── WhatsApp, Maps, IA, Facial
```

---

## 🔑 Legenda

| Símbolo | Significado |
|---------|------------|
| ✅ | Concluído |
| ⏳ | Em desenvolvimento |
| 🔌 | Funcionalidade |
| 📁 | Diretório |
| 📄 | Arquivo |

---

## 📊 Fluxo de Dados

```
┌─────────────────────────────────────────────┐
│     Navegador do Usuário                    │
│     (Blade Views + Alpine.js)               │
└──────────────┬──────────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────────┐
│     Controllers (HTTP)                      │
│     (20+ Controllers)                       │
└──────────────┬──────────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────────┐
│     Services (Lógica de Negócio)            │
│     (9 Services)                            │
└──────────────┬──────────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────────┐
│     Models Eloquent                         │
│     (10 Models)                             │
└──────────────┬──────────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────────┐
│     Database (MySQL/MariaDB)                │
│     (20+ Tabelas Multi-tenant)              │
└─────────────────────────────────────────────┘
```

---

## 🔄 Ciclo de Vida de uma Requisição

```
1. Usuário faz requisição
   ↓
2. Laravel routing (routes/web.php)
   ↓
3. Middleware (auth, tenant, permission)
   ↓
4. Controller processa
   ↓
5. Service executa lógica
   ↓
6. Model executa query
   ↓
7. Database retorna dados
   ↓
8. Service processa resultado
   ↓
9. Controller formata resposta
   ↓
10. View renderiza (Blade)
    ↓
11. Response vai para navegador
    ↓
12. JavaScript (Alpine.js) processa interações
```

---

## 🎓 Estrutura de Aprendizado Recomendada

```
Iniciante
└─ README.md
   └─ INDEX.md
      └─ GUIA_INSTALACAO.md

Desenvolvedor
└─ GUIA_COMPLETO.md
   └─ CONTROLLERS_A_IMPLEMENTAR.md
      └─ SERVICES_DOCUMENTACAO.md

Arquiteto
└─ RESUMO_DA_CONVERSAO.md
   └─ CHECKLIST.md
      └─ Código-fonte (app/Models/)
```

---

## 📅 Timeline de Desenvolvimento

```
Semana 1 (20-26 Jun) ✅
├─ Análise do SIGED
├─ Arquitetura design
├─ Models criação
└─ Migrations

Semana 2 (27 Jun - 3 Jul) ⏳
├─ Controllers prioridade 1
├─ Services básicos
├─ LoginController
└─ Installer web funcional

Semana 3 (4 - 10 Jul) ⏳
├─ Controllers prioridade 2-3
├─ Views Blade
├─ Portais
└─ Relatórios

Semana 4+ (11 Jul+) ⏳
├─ Integrações
├─ Testes
├─ Otimizações
└─ Deploy
```

---

**Mapa Mental Versão**: 1.0  
**Última Atualização**: 20/06/2026  
**Responsável**: Development Team
