#!/usr/bin/env python3
import json,hashlib,sys,datetime
from pathlib import Path
PROJECT='gacmai_20260718_091744';ROOT=Path('/data/video-pipeline/GacMaiAudio/project')/PROJECT;A=ROOT/'artifacts'
def sha(p):return hashlib.sha256(Path(p).read_bytes()).hexdigest()
def main():
 story=A/'story_canonical.json';auth=A/'production_authorization.json'
 assert story.exists() and auth.exists()
 d=json.loads(story.read_text());a=json.loads(auth.read_text());sh=sha(story)
 assert a.get('status')=='passed' and a.get('story_sha256')==sh and a.get('tts_authorized') is True
 seg=[]
 for part in d['parts']:
  for q in part['paragraphs']:
   text=q['text'].strip();assert text
   seg.append({'id':f"P{part['part']:02d}_{q['ordinal']:03d}",'part':part['part'],'ordinal':q['ordinal'],'text':text,'text_sha256':hashlib.sha256(text.encode()).hexdigest()})
 assert len(seg)==144 and [x['ordinal'] for x in seg]==list(range(1,145))
 projection={'status':'passed','project_id':PROJECT,'story_sha256':sh,'segment_count':144,'segments':seg,'created_at':datetime.datetime.now(datetime.timezone.utc).isoformat()};p=A/'tts_projection.json';p.write_text(json.dumps(projection,ensure_ascii=False,indent=2)+'\n');print(json.dumps({'status':'passed','story_sha256':sh,'segment_count':144,'projection_sha256':sha(p)}))
if __name__=='__main__':main()
