# RH — Trabalhe Conosco

## Objetivo

Aplicação de recrutamento para receber candidaturas, armazenar currículos e permitir que RH/Admin acompanhe o processo seletivo.

## Caminho e URL

- Caminho no ZIP: `MT1/trabalhe_conosco/`
- URL documentada: `https://rh.motionfitacademia.com.br/MT1/trabalhe_conosco/`
- Formulário público: `candidato/index.php`
- Painel RH: `rh/index.php`
- Painel Admin: `admin/index.php`

## Recursos

- Formulário público mobile-first.
- Upload de currículo/arquivo do candidato.
- Validação de unidade e cargo ativos.
- LGPD com aceite obrigatório.
- Hash de IP com `APP_KEY`.
- Painel RH com filtros, status, detalhes, visualização e download.
- Admin para usuários, unidades e cargos.
- Logs em `logs/app.log`.
- CSS/JS locais sem CDN em produção.

## Perfis

| Perfil | Permissão |
| --- | --- |
| `admin` | Acesso ao painel admin, usuários, unidades, cargos e área RH. |
| `rh` | Acesso operacional às candidaturas e currículos. |


## Fluxo do candidato

1. Candidato acessa `candidato/index.php`.
2. Preenche nome, e-mail, telefone, unidade, cargo, experiência e demais campos opcionais.
3. Aceita LGPD.
4. Envia currículo/arquivo.
5. O sistema salva arquivo em `storage/curriculos/YYYY/MM`.
6. Cria registro em `candidates` com status `novo`.
7. Registra histórico em `candidate_status_history`.

## Exportação correta de currículos

Este módulo foi corrigido para **não gerar ZIP pesado**. O fluxo correto é:

1. RH filtra por unidade/cargo/status.
2. Marca os currículos desejados.
3. Clica em **Exportar PDFs selecionados**.
4. O sistema abre uma página com downloads individuais.
5. Cada arquivo deve sair como PDF real no padrão `nome-sobrenome.pdf`.

A configuração `EXPORT_MAX_SELECIONADOS` limita a quantidade por lote para reduzir risco de 504/Gateway Timeout.

## Conversão para PDF

- PDF original é enviado com header `application/pdf`.
- Imagens podem ser convertidas para PDF quando a extensão GD está ativa.
- Arquivo inexistente em `storage/curriculos` deve retornar mensagem clara.
- Formatos não suportados para conversão devem retornar `415` ou motivo claro.

## Arquivos principais

| Arquivo | Responsabilidade |
| --- | --- |
| `candidato/salvar.php` | Valida e grava candidatura, currículo, LGPD e histórico. |
| `rh/index.php` | Lista e filtra candidatos para RH. |
| `rh/candidato.php` | Detalhe, observações e mudança de status. |
| `rh/baixar_curriculo.php` | Download seguro e geração/normalização do PDF. |
| `rh/exportar_curriculos.php` | Tela de seleção para exportação. |
| `rh/exportar_curriculos_selecionados.php` | Manifesto de downloads individuais, sem ZIP. |
| `admin/usuarios.php` | Gestão de usuários `admin`/`rh`. |
| `admin/unidades.php` | Gestão de unidades. |
| `admin/cargos.php` | Gestão de cargos. |
| `sql/otimizar-exportacao-curriculos.sql` | Índices/ajustes para exportação. |


## Deploy recomendado

1. Enviar o código sem `.env` real.
2. Garantir escrita em `storage/curriculos` e `logs`.
3. Criar banco no cPanel/UOL e vincular usuário com permissões.
4. Rodar `database.sql` em instalação nova.
5. Acessar `install.php` apenas para instalar/diagnosticar.
6. Apagar `install.php` após instalar.
7. Conferir `EXPORT_MAX_SELECIONADOS`, `UPLOAD_MAX_MB` e extensão GD.

## Atenções

- Não apagar `storage/curriculos` ao subir atualização.
- Não reativar exportação ZIP global em hospedagem compartilhada.
- Não sobrescrever `.env` real da hospedagem.
- São Bernardo foi removida da carga de unidades desse módulo.
