duration = int((datetime.fromisoformat(data['punches']['out']) - datetime.fromisoformat(data['punches']['in'])).total_seconds() / 60)
check('提取时间与原始打卡一致', output['start'] == data['punches']['in'] and output['end'] == data['punches']['out'])
check('程序独立计算跨夜时长为488分钟', duration == 488)
check('缺失打卡只标待核对，不计算工资', output['missing_out_status'] == 'needs_review')
result = {'duration_minutes': duration, 'missing_out_status': output['missing_out_status'], 'scope': 'synthetic record completeness only; no payroll or personnel decisions'}
