import pathlib,json
from PIL import Image,ImageDraw,ImageFont
import numpy as np
root=pathlib.Path('/tmp/lead-32924-r1/evidence-capture')
run=pathlib.Path((root/'latest-capture.txt').read_text())
font=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf',22)
small=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf',16)
stats=[]
for row in ['R1','R2','R3','R4']:
 for stage in ['initial','final']+(['inline'] if row=='R1' else [])+(['dismissed'] if row in ['R3','R4'] else []):
  a=np.array(Image.open(run/f'{row}-before-{stage}.png').convert('RGB')).astype(np.int16)
  b=np.array(Image.open(run/f'{row}-after-{stage}.png').convert('RGB')).astype(np.int16)
  delta=np.abs(a-b);mx=delta.max(axis=2);changed=mx>0
  ys,xs=np.where(changed)
  stat={'row':row,'stage':stage,'pixels':int(changed.sum()),'fraction':float(changed.mean()),'bbox':None if not len(xs) else [int(xs.min()),int(ys.min()),int(xs.max()),int(ys.max())],'threshold16Pixels':int((mx>16).sum())}
  stats.append(stat)
  for label,t in [('diff0',0),('diff16',16)]:
   mask=mx>t
   if t==0:
    out=np.clip(delta*32,0,255).astype(np.uint8)
   else:
    base=(a*.22).astype(np.uint8);base[mask]=[255,0,180];out=base
   Image.fromarray(out).save(run/f'{row}-{stage}-{label}.png')
  if stage=='final':
   imgs=[Image.open(run/f'{row}-before-final.png'),Image.open(run/f'{row}-after-final.png'),Image.open(run/f'{row}-final-diff0.png'),Image.open(run/f'{row}-final-diff16.png')]
   w,h=imgs[0].size
   labels=['Before · bcee0f5d28','After · a72fee8d81','Diff0 · absolute RGB delta ×32','DiffT · max RGB delta >16/255']
   sheet=Image.new('RGB',(w*2,(h+60)*2+55),'#e7e9ee');d=ImageDraw.Draw(sheet)
   d.text((16,13),f'{row} · {w}×{h} · '+('dark' if row in ['R1','R3'] else 'light')+(' · /pull-requests (approved route correction)' if row=='R4' else ''),font=font,fill='black')
   for i,img in enumerate(imgs):
    x=(i%2)*w;y=55+(i//2)*(h+60)
    d.text((x+16,y+14),labels[i],font=small,fill='black');sheet.paste(img,(x,y+60))
   sheet.save(run/f'{row}-sheet.png')
(root/'diff-stats.json').write_text(json.dumps(stats,indent=2))
print(json.dumps(stats,indent=2))
