"""
Project Together — powered by AI: CONFIGURAR os campos de risco (dropdowns). Rode 1 vez.

Cria no seu quadro os campos personalizados dos riscos — Probabilidade e Impacto como
menus de SELEÇÃO (dropdowns), Prioridade como número (o python calcula), Dono como menu
com a sua EQUIPE — e semeia os valores a partir do que já está escrito nos cartões. A
partir daí, corrigir um risco é escolher no menu do cartão: sem texto livre, e a
Prioridade se calcula sozinha (Probabilidade × Impacto).

Os Passos 3 e 5 já fazem isso sozinhos; este script serve para preparar um quadro que já
existe (como o seu, se você começou antes desta versão) ou reconfigurar quando quiser.

Execute: Ctrl+F5 no VS Code, ou pelo menu.
"""
import campos
import quadro
from env import cfg, require
from runner import header, ok, step, warn
from idioma import T, Tf


def main():
    c = cfg()
    require(c, "PROJECTADM_TOKEN", "BOARD_ID")
    abordagem = quadro.abordagem_do_env() or quadro.abordagem_do_quadro(c)
    ids = quadro.garantir_listas(abordagem, log=lambda _m: None)
    header(T("Project Together — Campos de risco (dropdowns)"))
    print()

    if not ids.get("RISCOS"):
        warn(T("Ainda não sei a sua abordagem (Preditiva ou Ágil), então nem sei qual é a sua "
             "lista de riscos. Rode o Passo 1 primeiro (ele escolhe a abordagem e monta as "
             "listas) e depois volte aqui."))
        return

    # Os campos nascem no PASSO 3, junto com os pontos de atenção — nunca antes: campo
    # personalizado é do QUADRO e apareceria, vazio, em todo cartão de toda lista. Sem
    # risco nenhum ainda, dizer isso é mais honesto do que criar menus para avaliar o nada.
    if not campos.ha_pontos_de_atencao(ids):
        warn(T("A sua lista de riscos ainda está vazia — então não há o que avaliar, e os "
             "campos ainda não têm por que existir (eles apareceriam vazios em TODO cartão "
             "do quadro). Rode o Passo 3 (Analisar os riscos): ele cria os pontos de atenção "
             "e os campos de uma vez, já com a sua equipe no menu Dono."))
        return

    cps = campos.garantir_campos_risco(ids, log=step)
    if not cps:
        warn(T("Este servidor/quadro não expôs os campos personalizados — o curso segue no "
             "modo texto (você escreve Probabilidade/Impacto na descrição do cartão). "
             "Nada quebra; só não há dropdowns."))
        return

    semeados = campos.semear(ids, cps, log=step)
    aplicados = campos.aplicar(ids, cps, log=step)
    print()
    ok(Tf("{0} campo(s) no quadro: {1}.", len(cps), ', '.join(cps)))
    ok(Tf("{0} risco(s) com os campos preenchidos a partir do texto; {1} sincronizado(s).", semeados, aplicados))
    print()
    print(T("Agora, para corrigir um risco: filtre o quadro pela etiqueta 🔎 Revisar, abra o"))
    print(T("cartão e escolha Probabilidade, Impacto e Dono nos MENUS — a Prioridade se"))
    print(T("calcula sozinha. Rode o Passo 5 para trazer as suas escolhas para o plano."))


if __name__ == "__main__":
    main()
