# -*- coding: utf-8 -*-
"""
Agile Together — menu do curso (voce nunca digita comando no terminal).

Como abrir:
  Windows: clique duas vezes em  Iniciar.bat
  Mac:     clique com o botao direito em  Iniciar.command  -> Abrir

Escolha um numero e tecle Enter. Voce NUNCA edita um arquivo .py: nos passos que
usam IA, a resposta entra pelo cartao "0. Caixa de entrada" do seu quadro.

O CICLO DE UM PASSO COM IA
  1. escolha o passo aqui   -> ele entrega o prompt (area de transferencia + tela)
  2. cole na sua IA         -> ela responde
  3. cole a resposta no cartao "0. Caixa de entrada" do quadro
  4. escolha o MESMO passo de novo -> ele le o quadro e segue

Rodar o passo duas vezes e' seguro: sem resposta no cartao, ele so' devolve o
prompt de novo. A IA propoe, VOCE decide.
"""
import os
import subprocess
import sys
from idioma import T, Tf

try:
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")
except Exception:
    pass

AQUI = os.path.dirname(os.path.abspath(__file__))

# (tecla, rotulo, script, usa_ia)
OPCOES = [
    ("1", T("Configurar o quadro (uma vez, no comeco)"), "configurar_board.py", False),
    ("2", T("Meta do Produto + Product Backlog"), "criar_backlog.py", True),
    ("3", T("Refinar o backlog (prioridade, pontos, aceitacao)"), "refinar_backlog.py", True),
    ("4", T("Revisar o backlog (reescrever e acrescentar itens)"), "atualizar_backlog.py", True),
    ("5", T("Decompor um item em tarefas"), "refinar_card.py", True),
    ("6", T("Sprint Planning"), "sprint_planning.py", True),
    ("7", T("Daily Scrum"), "daily_scrum.py", True),
    ("8", T("Sprint Review"), "sprint_review.py", True),
    ("9", T("Sprint Retrospective (fecha a Sprint)"), "sprint_retrospective.py", True),
    ("10", T("OKR Check-in — ver os meus 4 KRs"), "verificar_krs.py", False),
    ("11", T("Apresentacao final e licoes aprendidas"), "apresentacao_final.py", True),
    ("12", T("Registrar um impedimento"), "registrar_impedimento.py", False),
    ("13", T("Criar um cartao avulso"), "criar_card.py", False),
    # C — nao e' um passo: serve a QUALQUER um deles. Cole DUAS respostas na Caixa de
    # entrada (a mesma pergunta em duas IAs) e ele monta o prompt que faz uma terceira
    # comparar e propor uma so'. Sem ele, colar duas respostas nao da' erro: a segunda
    # sobrescreve a primeira em silencio, e o aluno acha que comparou.
    ("C", T("Consolidar as respostas de DUAS IAs (cole as 2 na Caixa de entrada)"),
     "consolidar.py", True),
]


def _cabecalho():
    try:
        from env import cfg, get_int
        c = cfg()
        sprint = get_int(c, "SPRINT_ATUAL", 1)
        total = get_int(c, "TOTAL_SPRINTS", 3)
        objetivo = (c.get("OBJETIVO") or "").strip()
        linha = "  " + Tf("Sprint {0} de {1}", sprint, total)
        if objetivo and not objetivo.upper().startswith("ESCREVA"):
            linha += "   ·   " + Tf("Objetivo: {0}", objetivo[:52])
        return linha
    except Exception:
        return ""


def menu():
    while True:
        print()
        print("=" * 72)
        print(T("  AGILE TOGETHER — powered by AI"))
        cab = _cabecalho()
        if cab:
            print(cab)
        print("=" * 72)
        for tecla, rotulo, _s, usa_ia in OPCOES:
            marca = T(" (usa a sua IA)") if usa_ia else ""
            print(f"  {tecla:>2}. {rotulo}{marca}")
        print("   0. " + T("Sair"))
        print("=" * 72)
        escolha = input(T("  Numero do passo (ou C para consolidar duas IAs): ")).strip()
        if escolha.lower() in ("0", "", "q", "sair"):
            print(T("\n  Ate' a proxima.\n"))
            return 0
        # A tecla C aceita 'c' minusculo: ninguem devia ter de acertar a caixa alta.
        alvo = next((o for o in OPCOES if o[0].lower() == escolha.lower()), None)
        if not alvo:
            print(T("\n  Tecla fora da lista."))
            continue
        script = os.path.join(AQUI, alvo[2])
        if not os.path.exists(script):
            print(Tf('\n  Arquivo nao encontrado: {0}', alvo[2]))
            continue
        print()
        subprocess.call([sys.executable, script], cwd=AQUI)
        input(T("\n  [Enter] para voltar ao menu "))


if __name__ == "__main__":
    sys.exit(menu())
