{
  "id": "enum-brazilianstate",
  "title": "Enum — BrazilianState",
  "description": "Siglas oficiais das 27 unidades federativas brasileiras usadas por cidades, endereços e calendários estaduais.",
  "type": "enum-reference",
  "status": "implemented",
  "visibility": "public",
  "tags": [
    "sge/enums",
    "sge/cadastros",
    "sge/calendario"
  ],
  "related": [
    "migration-01a-cities",
    "migration-01-addresses",
    "migration-03-campuses",
    "migration-22-holidays",
    "service-internshipenddatecalculator"
  ],
  "sourceRefs": [
    "https://github.com/sge-suite/sge/blob/master/app/Enums/BrazilianState.php",
    "https://github.com/sge-suite/sge/blob/master/tests/Unit/Enums/BrazilianStateTest.php"
  ],
  "authors": [],
  "updated": null,
  "diagram": null,
  "body": "> [!success] Estado\n> A classe e os testes unitários já existem em `app/Enums/BrazilianState.php`. O cast no model `City` já está implementado; `Address` obtém a UF pelo relacionamento com a cidade, sem coluna ou cast de UF próprios. As integrações com campi e o cálculo do calendário continuam planejadas.\n\nOs valores persistidos são as siglas oficiais em maiúsculas. `label()` apresenta o nome da unidade federativa em português e `options()` serve diretamente aos campos de seleção.\n\nO model `City` persiste `state` como sigla e o expõe como `BrazilianState` por meio do cast Eloquent. A validação do `CitySeeder` aceita somente as 27 siglas definidas neste enum.\n\n| Case | Valor | Rótulo |\n| --- | --- | --- |\n| `Acre` | `AC` | Acre |\n| `Alagoas` | `AL` | Alagoas |\n| `Amapa` | `AP` | Amapá |\n| `Amazonas` | `AM` | Amazonas |\n| `Bahia` | `BA` | Bahia |\n| `Ceara` | `CE` | Ceará |\n| `DistritoFederal` | `DF` | Distrito Federal |\n| `EspiritoSanto` | `ES` | Espírito Santo |\n| `Goias` | `GO` | Goiás |\n| `Maranhao` | `MA` | Maranhão |\n| `MatoGrosso` | `MT` | Mato Grosso |\n| `MatoGrossoDoSul` | `MS` | Mato Grosso do Sul |\n| `MinasGerais` | `MG` | Minas Gerais |\n| `Para` | `PA` | Pará |\n| `Paraiba` | `PB` | Paraíba |\n| `Parana` | `PR` | Paraná |\n| `Pernambuco` | `PE` | Pernambuco |\n| `Piaui` | `PI` | Piauí |\n| `RioDeJaneiro` | `RJ` | Rio de Janeiro |\n| `RioGrandeDoNorte` | `RN` | Rio Grande do Norte |\n| `RioGrandeDoSul` | `RS` | Rio Grande do Sul |\n| `Rondonia` | `RO` | Rondônia |\n| `Roraima` | `RR` | Roraima |\n| `SantaCatarina` | `SC` | Santa Catarina |\n| `SaoPaulo` | `SP` | São Paulo |\n| `Sergipe` | `SE` | Sergipe |\n| `Tocantins` | `TO` | Tocantins |\n\nPara o cálculo do estágio, a UF e a cidade do endereço histórico do local de trabalho definem os feriados estaduais e municipais aplicáveis. O catálogo de cidades é local e carregado pelo `CitySeeder`; a BrasilAPI/IBGE pode ser usada para gerar ou revisar o arquivo de carga. A consulta opcional de CEP no formulário fica para uma etapa futura e deverá resolver a cidade no catálogo local, preservando sua identidade IBGE. O calendário importado é persistido em [`holidays`](doc:migration-22-holidays).\n\n## Checklist\n\n- [x] Criar enum, rótulos, `values()` e `options()`.\n- [x] Cobrir cases, siglas, rótulos e opções com teste unitário.\n- [x] Adicionar o cast de UF ao model `City`.\n- [x] Expor a UF de `Address` pelo relacionamento com `City`, sem duplicar coluna ou cast.\n- [ ] Integrar a UF ao cadastro de campus conforme seu contrato.\n- [x] Criar o catálogo local de cidades e carregá-lo pelo `CitySeeder`.\n- [x] Criar a tabela, o model e a importação BrasilAPI de feriados nacionais e estaduais; o cadastro municipal permanece pendente.\n- [ ] Usar o calendário persistido no cálculo da previsão de término.",
  "sections": [
    {
      "id": "checklist",
      "level": 2,
      "title": "Checklist",
      "text": "- [x] Criar enum, rótulos, `values()` e `options()`. - [x] Cobrir cases, siglas, rótulos e opções com teste unitário. - [x] Adicionar o cast de UF ao model `City`. - [x] Expor a UF de `Address` pelo relacionamento com `City`, sem duplicar coluna ou cast. - [ ] Integrar a UF ao cadastro de campus conforme seu contrato. - [x] Criar o catálogo local de cidades e carregá-lo pelo `CitySeeder`. - [x] Criar a tabela, o model e a importação BrasilAPI de feriados nacionais e estaduais; o cadastro municipal permanece pendente. - [ ] Usar o calendário persistido no cálculo da previsão de término.",
      "line": 40
    }
  ],
  "sourcePath": "content/enum-brazilianstate.md",
  "visuals": [],
  "apiVersion": 1
}
