{
  "id": "helpers",
  "title": "Helpers",
  "description": "Índice dos helpers de formatação, normalização e apresentação do SGE.",
  "type": "technical-hub",
  "status": "in-progress",
  "visibility": "public",
  "tags": [
    "sge/desenvolvimento",
    "sge/helpers",
    "sge/checklist"
  ],
  "related": [
    "helper-currencyhelper",
    "helper-numbertowordshelper",
    "helper-datehelper",
    "helper-digitshelper",
    "helper-braziliandocumenthelper",
    "helper-braziliancontacthelper",
    "helper-brazilianaddresshelper",
    "helper-funcoes-globais",
    "componentes-tecnicos",
    "casts",
    "desenvolvimento-checklist-de-funcionalidade"
  ],
  "sourceRefs": [],
  "authors": [],
  "updated": null,
  "diagram": null,
  "body": "Helpers devem concentrar transformações pequenas, determinísticas e reutilizáveis. Não devem consultar banco, disparar Jobs ou decidir autorização.\n\n## Inventário\n\n- [`CurrencyHelper`](doc:helper-currencyhelper) — moeda com locale configurado.\n- [`NumberToWordsHelper`](doc:helper-numbertowordshelper) — números e valores em reais por extenso (implementado).\n- [`DateHelper`](doc:helper-datehelper) — datas, horários e datas relativas.\n- [`DigitsHelper`](doc:helper-digitshelper) — normalização para dígitos.\n- [`BrazilianDocumentHelper`](doc:helper-braziliandocumenthelper) — CPF e CNPJ.\n- [`BrazilianContactHelper`](doc:helper-braziliancontacthelper) — telefone brasileiro.\n- [`BrazilianAddressHelper`](doc:helper-brazilianaddresshelper) — CEP.\n- [`app/helpers.php`](doc:helper-funcoes-globais) — fachada de funções globais.\n\n## Checklist comum\n\n- [ ] Definir entradas aceitas e retorno para `null`, vazio e inválido.\n- [ ] Manter formatação de apresentação separada do valor persistido.\n- [ ] Usar locale/timezone configurados, sem valores mágicos espalhados.\n- [ ] Não duplicar função global e implementação de classe: a global deve delegar.\n- [ ] Criar teste unitário para cada método público e casos-limite.\n- [ ] Documentar exemplos que possam ser copiados para Blade/Livewire.\n- [ ] Atualizar esta página quando um helper for criado, renomeado ou removido.\n\n## Navegação\n\n- [Componentes técnicos](doc:componentes-tecnicos)\n- [Casts](doc:casts)\n- [Checklist de funcionalidade](doc:desenvolvimento-checklist-de-funcionalidade)",
  "sections": [
    {
      "id": "inventario",
      "level": 2,
      "title": "Inventário",
      "text": "- [`CurrencyHelper`](doc:helper-currencyhelper) — moeda com locale configurado. - [`NumberToWordsHelper`](doc:helper-numbertowordshelper) — números e valores em reais por extenso (implementado). - [`DateHelper`](doc:helper-datehelper) — datas, horários e datas relativas. - [`DigitsHelper`](doc:helper-digitshelper) — normalização para dígitos. - [`BrazilianDocumentHelper`](doc:helper-braziliandocumenthelper) — CPF e CNPJ. - [`BrazilianContactHelper`](doc:helper-braziliancontacthelper) — telefone brasileiro. - [`BrazilianAddressHelper`](doc:helper-brazilianaddresshelper) — CEP. - [`app/helpers.php`](doc:helper-funcoes-globais) — fachada de funções globais.",
      "line": 3
    },
    {
      "id": "checklist-comum",
      "level": 2,
      "title": "Checklist comum",
      "text": "- [ ] Definir entradas aceitas e retorno para `null`, vazio e inválido. - [ ] Manter formatação de apresentação separada do valor persistido. - [ ] Usar locale/timezone configurados, sem valores mágicos espalhados. - [ ] Não duplicar função global e implementação de classe: a global deve delegar. - [ ] Criar teste unitário para cada método público e casos-limite. - [ ] Documentar exemplos que possam ser copiados para Blade/Livewire. - [ ] Atualizar esta página quando um helper for criado, renomeado ou removido.",
      "line": 14
    },
    {
      "id": "navegacao",
      "level": 2,
      "title": "Navegação",
      "text": "- [Componentes técnicos](doc:componentes-tecnicos) - [Casts](doc:casts) - [Checklist de funcionalidade](doc:desenvolvimento-checklist-de-funcionalidade)",
      "line": 24
    }
  ],
  "sourcePath": "content/helpers.md",
  "visuals": [],
  "apiVersion": 1
}
