#!/usr/bin/env python3
from pathlib import Path
import json, hashlib, datetime
r = Path('/data/video-pipeline/GacMaiAudio/project/gacmai_20260718_075153')
a = r / 'artifacts'
story_path = a / 'story_canonical.json'
d = json.loads(story_path.read_text())
h = hashlib.sha256(story_path.read_bytes()).hexdigest()
segments = []
for part in d['parts']:
    part_no = int(part['part_number'])
    for paragraph in part['paragraphs']:
        ordinal = int(paragraph['ordinal'])
        text = paragraph['text']
        segments.append({
            'id': 'P{:02d}D{:03d}'.format(part_no, ordinal),
            'part': part_no,
            'ordinal': ordinal,
            'text': text,
            'text_sha256': hashlib.sha256(text.encode()).hexdigest(),
        })
assert len(segments) == 144
projection = {'status': 'passed', 'project_id': 'gacmai_20260718_075153', 'story_sha256': h, 'segments': segments}
(a / 'tts_projection.json').write_text(json.dumps(projection, ensure_ascii=False, indent=2) + '\n')
lock = {
    'tts_locked': False,
    'authorized_story_sha256': h,
    'production_authorization_sha256': hashlib.sha256((a / 'production_authorization.json').read_bytes()).hexdigest(),
    'opened_at': datetime.datetime.now(datetime.timezone.utc).isoformat(),
}
(a / 'tts_spend_lock.json').write_text(json.dumps(lock, ensure_ascii=False, indent=2) + '\n')
print(json.dumps({'segments': len(segments), 'projection_sha256': hashlib.sha256((a / 'tts_projection.json').read_bytes()).hexdigest()}))
