# Decisões assumidas — módulo Contratos (Fase 0/2)

Assumidas por omissão a partir das recomendações do próprio `docs/CONTRATOS-PLANO.md`
para poder avançar sem bloquear nas Fases 0 e 2. **A confirmar pelo utilizador** —
nenhuma delas é definitiva; ver a secção "Decisões do utilizador em aberto" do plano
para o texto completo de cada uma.

| # | Decisão assumida | Fonte no plano |
|---|---|---|
| 1 | O motor **nunca escreve no Sabichão** — nem sequer um botão futuro para marcar "feito"; fica sempre manual, tal como a skill hoje. | Recomendação nº1 |
| 2 | **Sem paginação dinâmica no MVP.** O motor PHP usa só as regras estáticas equivalentes ao modo `--sem-word` da skill (`keepNext`, parágrafo vazio fixo antes de "elaborado em duplicado", `pageBreakBefore`/secção "página ímpar" no ANEXO I). O mapa de páginas via Word/UNO fica fora de âmbito desta entrega. | Recomendação nº4 + secção "Conversão para PDF" |
| 3 | **Qwen fora do MVP.** Nenhum papel de revisão de coerência de texto nesta entrega — o motor é 100% determinístico, sem chamada ao mini. | Recomendação nº2 |
| 4 | **Escrita na NAS fica para a Fase 1** (infraestrutura, automount CIFS de escrita com conta de serviço dedicada). Nesta entrega (Fase 2, motor) a publicação escreve só numa **pasta local de testes** fora do repositório, nunca em `Assistente/Contratos Feitos` real. Nenhuma conta de serviço nova foi criada. | Recomendação nº3 + secção "Montagem da partilha Assistente no CT" |

Estas quatro decisões condicionam o âmbito do que foi implementado nesta entrega
(Fase 0 + Fase 2): o motor gera `.docx` em disco (comando `contratos:gerar`), sem
publicar na NAS real, sem Qwen, sem paginação dinâmica, sem qualquer escrita ao
Sabichão — exatamente o desenho da Fase 2 do plano. Ver `docs/CONTRATOS-FASE2-RESULTADOS.md`
para o resultado dos testes de paridade contra a skill.

## Decisões do utilizador (23/09/2026) — substituem as assumidas acima onde divergem

1. **Fluxo pedido:** página com TODOS os contratos a redigir (fila `contrato='Fazer'` e `estado='Ativo'`), seleção múltipla, redação automática dos selecionados, revisão na própria app, e botão para publicar os aprovados.
2. **Escrita no Sabichão (substitui a decisão assumida 1):** ao publicar, a app marca o processo com `contrato='Nao'` (sem til, é o valor que o Sabichão guarda — verificado na BD). Padrão igual ao do arquivar-contratos (`scripts/aplicar.py::atualizar_bd`): transação, `UPDATE processo SET contrato='Nao' WHERE id_processo=? AND BINARY contrato='Fazer' AND BINARY nif=? AND BINARY estado='Ativo'`, `ROW_COUNT()` tem de ser 1, linha em `log_funcionarios` com user 'Rui P. Barbosa' e texto "Contrato redigido pelo Assistente RH", só na tabela `processo` (nunca `funcionarios`). Ação nova do wrapper, só pela chave de apply.
3. **Decisões 2 a 4 (paginação da skill, Qwen fora do MVP, conta NAS de escrita dedicada):** sem objeção do utilizador; mantêm-se. A conta NAS de escrita é criada pelo utilizador no DSM; até lá, dev publica numa pasta de teste.
