<?php
declare(strict_types=1);require __DIR__.'/native.php';require __DIR__.'/CoreGate.php';require __DIR__.'/cases.php';CoreGate::$scenario='W1_WELLAND_ADD';CoreGate::$started=time();$checks=[];$test=static function($name,$ok,$fn)use(&$checks){$got=true;try{$fn();}catch(Throwable $e){$got=false;}$checks[$name]=$got===$ok;ck($checks[$name],$name);};$a=CoreGate::a();$fields=['ai_user_id'=>$a['user_id'],'event_type'=>'measurement','start_time'=>date('Y-m-d H:i:s'),'end_time'=>date('Y-m-d H:i:s'),'source_platform'=>'direct_device','vendor'=>'welland','device_type'=>'body_scale','device_model'=>'CDXSCALE11_WL','raw_hash'=>null,'business_context'=>'health','is_valid'=>1,'created_at'=>date('Y-m-d H:i:s')];$bind=[];$columns=[];$tokens=[];foreach($fields as $k=>$v){$columns[]=$k;if($v===null)$tokens[]='NULL';else{$tokens[]=':'.$k;$bind[$k]=[$v,is_int($v)?1:2];}}$sql='INSERT INTO ydy_measurement_session ('.implode(',',$columns).') VALUES ('.implode(',',$tokens).')';$test('source_exact_session_INSERT',true,static function()use($sql,$bind){CoreGate::plan('ZHCT',$sql,$bind);});$bad=$bind;$bad['ai_user_id'][0]++;$test('foreign_user_session_reject',false,static function()use($sql,$bad){CoreGate::plan('ZHCT',$sql,$bad);});$bad=$bind;$bad['vendor'][0]='other';$test('foreign_vendor_reject',false,static function()use($sql,$bad){CoreGate::plan('ZHCT',$sql,$bad);});foreach(['DELETE FROM ydy_health_record','CREATE TABLE x(a int)','SELECT * FROM ydy_staff'] as $i=>$q)$test('unknown_DDL_data_'.$i,false,static function()use($q){CoreGate::kind('ZHCT',$q);});$test('empty_metadata_reject',false,static function(){CoreGate::plan('ZHCT',CoreGate::COLUMNS,['p'=>['',2]]);});$literal=[];foreach(cases() as $c)if($c['method']==='POST'){$form=json_decode($c['body_raw'],true)['form'];foreach(['weight','height','bmi'] as $f)ck(is_float($form[$f]),'Original client JSON number double');$literal[$c['label']]=['form'=>$form,'raw_json_bytes'=>json_encode($form,JSON_UNESCAPED_UNICODE),'message'=>$c['expected_message'],'data'=>[]];}saveOnce('expected-literals.json',$literal);saveOnce('pure-gate-result.json',['checks'=>$checks,'client_number_types'=>true,'original_encode_raw_json_frozen'=>true,'SQL'=>0,'HTTP'=>0,'DML'=>0]);echo json_encode(['lane'=>$lane,'pure_checks'=>count($checks),'SQL'=>0,'HTTP'=>0,'DML'=>0]),"\n";
