#!/usr/bin/env bash
# ════════════════════════════════════════════════════════════════════════════
# DEMANDA 33 — O MATERIAL DA AULA. O escopo esta' FECHADO menos UMA linha.
#
# 🩸 A ENTREGA ESTA' SEGURA PELA PERGUNTA 84 (fila do dono, 30/09), e e' de
#    proposito: a resposta decide se existe (ou nao) um card so' para a janela
#    do material, e o enquadrador NAO e' travado por pergunta aberta — medido
#    em motorbase.py:307, que so' olha para o estado da demanda. Se esta
#    demanda passar a `a_enquadrar` antes da resposta, o enquadrador parte os
#    cards sem ela.
#
# COMO SE USA: o dono responde A, B ou C a' pergunta 84; corre-se
#     bash ENTREGAR-D33.sh A     (ou B, ou C)
# ════════════════════════════════════════════════════════════════════════════
set -euo pipefail
ESCOLHA="${1-}"
if [ -z "$ESCOLHA" ]; then echo "diga a resposta do dono (pergunta 84): A, B ou C"; exit 1; fi

case "$ESCOLHA" in
  A) JANELA_RESUMO="A JANELA: o material abre quando a aula acaba e NUNCA fecha (resposta do dono a' pergunta 84: A). ⛔ NAO ha' card de janela, e o cartao de uma aula FUTURA no calendario ⛔ nao mostra material."
     JANELA_CRITERIO="(6) A JANELA: com o parametro \`dias_gravacao\` a 7, ao 8 dia a gravacao ja' NAO abre (410, CS-12 intacto) e as 3 pecas de material CONTINUAM a descarregar — 3 de 3. E o cartao de uma aula que ainda NAO aconteceu mostra 0 pecas." ;;
  B) JANELA_RESUMO="A JANELA: o material segue a gravacao — abre quando a aula acaba e fecha com os mesmos x dias (resposta do dono a' pergunta 84: B). ⟹ HA' UM CARD SO' PARA A JANELA, e ele reaproveita \`gravacao.janela.ts:31 estaAberta()\` TAL E QUAL — ⛔ nao se escreve contagem de dias nova."
     JANELA_CRITERIO="(6) A JANELA: com o parametro \`dias_gravacao\` a 7, ao 7 dia as 3 pecas descarregam (3 de 3) e ao 8 dia a gravacao E o material fecham os dois — 0 de 3, com a MESMA frase de janela fechada do CS-12, e o endereco do ficheiro NAO vai na recusa. E o cartao de uma aula que ainda NAO aconteceu mostra 0 pecas." ;;
  C) JANELA_RESUMO="A JANELA: o material abre assim que a secretaria cadastra a aula e NUNCA fecha (resposta do dono a' pergunta 84: C) — o medico prepara-se antes. ⛔ NAO ha' card de janela, e o cartao de uma aula FUTURA no calendario JA' mostra material."
     JANELA_CRITERIO="(6) A JANELA: o cartao de uma aula marcada para DAQUI A 3 DIAS ja' mostra as 3 pecas e o medico aceite descarrega-as — 3 de 3, antes de a aula existir. E com o parametro \`dias_gravacao\` a 7, ao 8 dia a gravacao ja' NAO abre e as 3 pecas CONTINUAM a descarregar." ;;
  *) echo "resposta desconhecida: $ESCOLHA (esperava A, B ou C)"; exit 1 ;;
esac

RESUMO="O MATERIAL DA AULA: o especialista anexa, o medico descarrega, e ⛔ NAO da' ponto.

O QUE ENTRA: o especialista responsavel anexa a' SUA aula DUAS coisas — FICHEIROS (slides, PDF) e LINKS (endereco escrito a' mao, como \`Aula.linkTransmissao\` e \`Gravacao.url\` ja' sao). O medico ACEITE descarrega, e descarrega o MESMO tenha assistido ao vivo ou pela gravacao (texto do dono). Aparece onde o medico ja' esta': no cartao da aula no calendario e dentro de \`/ao-vivo/[aulaId]\` e \`/gravacao/[aulaId]\`.

$JANELA_RESUMO

O QUE FICA DE FORA, e tem dono noutro sitio: ponto por material (regra 51 — o dono repetiu-o neste texto), a porta «Aulas» do medico (regra 116), e qualquer relacao com o maisSaude (regra 42).

REGRAS QUE MANDAM AQUI: 46 (o medico PENDENTE ⛔ nao ve' aula nenhuma, logo ⛔ nao ve' material) · 51 (⛔ nao da' ponto) · 55 e 57 (os quatro papeis; a secretaria cadastra a aula e TROCA o responsavel) · 111 (a secretaria VE' tudo e ⛔ nao faz o acto de outro papel no lugar dele) · 117 (o percurso e' o extracto auditavel).

O QUE O QUADRO DECIDIU SOZINHO, por ser reversivel — nomeado aqui para o dono ver ao aprovar o enquadramento e corrigir se quiser:
 1. O MATERIAL E' DA AULA, ⛔ NAO DO ESPECIALISTA. E' a mesma trava que o CS-9 ja' pos nas questoes: trocar o responsavel (regra 57) ⛔ nao apaga uma peca nem muda o dono de nenhuma.
 2. QUEM ANEXA E' O ESPECIALISTA RESPONSAVEL, e so' na SUA aula. A SECRETARIA VE' (regra 111) e ⛔ nao anexa no lugar dele — o mesmo criterio que ja' vale para a questao, que e' dele e so' dele.
 3. COMO SE GUARDA: repete-se o CS-51 tal e qual, que ja' esta' provado — \`multipart\` com o campo \`ficheiro\`, o ficheiro conferido ANTES de tocar no disco, o formato lido dos BYTES e ⛔ nunca do nome (um \`.pdf\` que por dentro e' ZIP e' recusado), guardado em disco fora do codigo e servido so' a quem tem sessao activa, com os cabecalhos que ⛔ nao deixam o ficheiro executar.
 4. O TECTO DE TAMANHO E' PARAMETRO DA SECRETARIA, com valor de arranque — mesmo criterio de toda a tabela de numeros deste produto (regras 50 e 53). Mudar o tecto ⛔ nao obriga a mexer no codigo. A LISTA DE FORMATOS e' FECHADA em codigo e num so' sitio, como a do CS-51 (que e' SVG+PNG e ⛔ nao «imagens»).
 5. ⛔ NENHUMA coluna de ponto, de minuto ou de bloco toca no material, e ⛔ nenhuma rota de material escreve em \`ParticipacaoAula\` nem em \`RespostaQuestao\`.
 6. APAGAR uma peca e' do especialista responsavel da aula, com confirmacao, e ⛔ nao apaga nada de quem ja' a descarregou."

CRITERIO="Esta' pronto quando estes SEIS factos se exercerem numa instancia a correr, todos contaveis:
(1) A secretaria cadastra 1 aula de 80 min e indica o especialista S1. S1 abre a SUA aula e anexa 3 pecas: 1 PDF, 1 ficheiro de slides e 1 link. Um segundo especialista S2, responsavel de OUTRA aula, abre esta e leva 403: ⛔ nao anexa e ⛔ nao apaga nenhuma das 3. A secretaria abre e VE' as 3, e ⛔ nao tem por onde anexar.
(2) A secretaria TROCA o responsavel de S1 para S2. As 3 pecas continuam la', com o mesmo nome e o mesmo endereco — 3 de 3, zero apagadas — e S2 passa a poder anexar a 4.
(3) Um ficheiro ACIMA DO TECTO e' recusado e a frase diz OS DOIS numeros (o que chegou e o tecto); um ficheiro FORA DA LISTA e' recusado pelo CONTEUDO — um \`.pdf\` que por dentro e' ZIP e' recusado e a frase nomeia o que foi reconhecido, ⛔ nunca «ficheiro invalido». Nos dois casos ficam 0 ficheiros no armazem.
(4) O medico ACEITE da UPA A abre a aula e descarrega as 3; um medico PENDENTE leva 403 e ve' 0 pecas. O medico que assistiu AO VIVO e o que so' viu a gravacao descarregam exactamente AS MESMAS 3.
(5) Depois de descarregar as 3 pecas, os numeros do medico ⛔ NAO MUDAM: os mesmos minutos validados, os mesmos pontos, a mesma posicao. Zero linhas de ponto escritas por causa de material.
$JANELA_CRITERIO"

set -x
fab demanda-pronta 33 --resumo "$RESUMO" --criterio "$CRITERIO"
