# -*- coding: utf-8 -*-
"""Record this bounded audit window once; no MR/deploy actions."""
from pathlib import Path
from datetime import datetime,timezone
import sys,json,csv
HERE=Path(__file__).resolve().parent
sys.path.insert(0,str(HERE.parent/'yunxiao'))
from transport import api,PREFIX
state=json.loads((HERE.parent/'yunxiao/items.sanitized.json').read_text());owner='635755195dc8531eeb2e33d9'
marker='20261015-RECEIPT-STABILITY-v1';planfile=HERE/'effort-plan.sanitized.json'
if planfile.exists():p=json.loads(planfile.read_text())
else:
 with (HERE/'task-metrics.csv').open() as f:metrics=next(csv.DictReader(f))
 start=datetime.fromisoformat(metrics['intake_at']);end=datetime.now(timezone.utc)
 seconds=(end-start).total_seconds()
 p={'actualTime':round(seconds/3600,1),'gmtStart':int(start.timestamp()*1000),'gmtEnd':int(end.timestamp()*1000),'seconds':round(seconds,3),'description':marker+' 上线前稳定性复核：开发库7项909断言；9模块395项执行通过17跳过；ai_api17脚本与钱包契约；异常注入2项。按本轮19:30:32起有效执行窗口，不叠加并行角色，早期bootstrap阅读未计。'}
 planfile.write_text(json.dumps(p,ensure_ascii=False,indent=2)+'\n')
path=PREFIX+'/workitems/'+state['tasks']['validation']['id']
rows=api('GET',path+'/effortRecords');found=[r for r in rows if marker in (r.get('description') or '')]
if not found:api('POST',path+'/effortRecords',{**{k:v for k,v in p.items() if k!='seconds'},'operatorId':owner})
rows=api('GET',path+'/effortRecords');found=[r for r in rows if marker in (r.get('description') or '')]
assert len(found)==1 and found[0]['owner']['id']==owner and float(found[0]['actualTime'])==p['actualTime']
parent_path=PREFIX+'/workitems/'+state['parent']['id']
parent=api('GET',parent_path);task=api('GET',path)
fields=lambda x:{f['fieldId']:f['values'] for f in x.get('customFieldValues',[]) if f['fieldId'] in ['101587','sumActualLaborHour']}
readback={'record':{k:found[0].get(k) for k in ['id','actualTime','gmtStart','gmtEnd','owner','description']},'parent_fields':fields(parent),'validation_fields':fields(task)}
content=marker+'\n本轮稳定性复核：开发库7项909断言通过，新保留7档口213订单217明细；相关store九模块分进程395项执行通过17可选跳过、ai_api17脚本与钱包6项43断言通过。打印策略查询/平台抛异常均恢复待打印且交易字段不变。未发现本次新增P0/P1；同进程两处旧SQLite测试连接污染已定位。原同步云打印30秒网络等待仍在，新增堂食打印场景需现场响应耗时核验，不能承诺慢网时零延迟。业务SHA不变，MR由用户自提，未部署。报告：work_store/20261015-standard-stall-receipt-control/stability-audit/report.md。'
for itempath in [path,parent_path]:
 rows=api('GET',itempath+'/comments') or []
 if not any(marker in str(r.get('content','')) for r in rows):api('POST',itempath+'/comments',{'content':content})
 rows=api('GET',itempath+'/comments') or []
 assert sum(marker in str(r.get('content','')) for r in rows)==1
(HERE/'effort-readback.sanitized.json').write_text(json.dumps(readback,ensure_ascii=False,indent=2)+'\n')
print(json.dumps({'new_actual':p['actualTime'],'owner':found[0]['owner']['name'],'parent':readback['parent_fields'],'validation':readback['validation_fields'],'audit_comments_verified':True},ensure_ascii=False))
