# SIGED Laravel Multi-tenant - Documentação Completa

## 🎯 Índice de Conteúdo

### 1. Começar Aqui
- **[RESUMO_DA_CONVERSAO.md](RESUMO_DA_CONVERSAO.md)** - Status completo do projeto e o que foi feito
- **[GUIA_INSTALACAO.md](GUIA_INSTALACAO.md)** - Passo a passo para instalar em hospedagem

### 2. Para Desenvolvedores
- **[GUIA_COMPLETO.md](GUIA_COMPLETO.md)** - Guia técnico completo do sistema
- **[CONTROLLERS_A_IMPLEMENTAR.md](CONTROLLERS_A_IMPLEMENTAR.md)** - Especificação de todos os controllers
- **[SERVICES_DOCUMENTACAO.md](SERVICES_DOCUMENTACAO.md)** - Documentação dos services de negócio

### 3. Arquivos do Projeto

#### Configuração Base
```
composer.json              - Dependências do projeto
.env.example              - Variáveis de ambiente
config/tenancy.php        - Configuração multi-tenant
```

#### Models (Estrutura de Dados)
```
app/Models/
├── Aluno.php                    - Gestão de alunos
├── Turma.php                    - Gestão de turmas
├── Disciplina.php               - Gestão de disciplinas
├── Nota.php                     - Notas com cálculos
├── Falta.php                    - Faltas e frequência
├── OcorrenciaDisciplinar.php    - Ocorrências disciplinares
├── ChamadaBiometrica.php        - Chamadas biométricas
├── Usuario.php                  - Usuários e autenticação
├── Tenant.php                   - Multi-tenant support
└── AnoLetivo.php                - Gestão de anos letivos
```

#### Migrations (Banco de Dados)
```
database/migrations/
├── 2024_01_01_000001_...   - Tabelas acadêmicas
├── 2024_01_01_000002_...   - Tabelas de avaliação e disciplina
└── 2024_01_01_000003_...   - Tabelas de usuários e permissões
```

#### Controllers (Lógica de Aplicação)
```
app/Http/Controllers/
├── Installer/               - Instalador web
├── Admin/                   - Painel administrativo
├── Academic/                - Gestão acadêmica
├── Discipline/              - Gestão disciplinar
├── Attendance/              - Frequência e chamadas
├── Portal/                  - Portais (aluno, professor, responsável)
├── Reports/                 - Geração de relatórios
├── Integration/             - Integrações externas
└── Api/                     - API RESTful
```

#### Services (Lógica de Negócio)
```
app/Services/
├── AlunoService.php             - [PENDENTE]
├── NotaService.php              - [PENDENTE]
├── DisciplinaryService.php      - [PENDENTE]
├── BiometricService.php         - [PENDENTE]
├── WhatsAppService.php          - [PENDENTE]
├── ReportService.php            - [PENDENTE]
├── TenantService.php            - [PENDENTE]
├── ExportService.php            - [PENDENTE]
└── EmailService.php             - [PENDENTE]
```

#### Views (Interface Blade)
```
resources/views/
├── installer/               - Telas do instalador
├── layouts/                 - Layouts base
├── dashboard/               - Dashboard
├── academic/                - Views acadêmicas
├── discipline/              - Views disciplinares
├── portal/                  - Portais de usuários
└── reports/                 - Relatórios
```

#### Rotas
```
routes/
├── web.php                  - Rotas web autenticadas
├── api.php                  - API endpoints
└── installer.php            - Rotas do instalador
```

---

## 🚀 QUICK START

### 1. Instalar Dependências
```bash
composer install
npm install
```

### 2. Configurar Ambiente
```bash
cp .env.example .env
php artisan key:generate
```

### 3. Acessar Instalador
Abra seu navegador:
```
http://localhost/installer
```

### 4. Seguir Passos do Instalador
- Verificação de requisitos
- Configuração do banco de dados
- Configuração do sistema
- Configuração do tenant
- Revisar e confirmar

---

## 📊 Estrutura do Sistema

### Arquitetura Multi-tenant

```
┌─────────────────────────────────────────┐
│          Domínio Principal              │
│     siged.example.com                   │
│   (Administração Central)               │
└─────────────────────────────────────────┘
                    │
    ┌───────────────┼───────────────┐
    │               │               │
┌───────────┐  ┌────────────┐  ┌─────────┐
│Tenant 1   │  │Tenant 2    │  │Tenant N │
│subdom1.   │  │subdom2.    │  │.        │
│siged.com  │  │siged.com   │  │        │
└───────────┘  └────────────┘  └─────────┘
    │               │               │
┌───────────┐  ┌────────────┐  ┌─────────┐
│BD Tenant1 │  │BD Tenant2  │  │BD TenantN│
└───────────┘  └────────────┘  └─────────┘
```

### Banco de Dados

**Banco Central (Landlord)**
```sql
- tenants                    (registro de tenants)
- usuarios                   (usuários admin)
- roles, permissions         (permissões globais)
```

**Banco por Tenant**
```sql
- alunos
- turmas
- disciplinas
- notas
- faltas
- ocorrencias_disciplinares
- chamadas_biometricas
- usuarios                   (usuários do tenant)
- ano_letivo
```

---

## 🎓 Módulos Principais

### 1. Gestão Acadêmica
- Alunos (CRUD, importação, exportação)
- Turmas (estrutura, ocupação)
- Disciplinas (associação com turmas)
- Anos Letivos (períodos letivos)

### 2. Avaliação
- Notas (lançamento individual e em lote)
- Boletins (por aluno)
- Relatórios de desempenho
- Alunos em recuperação

### 3. Frequência
- Chamada Biométrica (integração com leitores)
- Reconhecimento Facial (opcional)
- Relatório de frequência
- Faltas (registro e justificativa)

### 4. Disciplina Escolar
- Ocorrências (registro)
- Enquadramentos (artigos)
- Agravantes e atenuantes
- Punições (repreensão, suspensão, expulsão)
- Assinatura digital

### 5. Relatórios
- Acadêmicos (por aluno, turma, período)
- Disciplinares (por tipo, aluno, período)
- De frequência (comparativo)
- Exportação (PDF, Excel)

### 6. Portais
- **Portal do Aluno**: notas, faltas, ocorrências
- **Portal do Responsável**: acompanhamento
- **Portal do Professor**: turmas, lançamento de notas
- **Portal do Diretor**: visão geral do sistema

---

## 🔐 Segurança

### Implementado
- ✅ Autenticação com email/senha
- ✅ Hash de senhas (bcrypt)
- ✅ CSRF Protection
- ✅ SQL Injection Prevention (Eloquent)
- ✅ XSS Protection (Blade)
- ✅ HTTPS obrigatório
- ✅ Multi-tenant isolamento de dados
- ✅ Permissões por role

### Sistema de Papéis (Roles)
- **Admin**: Acesso total ao sistema
- **Diretor**: Gestão acadêmica completa
- **Coordinador**: Gestão de turmas
- **Professor**: Lançamento de notas e faltas
- **Aluno**: Visualização de dados pessoais
- **Responsável**: Acompanhamento de alunos

---

## 🛠️ Ferramentas e Tecnologias

### Backend
- **Framework**: Laravel 11
- **ORM**: Eloquent
- **Multi-tenant**: Stancl Tenancy
- **Permissões**: Spatie Laravel Permission
- **API**: Sanctum (JWT)
- **Database**: MySQL/MariaDB

### Frontend
- **Template Engine**: Blade
- **CSS**: Bootstrap 5 (recomendado)
- **JavaScript**: Alpine.js + HTMX (opcional)

### Integrações
- **WhatsApp**: Evolution API
- **Google Maps**: Geolocalização
- **IA**: OpenAI GPT
- **Reconhecimento Facial**: API customizada
- **Storage**: AWS S3

---

## 📈 Performance

### Otimizações Implementadas
- ✅ Índices em campos-chave
- ✅ Eager loading de relacionamentos
- ✅ Paginação de resultados
- ✅ Cache de configurações
- ✅ Compressão de assets

### Recomendações
- Usar Redis para cache
- Implementar fila para tarefas pesadas
- Usar CDN para assets
- Monitorar com Laravel Telescope

---

## 📝 Documentação por Tópico

### Para Instalar
→ [GUIA_INSTALACAO.md](GUIA_INSTALACAO.md)

### Para Desenvolver
→ [GUIA_COMPLETO.md](GUIA_COMPLETO.md)
→ [CONTROLLERS_A_IMPLEMENTAR.md](CONTROLLERS_A_IMPLEMENTAR.md)
→ [SERVICES_DOCUMENTACAO.md](SERVICES_DOCUMENTACAO.md)

### Entender o Projeto
→ [RESUMO_DA_CONVERSAO.md](RESUMO_DA_CONVERSAO.md)

---

## 🎯 Próximas Etapas

### Fase 2: Implementação de Controllers (Semana 1-2)
- [ ] DashboardController
- [ ] AlunoController (CRUD)
- [ ] NotaController
- [ ] OcorrenciaDisciplinarController
- [ ] ChamadaBiometricaController
- [ ] LoginController
- [ ] ReportControllers

### Fase 3: Services e Portais (Semana 3-4)
- [ ] Implementar todos os Services
- [ ] Portais (Aluno, Responsável, Professor)
- [ ] Relatórios completos
- [ ] WhatsApp Integration

### Fase 4: Integrações e Testes (Semana 5-6)
- [ ] Reconhecimento Facial
- [ ] Google Maps
- [ ] IA Integration
- [ ] Testes unitários
- [ ] Testes de integração

### Fase 5: Deploy e Otimização (Semana 7+)
- [ ] Otimizações de performance
- [ ] Segurança final
- [ ] Documentação do usuário
- [ ] Treinamento

---

## 💡 Dicas Úteis

### Comandos Artisan Úteis
```bash
# Migrations
php artisan migrate
php artisan tenants:migrate

# Cache
php artisan cache:clear
php artisan config:clear

# Logs
php artisan log:tail

# Seeders
php artisan db:seed
php artisan tenants:seed
```

### Estrutura de um Controller
```php
<?php
namespace App\Http\Controllers\Academic;

class AlunoController extends Controller
{
    public function __construct(private AlunoService $service)
    {
        $this->middleware('auth');
        $this->middleware('permission:view_alunos', ['only' => ['index']]);
    }

    public function index()
    {
        $alunos = Aluno::paginate(15);
        return view('academic.alunos.index', compact('alunos'));
    }
}
```

### Estrutura de um Service
```php
<?php
namespace App\Services;

class AlunoService
{
    public function criar(array $dados): Aluno
    {
        // Validar
        // Processar
        // Retornar
    }
}
```

---

## 🔗 Links Úteis

- [Laravel Documentation](https://laravel.com/docs)
- [Stancl Tenancy](https://tenancyforlaravel.com)
- [Spatie Permission](https://spatie.be/docs/laravel-permission)
- [Laravel Sanctum](https://laravel.com/docs/sanctum)

---

## 📞 Suporte

### Problemas Comuns
Consulte [GUIA_INSTALACAO.md](GUIA_INSTALACAO.md) seção "Resolução de Problemas"

### Documentação por Erro
- "SQLSTATE[HY000]" → Ver guia instalação
- "Permission denied" → Ver guia instalação
- "Class not found" → Executar `composer dump-autoload`

---

## 📄 Licença

**Proprietary** - SIGED Sistema de Gestão Empresarial

---

## ✍️ Histórico de Revisões

| Versão | Data | Autor | Alterações |
|--------|------|-------|-----------|
| 1.0.0 | 20/06/2026 | Dev Team | Estrutura base e documentação |
| 1.1.0 | [Próximo] | Dev Team | Controllers implementados |

---

**Última atualização**: 20/06/2026
**Status**: Pronto para Fase 2 de Desenvolvimento
**Todos os arquivos estão em**: `C:\Users\Win10\Desktop\ATUALIZAÇÃO SIGED\Conversão SIGED para Laravel`
