"""Revalida URLs especificas no alvo (8.3) contra a rodada base (7.4) - ciclo RED/GREEN das correcoes de runtime.

Uso:
  python revalida.py /site/index /analise-regulatoria/index ...
  python revalida.py --de-divergencias crawl-alvo83.json   # todas as URLs divergentes de uma rodada
Sai com codigo 1 se alguma URL continuar divergente.
"""
import argparse
import json
import sys
from pathlib import Path

from compara import classificar
from config import SAIDA
from crawl import rodar

BASE = Path(r"C:\projetos\php83\logs\crawl-base74.final.json")


def main():
    ap = argparse.ArgumentParser()
    ap.add_argument("urls", nargs="*")
    ap.add_argument("--de-divergencias")
    ap.add_argument("--rotulo", default="alvo83")
    a = ap.parse_args()
    base = {r["url"]: r for r in json.loads(BASE.read_text(encoding="utf8"))["registros"]}
    urls = list(a.urls)
    if a.de_divergencias:
        for r in json.loads(Path(a.de_divergencias).read_text(encoding="utf8"))["registros"]:
            if classificar(base[r["url"]], r)["veredito"] != "igual":
                urls.append(r["url"])
    regs = rodar(a.rotulo, None, so_urls=urls, sufixo="-revalida")
    ruins = 0
    for r in regs:
        c = classificar(base[r["url"]], r)
        if c["veredito"] != "igual":
            ruins += 1
            print(f"DIVERGE {base[r['url']]['status']}->{r['status']} {r['url']} | {c['motivos'][0][:300]}")
        else:
            print(f"igual   {r['status']} {r['url']}")
    print(f"{len(regs) - ruins}/{len(regs)} iguais")
    sys.exit(1 if ruins else 0)


if __name__ == "__main__":
    main()
