{
  "id": "enum-generateddocumentstatus",
  "title": "Enum — GeneratedDocumentStatus",
  "description": "Ciclo de vida de cada documento gerado ou registrado no estágio.",
  "type": "enum-reference",
  "status": "implemented",
  "visibility": "public",
  "tags": [
    "sge/enums",
    "sge/documentos"
  ],
  "related": [
    "migration-16-generated-documents",
    "fluxos-principais"
  ],
  "sourceRefs": [
    "https://github.com/sge-suite/sge/blob/master/app/Enums/GeneratedDocumentStatus.php",
    "https://github.com/sge-suite/sge/blob/master/tests/Unit/Enums/GeneratedDocumentStatusTest.php"
  ],
  "authors": [],
  "updated": null,
  "diagram": null,
  "body": "> [!success] Estado\n> Implementado em `app/Enums/GeneratedDocumentStatus.php`. O cast em `GeneratedDocument` e a Migration 16 já existem; as guardas de transição do fluxo ainda estão pendentes.\n\n## Contrato\n\n| Case                | Valor persistido     | Rótulo                |\n| ------------------- | -------------------- | --------------------- |\n| `Generated`         | `generated`          | Gerado                |\n| `AwaitingSignature` | `awaiting_signature` | Aguardando assinatura |\n| `Signed`            | `signed`             | Assinado              |\n| `Cancelled`         | `cancelled`          | Cancelado             |\n\nO status pertence ao documento, não ao estágio. `Cancelled` encerra o ciclo do documento e não cancela automaticamente o estágio. O cancelamento exige motivo e data; a autoria fica no Activity Log. O arquivo final não é armazenado pelo SGE.\n\nA transição de um documento assinável para `AwaitingSignature` exige que o Setor informe o local de disponibilização para assinatura em campo textual genérico e, se optar por disparar o aviso, selecione ao menos um interessado elegível. A plataforma é somente um valor informado no registro; não é case do enum nem constante do sistema.\n\nQuando a data de início vencer antes da assinatura, o documento continua `AwaitingSignature`: não há schedule para esse fato. Cancelamento, pendência documental e correção são decisões manuais do Setor, sempre com motivo e Activity Log. Uma reemissão só inicia novo ciclo documental depois de eventual correção ser aprovada, preservando o cancelado no histórico.\n\n`OrientationCertificate` usa `Generated` e não passa por assinatura. Não existem os status `Registered` ou `Released` para documentos; `Released` pertence ao ciclo do estágio. Falhas técnicas de Job não viram status persistente sem decisão explícita.\n\n## Checklist de implementação\n\n- [x] Criar enum string e rótulos no código.\n- [x] Implementar `options()` e `values()`.\n- [x] Cobrir cases, valores, rótulos e opções com teste unitário.\n- [x] Adicionar cast em `GeneratedDocument`.\n- [x] Usar o valor inicial do enum na [migration de generated_documents](doc:migration-16-generated-documents).\n- [ ] Implementar guardas para transições e documentos já assinados.\n- [ ] Exigir local de disponibilização e validar os interessados selecionados na transição para `AwaitingSignature`.\n- [ ] Testar geração, assinatura, cancelamento, reemissão e documento externo na integração documental.\n- [ ] Atualizar [fluxo de documentos](doc:fluxos-principais#3-analise-e-formalizacao).",
  "sections": [
    {
      "id": "contrato",
      "level": 2,
      "title": "Contrato",
      "text": "| Case                | Valor persistido     | Rótulo                | | ------------------- | -------------------- | --------------------- | | `Generated`         | `generated`          | Gerado                | | `AwaitingSignature` | `awaiting_signature` | Aguardando assinatura | | `Signed`            | `signed`             | Assinado              | | `Cancelled`         | `cancelled`          | Cancelado             |  O status pertence ao documento, não ao estágio. `Cancelled` encerra o ciclo do documento e não cancela automaticamente o estágio. O cancelamento exige motivo e data; a autoria fica no Activity Log. O arquivo final não é armazenado pelo SGE.  A transição de um documento assinável para `AwaitingSignature` exige que o Setor informe o local de disponibilização para assinatura em campo textual genérico e, se optar por disparar o aviso, selecione ao menos um interessado elegível. A plataforma é somente um valor informado no registro; não é case do enum nem constante do sistema.  Quando a data de início vencer antes da assinatura, o documento continua `AwaitingSignature`: não há schedule para esse fato. Cancelamento, pendência documental e correção são decisões manuais do Setor, sempre com motivo e Activity Log. Uma reemissão só inicia novo ciclo documental depois de eventual correção ser aprovada, preservando o cancelado no histórico.  `OrientationCertificate` usa `Generated` e não passa por assinatura. Não existem os status `Registered` ou `Released` para documentos; `Released` pertence ao ciclo do estágio. Falhas técnicas de Job não viram status persistente sem decisão explícita.",
      "line": 4
    },
    {
      "id": "checklist-de-implementacao",
      "level": 2,
      "title": "Checklist de implementação",
      "text": "- [x] Criar enum string e rótulos no código. - [x] Implementar `options()` e `values()`. - [x] Cobrir cases, valores, rótulos e opções com teste unitário. - [x] Adicionar cast em `GeneratedDocument`. - [x] Usar o valor inicial do enum na [migration de generated_documents](doc:migration-16-generated-documents). - [ ] Implementar guardas para transições e documentos já assinados. - [ ] Exigir local de disponibilização e validar os interessados selecionados na transição para `AwaitingSignature`. - [ ] Testar geração, assinatura, cancelamento, reemissão e documento externo na integração documental. - [ ] Atualizar [fluxo de documentos](doc:fluxos-principais#3-analise-e-formalizacao).",
      "line": 21
    }
  ],
  "sourcePath": "content/enum-generateddocumentstatus.md",
  "visuals": [],
  "apiVersion": 1
}
