<?php
require '/workspace/zhct/zhctproject/store/env.php';define('APP_PATH','/workspace/zhct/zhctproject/store/application/');require '/workspace/zhct/zhctproject/store/thinkphp/base.php';set_exception_handler(static function(Throwable $e):void{echo json_encode(['passed'=>false,'class'=>get_class($e),'message'=>$e->getMessage()]),"\n";exit(2);});$checks=0;$assert=static function($a,$b,string $why)use(&$checks):void{++$checks;if($a!==$b)throw new RuntimeException($why);};
foreach(['SportEducation','SportExperience']as $class){require '/tmp/cdx-store-sport-archive-20261010/source/application/p/logic/'.$class.'.php';$method=new ReflectionMethod('app\\p\\logic\\'.$class,'normalizeCreateBy');$method->setAccessible(true);foreach(['',str_repeat('a',32),'11111111-2222-3333-4444-555555555555',str_repeat('中',33),str_repeat('中',32)]as $value){$expected=mb_substr($value,0,32,'UTF-8');$assert($method->invoke(null,$value,true),$expected,'DM source varchar32 characters');$assert($method->invoke(null,$value,false),$value,'MySQL original even36');}$payload=['uuid'=>'unchanged-main-uuid','staff_uuid'=>'unchanged-staff-uuid','demo'=>'中文','create_by'=>'11111111-2222-3333-4444-555555555555'];$normalized=$payload;$normalized['create_by']=$method->invoke(null,$payload['create_by'],true);unset($normalized['create_by'],$payload['create_by']);$assert($normalized,$payload,'No other payload fields');}
echo json_encode(['passed'=>true,'checks'=>$checks]),"\n";
