# RH — Ficha de Admissão

## Objetivo

Sistema de ficha admissional para novos colaboradores da MotionFit. Entrega formulário público, upload de documentos, foto de perfil, painel admin, edição, status, diagnóstico e geração de PDF.

## Caminho e URL

- Caminho no ZIP: `admissoes/`
- URL de produção documentada: `https://rh.motionfitacademia.com.br/admissoes/public/`
- Front controller: `admissoes/public/index.php`
- Rotas: `admissoes/routes/web.php`

## Arquitetura

- MVC próprio em PHP.
- Controllers em `app/Controllers`.
- Models em `app/Models`.
- Views em `app/Views`.
- Core em `core/`.
- Configurações em `config/app.php` e `.env`.
- Storage em `storage/uploads` e `storage/dompdf`.

## Principais recursos

- Ficha pública responsiva.
- Validação backend de CPF, CNPJ, datas, UF, upload e campos obrigatórios.
- Documentos em etapas: ficha inicial, documentos e foto de perfil.
- Campos condicionais para professores, estagiários, dependentes, vale-transporte e dados acadêmicos.
- Painel admin com login, listagem, filtros, detalhes, edição, status, anexos e PDF.
- Usuários `admin` e `operador`.
- Tela `/admin/diagnostico` para validar ambiente, banco, storage, rotas e Dompdf.

## Perfis

| Perfil | Permissão |
| --- | --- |
| `admin` | Acesso total ao painel, diagnóstico e usuários. |
| `operador` | Acesso às admissões e operações de RH, sem gerenciar usuários/diagnóstico. |


## Status da ficha

`recebido`, `em_analise`, `pendente`, `aprovado`, `enviado_contabilidade`, `demitido`, `cancelado`.

## Regras importantes

- Unidade São Bernardo aparece como unidade desabilitada no config e não deve entrar no fluxo ativo.
- Agência e conta não devem ser exigidas no formulário quando a regra operacional for pagamento via Pix.
- Estágio deve abrir seção acadêmica apenas quando a regra do cargo/estudante exigir.
- Professor possui campos específicos como CREF e MEI/CNPJ.
- Dompdf depende de `composer install` e escrita no storage.

## Arquivos principais

| Arquivo | Responsabilidade |
| --- | --- |
| `app/Controllers/AdmissionController.php` | Fluxo público: criar ficha, salvar, documentos, foto e sucesso. |
| `app/Controllers/AdminAdmissionController.php` | Painel admin: listar, visualizar, editar, status, imprimir, PDF, anexos e exclusão. |
| `app/Controllers/AdminUserController.php` | CRUD de usuários do painel. |
| `app/Support/AdmissionPdf.php` | Geração do PDF final. |
| `app/Support/AdmissionForm.php` | Campos, listas, limites e tipos aceitos. |
| `app/Support/Diagnostics.php` | Checklist do sistema. |
| `core/Upload.php` | Armazenamento seguro dos anexos. |
| `database/schema.sql` | Estrutura relacional do módulo. |


## Deploy recomendado

1. Enviar código sem `.env` real.
2. Copiar `.env.example` para `.env` no servidor.
3. Ajustar banco, `APP_URL`, `APP_KEY` e limites de upload.
4. Rodar `database/schema.sql` em instalação nova.
5. Rodar patches se for instalação existente.
6. Rodar `php scripts/preflight.php --http`.
7. Validar `/admin/diagnostico`.

## Scripts úteis

- `scripts/preflight.php --http`
- `scripts/seed_homologation.php --force`
- `scripts/run_smoke.php`
- `scripts/test_all.php`
- `scripts/cleanup_homologation.php --force`
- `scripts/patch_admin_roles.php --force`
- `scripts/patch_admission_internal_fields.php --force`
