# Banco de dados — Ficha de Admissão

Documento gerado a partir dos arquivos SQL do projeto. Não inclui senhas, dados reais nem dumps de produção.

## `admin_users`

| Campo | Definição |
| --- | --- |
| `id` | `INT UNSIGNED AUTO_INCREMENT PRIMARY KEY` |
| `name` | `VARCHAR(150) NOT NULL` |
| `email` | `VARCHAR(190) NOT NULL UNIQUE` |
| `password_hash` | `VARCHAR(255) NOT NULL` |
| `role` | `VARCHAR(20) NOT NULL DEFAULT 'admin'` |
| `is_active` | `TINYINT(1) NOT NULL DEFAULT 1` |
| `created_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP` |
| `updated_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP` |

## `admissions`

| Campo | Definição |
| --- | --- |
| `id` | `INT UNSIGNED AUTO_INCREMENT PRIMARY KEY` |
| `consent` | `TINYINT(1) NOT NULL DEFAULT 0` |
| `race` | `VARCHAR(50) NOT NULL` |
| `unit_name` | `VARCHAR(150) NOT NULL` |
| `job_title` | `VARCHAR(150) NOT NULL` |
| `full_name` | `VARCHAR(190) NOT NULL` |
| `father_name` | `VARCHAR(190) NULL` |
| `mother_name` | `VARCHAR(190) NOT NULL` |
| `birth_date` | `DATE NOT NULL` |
| `marital_status` | `VARCHAR(50) NOT NULL` |
| `is_student` | `TINYINT(1) NOT NULL DEFAULT 0` |
| `education_level` | `VARCHAR(100) NOT NULL` |
| `nationality` | `VARCHAR(100) NOT NULL` |
| `place_of_birth` | `VARCHAR(150) NULL` |
| `personal_email` | `VARCHAR(190) NOT NULL` |
| `phone` | `VARCHAR(20) NOT NULL` |
| `emergency_contact` | `VARCHAR(20) NOT NULL` |
| `address_line` | `VARCHAR(190) NOT NULL` |
| `address_number` | `VARCHAR(20) NOT NULL` |
| `neighborhood` | `VARCHAR(120) NOT NULL` |
| `zip_code` | `VARCHAR(12) NOT NULL` |
| `city` | `VARCHAR(120) NOT NULL` |
| `address_extra` | `VARCHAR(190) NULL` |
| `state` | `CHAR(2) NOT NULL` |
| `rg_number` | `VARCHAR(30) NOT NULL` |
| `rg_issue_date` | `DATE NOT NULL` |
| `rg_issuer` | `VARCHAR(80) NOT NULL` |
| `birth_city` | `VARCHAR(120) NOT NULL` |
| `birth_state` | `CHAR(2) NOT NULL` |
| `cpf` | `VARCHAR(14) NOT NULL UNIQUE` |
| `pis_number` | `VARCHAR(20) NOT NULL` |
| `pis_issue_date` | `DATE NOT NULL` |
| `has_dependents` | `TINYINT(1) NOT NULL DEFAULT 0` |
| `dependent_has_disability` | `TINYINT(1) NOT NULL DEFAULT 0` |
| `uses_transport_voucher` | `TINYINT(1) NOT NULL DEFAULT 0` |
| `transport_voucher_daily_value` | `DECIMAL(10,2) NULL` |
| `uniform_size` | `VARCHAR(10) NULL` |
| `cref_number` | `VARCHAR(30) NULL` |
| `professor_mei_cnpj` | `VARCHAR(18) NULL` |
| `employment_function` | `VARCHAR(150) NULL` |
| `admission_date` | `DATE NULL` |
| `dismissal_date` | `DATE NULL` |
| `workload_hours` | `VARCHAR(30) NULL` |
| `work_schedule` | `VARCHAR(120) NULL` |
| `work_schedule_hours` | `VARCHAR(120) NULL` |
| `salary_amount` | `DECIMAL(10,2) NULL` |
| `salary_type` | `VARCHAR(20) NULL` |
| `bank_payment_method` | `VARCHAR(20) NOT NULL DEFAULT 'pix'` |
| `bank_agency` | `VARCHAR(30) NULL` |
| `bank_account` | `VARCHAR(40) NULL` |
| `pix_key` | `VARCHAR(190) NULL` |
| `status` | `VARCHAR(40) NOT NULL DEFAULT 'recebido'` |
| `internal_notes` | `TEXT NULL` |
| `lgpd_consent_at` | `DATETIME NULL` |
| `submitted_ip` | `VARCHAR(45) NULL` |
| `created_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP` |
| `updated_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP` |


**Índices/constraints:**

- `INDEX idx_admissions_status (status)`
- `INDEX idx_admissions_created_at (created_at)`
- `INDEX idx_admissions_status_created_at (status, created_at)`
- `INDEX idx_admissions_full_name (full_name)`
- `INDEX idx_admissions_unit (unit_name)`
- `INDEX idx_admissions_job (job_title)`

## `dependents`

| Campo | Definição |
| --- | --- |
| `id` | `INT UNSIGNED AUTO_INCREMENT PRIMARY KEY` |
| `admission_id` | `INT UNSIGNED NOT NULL` |
| `full_name` | `VARCHAR(190) NOT NULL` |
| `birth_date` | `DATE NOT NULL` |
| `cpf` | `VARCHAR(14) NOT NULL` |
| `birth_city` | `VARCHAR(120) NOT NULL` |
| `has_disability` | `TINYINT(1) NOT NULL DEFAULT 0` |
| `created_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP` |
| `updated_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP` |


**Índices/constraints:**

- `CONSTRAINT fk_dependents_admission FOREIGN KEY (admission_id) REFERENCES admissions(id) ON DELETE CASCADE`

## `academic_infos`

| Campo | Definição |
| --- | --- |
| `id` | `INT UNSIGNED AUTO_INCREMENT PRIMARY KEY` |
| `admission_id` | `INT UNSIGNED NOT NULL` |
| `internship_nature` | `VARCHAR(120) NOT NULL` |
| `academic_level` | `VARCHAR(120) NOT NULL` |
| `institution_name` | `VARCHAR(190) NOT NULL` |
| `institution_cnpj` | `VARCHAR(18) NOT NULL` |
| `institution_address` | `VARCHAR(190) NOT NULL` |
| `institution_neighborhood` | `VARCHAR(120) NOT NULL` |
| `institution_number` | `VARCHAR(20) NOT NULL` |
| `institution_zip` | `VARCHAR(12) NOT NULL` |
| `institution_city` | `VARCHAR(120) NOT NULL` |
| `institution_state` | `CHAR(2) NOT NULL` |
| `advisor_name` | `VARCHAR(190) NOT NULL` |
| `semester` | `VARCHAR(50) NOT NULL` |
| `study_shift` | `VARCHAR(80) NULL` |
| `course_name` | `VARCHAR(190) NOT NULL` |
| `registration_number` | `VARCHAR(80) NOT NULL` |
| `created_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP` |
| `updated_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP` |


**Índices/constraints:**

- `CONSTRAINT fk_academic_admission FOREIGN KEY (admission_id) REFERENCES admissions(id) ON DELETE CASCADE`

## `attachments`

| Campo | Definição |
| --- | --- |
| `id` | `INT UNSIGNED AUTO_INCREMENT PRIMARY KEY` |
| `admission_id` | `INT UNSIGNED NOT NULL` |
| `label_key` | `VARCHAR(50) NOT NULL` |
| `original_name` | `VARCHAR(190) NOT NULL` |
| `stored_name` | `VARCHAR(190) NOT NULL` |
| `relative_path` | `VARCHAR(255) NOT NULL` |
| `mime_type` | `VARCHAR(120) NOT NULL` |
| `size_bytes` | `BIGINT UNSIGNED NOT NULL DEFAULT 0` |
| `created_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP` |
| `updated_at` | `DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP` |


**Índices/constraints:**

- `UNIQUE KEY uniq_admission_label (admission_id, label_key)`
- `CONSTRAINT fk_attachments_admission FOREIGN KEY (admission_id) REFERENCES admissions(id) ON DELETE CASCADE`
