#!/usr/bin/env python3
"""Audit gerbang antrean: item mana yang MASIH layak tayang (READ-ONLY).
Gerbang: (a) desain sesuai standar 16 Sep (#122B63 / PUTIH; BUKAN #1E40AF/#0D4761),
         (b) belum pernah tayang (media di corpus Repliz sejak 16 Sep / di log),
         (c) belum tercatat di image_posting_log.json.
"""
import json, os, glob
from PIL import Image

ROOT = "/home/mantapman/.hermes/profiles/atun/workspace"
q = json.load(open(os.path.join(ROOT, "image_posting_queue.json")))
log = json.load(open(os.path.join(ROOT, "image_posting_log.json")))
corpus = json.load(open(os.path.join(ROOT, "_recon_dump_20261017.json")))
used = set()
for x in corpus:
    for m in (x.get("medias") or []):
        used.add((m.get("url") or "").split("?")[0].rsplit("/", 1)[-1])
logged = {e.get("item_id") for e in log}

OK_BG = {(18, 43, 99), (255, 255, 255)}
BAD_BG = {(30, 64, 175), (13, 71, 97), (30, 64, 175)}

rows = []
for i, it in enumerate(q):
    p0 = os.path.join(ROOT, it["paths"][0])
    bg = None
    if os.path.exists(p0):
        im = Image.open(p0).convert("RGB")
        bg = im.getpixel((5, im.size[1] // 2))
    design_ok = bg in OK_BG
    # pernah tayang? cek nama media (varian '<nama>.jpg' / '*nama*')
    stem = os.path.basename(p0).rsplit(".", 1)[0]
    hits = [u for u in used if stem.lower() in u.lower()]
    rows.append((i, it["id"], it["brand"], it["source"], it["targets"], bg, design_ok,
                 len(hits), it["id"] in logged))

print(f"{'idx':>3} {'brand':<11} {'source':<20} {'bg':<16} {'dsgn':<5} {'used':<5} {'log':<4} id")
for r in rows:
    print(f"{r[0]:>3} {r[2]:<11} {r[3]:<20} {str(r[5]):<16} {str(r[6]):<5} {r[7]:<5} {str(r[8]):<4} {r[1]}")

layak = [r for r in rows if r[6] and r[7] == 0 and not r[8]]
print("\nLAYAK TAYANG (desain ok, belum tayang, belum di log):", len(layak))
for r in layak:
    print("   ", r[0], r[1], r[2], r[5])
print("\nTIDAK LAYANG karena desain lama (#1E40AF/#0D4761):",
      sum(1 for r in rows if not r[6]))
print("TIDAK LAYAK karena sudah tayang/log:", sum(1 for r in rows if r[6] and (r[7] or r[8])))
