"""
Project Together — powered by AI: GERAR OS MEUS DOCUMENTOS (Word/Excel).

O QUE FAZ
  Le o SEU QUADRO e escreve os documentos do projeto na pasta _saida/documentos/,
  no visual do template do curso — sem instalar nada e sem voce copiar nada. Voce
  responde no quadro; o Python escreve o documento.

  Por ora: o Termo de Abertura do Projeto (Passo 1). Os demais artefatos da abordagem
  preditiva (Dicionario da EAP, Registro de mudancas, Status Report, Licoes
  Aprendidas...) chegam com os proximos passos, por este mesmo botao.

QUANDO USAR
  Os documentos ja sao gerados sozinhos quando voce conclui cada passo. Rode isto
  quando quiser REGENERAR — por exemplo, depois de editar um cartao no quadro.

SO' LEITURA: nao mexe na estrutura do seu quadro. Usa as listas ja salvas no .env.
"""
from env import cfg, require
from runner import header, done, ok, warn, step
import quadro
import artefatos
from idioma import T, Tf

c = cfg()
require(c, "PROJECTADM_TOKEN", "BOARD_ID")
header(T("Gerar os documentos do seu projeto"))

abordagem = quadro.abordagem_do_env() or quadro.abordagem_do_quadro(c)

# Le os IDs de lista JA salvos no .env (Passo 1 os gravou). Nao chamamos garantir_listas
# aqui de proposito: gerar um documento nao pode reestruturar o seu quadro.
#
# SO' AS LISTAS DA SUA ABORDAGEM (Eduardo, 17/08/2026, board 270). O .env acumula os
# LIST_* de tudo o que o quadro ja teve — inclusive listas de OUTRA abordagem (EXECUCAO e
# PRONTO sao do agil) e listas que voce apagou no ProjectAdm. Passar o conjunto inteiro
# fazia esta tecla ver um quadro que nao existe: o id morto do LIST_EXECUCAO derrubava o
# Status Report com "404: Lista nao encontrada". Filtrar pela abordagem faz a tecla D
# enxergar exatamente as listas que os passos enxergam — sem criar nada.
_da_abordagem = {chave for chave, _titulo in quadro.listas_do_quadro(abordagem)}
ids = {k[5:]: int(v) for k, v in c.items()
       if k.startswith("LIST_") and str(v).strip().isdigit()
       and k[5:] in _da_abordagem}
if "INPUTS" not in ids:
    warn(T("ainda não encontrei o seu quadro. Rode o Passo 1 primeiro — ele monta o "
         "quadro e escreve o seu Termo de Abertura."))
    raise SystemExit(0)

step(T("Lendo o seu quadro e escrevendo os documentos..."))
gerados = artefatos.gerar_disponiveis(ids, abordagem=abordagem, log=warn)

if not gerados:
    warn(T("ainda não há o que gerar — responda ao menos a justificativa (cartão 1.1) "
         "no seu quadro e rode o Passo 1."))
    raise SystemExit(0)

print()
for rotulo, caminho in gerados:
    ok(rotulo)
    print(f"         {caminho}")
done(Tf("{0} documento(s) na pasta _saida/documentos/.", len(gerados)))
print(T("  Abra a pasta _saida/documentos/ (ao lado dos scripts) para ver os arquivos —"))
print(T("  cada um no visual do template do curso, pronto para compartilhar ou imprimir."))
