{
  "id": "enum-legalcapacitydeclaration",
  "title": "Enum — LegalCapacityDeclaration",
  "description": "Opção declarada pelo discente para a capacidade civil no formulário de abertura.",
  "type": "enum-reference",
  "status": "implemented",
  "visibility": "public",
  "tags": [
    "sge/enums",
    "sge/estagio",
    "sge/formularios"
  ],
  "related": [
    "migration-19-internship-requests"
  ],
  "sourceRefs": [
    "https://github.com/sge-suite/sge/blob/master/app/Enums/LegalCapacityDeclaration.php",
    "https://github.com/sge-suite/sge/blob/master/tests/Unit/Enums/LegalCapacityDeclarationTest.php"
  ],
  "authors": [],
  "updated": null,
  "diagram": null,
  "body": "> [!info] Escopo\n> A classe, os testes unitários, o cast no Model e a coluna da Migration 19 já existem. A exigência de comprovante na solicitação também está implementada pela Migration 19A; interface, upload e análise manual continuam planejados. Este enum registra a opção escolhida no formulário; não substitui a data de nascimento nem aprova automaticamente uma emancipação.\n\n## Contrato\n\n| Case | Valor persistido | Rótulo | Regra no envio |\n| --- | --- | --- | --- |\n| `Adult` | `adult` | Maior de idade | Aceito somente se a data de nascimento indicar 18 anos completos. Não pede responsável legal. |\n| `Minor` | `minor` | Menor de idade | Exige nome, CPF, parentesco e e-mail do responsável legal. |\n| `EmancipatedMinor` | `emancipated_minor` | Menor emancipado | Exige anexo privado do comprovante e dispensa os dados do responsável até a análise do Setor. |\n\nEm `Draft`, a opção pode ser nula. Fora de rascunho, ela é obrigatória. A escolha `adult` incompatível com a data de nascimento é recusada no servidor. Para `emancipated_minor`, a solicitação pode ser enviada e segue para análise manual; a escolha não altera os dados pessoais nem vale como aprovação. Se o Setor devolver o comprovante como inválido, a correção indica a seção de capacidade civil: o discente pode enviar novo comprovante ou mudar a opção para `minor`, caso em que informa o responsável legal.\n\n## Checklist\n\n- [x] Criar enum string com `values()` e `options()`.\n- [x] Usar na [solicitação de estágio](doc:migration-19-internship-requests).\n- [x] Testar cases, valores, rótulos e opções.\n- [x] Testar divergência da opção `adult` com a data de nascimento e os campos obrigatórios de `minor`.\n- [ ] Testar anexo ausente e devolução do comprovante após a Migration 19A.\n- [ ] Exibir rótulos em português somente na interface.",
  "sections": [
    {
      "id": "contrato",
      "level": 2,
      "title": "Contrato",
      "text": "| Case | Valor persistido | Rótulo | Regra no envio | | --- | --- | --- | --- | | `Adult` | `adult` | Maior de idade | Aceito somente se a data de nascimento indicar 18 anos completos. Não pede responsável legal. | | `Minor` | `minor` | Menor de idade | Exige nome, CPF, parentesco e e-mail do responsável legal. | | `EmancipatedMinor` | `emancipated_minor` | Menor emancipado | Exige anexo privado do comprovante e dispensa os dados do responsável até a análise do Setor. |  Em `Draft`, a opção pode ser nula. Fora de rascunho, ela é obrigatória. A escolha `adult` incompatível com a data de nascimento é recusada no servidor. Para `emancipated_minor`, a solicitação pode ser enviada e segue para análise manual; a escolha não altera os dados pessoais nem vale como aprovação. Se o Setor devolver o comprovante como inválido, a correção indica a seção de capacidade civil: o discente pode enviar novo comprovante ou mudar a opção para `minor`, caso em que informa o responsável legal.",
      "line": 4
    },
    {
      "id": "checklist",
      "level": 2,
      "title": "Checklist",
      "text": "- [x] Criar enum string com `values()` e `options()`. - [x] Usar na [solicitação de estágio](doc:migration-19-internship-requests). - [x] Testar cases, valores, rótulos e opções. - [x] Testar divergência da opção `adult` com a data de nascimento e os campos obrigatórios de `minor`. - [ ] Testar anexo ausente e devolução do comprovante após a Migration 19A. - [ ] Exibir rótulos em português somente na interface.",
      "line": 14
    }
  ],
  "sourcePath": "content/enum-legalcapacitydeclaration.md",
  "visuals": [],
  "apiVersion": 1
}
