{
  "id": "fase-06-documentos",
  "title": "Fase 06 — Documentos",
  "description": "Checklist de templates DOCX, versões, geração e acompanhamento de assinatura.",
  "type": "development-phase",
  "status": "planned",
  "visibility": "public",
  "tags": [
    "sge/desenvolvimento",
    "sge/documentos",
    "sge/checklist"
  ],
  "related": [
    "fluxos-principais",
    "geracao-de-documentos-docx-e-variaveis",
    "migration-13-document-templates",
    "migration-16-generated-documents",
    "fase-07-abertura-do-estagio"
  ],
  "sourceRefs": [],
  "authors": [],
  "updated": null,
  "diagram": null,
  "body": "Referências: [fluxo de formalização](doc:fluxos-principais#3-analise-e-formalizacao), [contrato do motor e catálogo](doc:geracao-de-documentos-docx-e-variaveis), [migration de templates](doc:migration-13-document-templates) e [migration de documentos gerados](doc:migration-16-generated-documents).\n\nComece pela validação OOXML, armazenamento privado e serviço de geração temporária. Em seguida, conecte as telas de upload, revisão e acompanhamento; a regra de dados e a autorização permanecem no backend.\n\n## Checklist\n\n- [x] Criar `document_templates` global ou por campus, sem chave textual, com desativação.\n- [x] Criar `template_versions` com coleção privada do Media Library para um DOCX por versão.\n- [ ] Implementar o fluxo de upload com inspeção e validação antes de disponibilizar a versão mais recente.\n- [ ] Permitir upload DOCX somente ao vínculo autorizado do Setor de Estágio.\n- [x] Definir catálogo fixo de variáveis em português com `${NOME_DA_VARIAVEL}`.\n- [ ] Implementar inspeção OOXML e validação de variáveis antes de disponibilizar uma versão.\n- [ ] Adicionar `phpoffice/phpword` e declarar `brick/math` diretamente no Composer; validar extensões PHP.\n- [ ] Validar os templates antes de disponibilizá-los, removendo dados fixos indevidos.\n- [ ] Corrigir o template de credenciamento e reconstruir/renderizar a rescisão.\n- [ ] Impedir alteração destrutiva e exclusão de versão já utilizada; permitir exclusão física da versão sem documentos gerados.\n- [ ] Criar `generated_documents` com tipo, origem, status e snapshot quando gerado pelo SGE.\n- [ ] Registrar documento externo sem receber/armazenar arquivo e com template nulo.\n- [ ] Gerar usando somente dados autorizados pelo contexto do estágio.\n- [ ] Gerar em arquivo privado temporário, transmitir e apagar em `finally`.\n- [ ] Implementar token idempotente e lock para retries/concorrência.\n- [ ] Registrar geração no Activity Log.\n- [ ] Controlar assinatura no documento, não no estágio.\n- [ ] Ao marcar `Aguardando assinatura`, exigir o local genérico onde o documento está disponível, sem citar plataforma fixa.\n- [ ] Exibir checkboxes dos interessados elegíveis e, quando selecionados, criar aviso de assinatura por e-mail e no sistema para quem possui conta.\n- [ ] Acompanhar assinatura externa manualmente.\n- [ ] Armazenar `protocol_number` retornado pelo SIGAA quando houver.\n- [ ] Tratar aditivo como `GeneratedDocumentType::Addendum`.\n- [ ] Testar dados completos/opcionais, acentuação e versão ainda não validada.\n- [ ] Testar marcadores em tabelas/cabeçalhos, arquivo malicioso, sobras e revisão visual de todas as páginas.\n\n## Critério de saída\n\n- [ ] Templates e versões são imutáveis após uso.\n- [ ] Nenhum arquivo final gerado ou fornecido pela concedente é armazenado pelo SGE.\n- [ ] O status de cada documento é independente do status do estágio.\n\n## Próxima fase\n\n[Fase 07 — Abertura e análise do estágio](doc:fase-07-abertura-do-estagio)",
  "sections": [
    {
      "id": "checklist",
      "level": 2,
      "title": "Checklist",
      "text": "- [x] Criar `document_templates` global ou por campus, sem chave textual, com desativação. - [x] Criar `template_versions` com coleção privada do Media Library para um DOCX por versão. - [ ] Implementar o fluxo de upload com inspeção e validação antes de disponibilizar a versão mais recente. - [ ] Permitir upload DOCX somente ao vínculo autorizado do Setor de Estágio. - [x] Definir catálogo fixo de variáveis em português com `${NOME_DA_VARIAVEL}`. - [ ] Implementar inspeção OOXML e validação de variáveis antes de disponibilizar uma versão. - [ ] Adicionar `phpoffice/phpword` e declarar `brick/math` diretamente no Composer; validar extensões PHP. - [ ] Validar os templates antes de disponibilizá-los, removendo dados fixos indevidos. - [ ] Corrigir o template de credenciamento e reconstruir/renderizar a rescisão. - [ ] Impedir alteração destrutiva e exclusão de versão já utilizada; permitir exclusão física da versão sem documentos gerados. - [ ] Criar `generated_documents` com tipo, origem, status e snapshot quando gerado pelo SGE. - [ ] Registrar documento externo sem receber/armazenar arquivo e com template nulo. - [ ] Gerar usando somente dados autorizados pelo contexto do estágio. - [ ] Gerar em arquivo privado temporário, transmitir e apagar em `finally`. - [ ] Implementar token idempotente e lock para retries/concorrência. - [ ] Registrar geração no Activity Log. - [ ] Controlar assinatura no documento, não no estágio. - [ ] Ao marcar `Aguardando assinatura`, exigir o local genérico onde o documento está disponível, sem citar plataforma fixa. - [ ] Exibir checkboxes dos interessados elegíveis e, quando selecionados, criar aviso de assinatura por e-mail e no sistema para quem possui conta. - [ ] Acompanhar assinatura externa manualmente. - [ ] Armazenar `protocol_number` retornado pelo SIGAA quando houver. - [ ] Tratar aditivo como `GeneratedDocumentType::Addendum`. - [ ] Testar dados completos/opcionais, acentuação e versão ainda não validada. - [ ] Testar marcadores em tabelas/cabeçalhos, arquivo malicioso, sobras e revisão visual de todas as páginas.",
      "line": 5
    },
    {
      "id": "criterio-de-saida",
      "level": 2,
      "title": "Critério de saída",
      "text": "- [ ] Templates e versões são imutáveis após uso. - [ ] Nenhum arquivo final gerado ou fornecido pela concedente é armazenado pelo SGE. - [ ] O status de cada documento é independente do status do estágio.",
      "line": 32
    },
    {
      "id": "proxima-fase",
      "level": 2,
      "title": "Próxima fase",
      "text": "[Fase 07 — Abertura e análise do estágio](doc:fase-07-abertura-do-estagio)",
      "line": 38
    }
  ],
  "sourcePath": "content/fase-06-documentos.md",
  "visuals": [],
  "apiVersion": 1
}
