# -*- coding: utf-8 -*-
"""
Agile Together — Sprint Review.

A Review inspeciona o INCREMENTO com quem tem interesse no resultado e adapta o
Product Backlog. Nao e' apresentacao de status: o que vale e' o que mudou de
verdade para quem usa o resultado.

O passo le do seu quadro o que foi concluido DENTRO da janela desta Sprint (a
janela vai da data de inicio gravada no Planning N ate' o Planning N+1), monta o
prompt com entregas e pendencias, e depois grava o resumo no quadro.
"""
import caixa
import prompts
from agile_together import (cfg, get_cards, create_card, register_event,
                            entregas_da_sprint)
from runner import header, step, ok, done
from idioma import T, Tf

c = cfg()
sprint = c.get('SPRINT_ATUAL', 1)
total = c.get('TOTAL_SPRINTS', 3)

entregas = entregas_da_sprint(sprint)
sb = get_cards('sprint_backlog')
nao_concluido = [x for x in sb
                 if not (x.get('titulo', '') or '').upper().startswith('META DA SPRINT')]
meta_sprint = next(((x.get('titulo', '') or '').split(':', 1)[1].strip() for x in sb
                    if (x.get('titulo', '') or '').upper().startswith('META DA SPRINT')), "")

secoes = caixa.ler(
    ["RESUMO", "FEEDBACK"],
    f"Sprint Review — Sprint {sprint} de {total}",
    prompts.review(sprint, meta_sprint,
                   [(x.get('titulo', '') or '') for x in entregas],
                   [(x.get('titulo', '') or '') for x in nao_concluido]),
    obrigatorias=["RESUMO"],
)
resumo = caixa.secao(secoes, "RESUMO")
feedback = caixa.secao(secoes, "FEEDBACK")

header(Tf("Sprint Review — Sprint {0} de {1}", sprint, total))
step(Tf("Concluido nesta Sprint: {0} item(ns)", len(entregas)))
for card in entregas:
    print(f"     [OK]   {card.get('titulo', '')[:64]}")
step(Tf("Nao concluido: {0} item(ns)", len(nao_concluido)))
for card in nao_concluido:
    print(f"     [PEND] {card.get('titulo', '')[:64]}")

descricao = f"Sprint {sprint}\n\nRESUMO:\n{resumo}"
if feedback and feedback.strip().lower() not in ("nenhum", "nenhuma", "-", "n/a"):
    descricao += f"\n\nFEEDBACK DAS PARTES INTERESSADAS:\n{feedback}"
create_card('eventos', Tf("RESUMO Sprint {0} - Review", sprint), descricao)
ok(T("Resumo da Review gravado em Eventos Scrum"))

register_event("Sprint Review")

caixa.consumir(log=step)
done(Tf("Review da Sprint {0} concluida. Agora a Retrospectiva (sprint_retrospective.py) fecha "
        "a Sprint.", sprint))
