<?php
namespace think {class Config {public static $type='mysql';public static function get($key){return $key==='database.type'?self::$type:null;}}}
namespace {
$file=$argv[1]??'';require $file;$class=new \ReflectionClass(\app\p\logic\AgentConversationLog::class);$logic=$class->newInstanceWithoutConstructor();$method=$class->getMethod('normalizeRow');$method->setAccessible(true);$checks=[];
$values=[null,'',17,'2001-01-01 08:00:00','2001-01-01 08:00:00.0','2001-01-01 08:00:00.00','2001-01-01 08:00:00.000','2001-01-01 08:00:00.0000','2001-01-01 08:00:00.00000','2001-01-01 08:00:00.000000','2001-01-01 08:00:00.000001','2001-01-01 08:00:00.123456','2001-01-01 08:00:00.0000000','2001-01-01T08:00:00.000000','2026-02-29 08:00:00.000000','0000-01-01 08:00:00.000000','2024-02-29 24:00:00.000000','2024-02-29 23:60:00.000000','2024-02-29 23:59:60.000000','2024-02-29 23:59:59.000000',"2001-01-01 08:00:00.000000\n",'2001-13-01 08:00:00.000000'];
foreach(['mysql','app\\cores\\database\\Dm','\\app\\cores\\database\\Dm']as $type){\think\Config::$type=$type;$isDm=$type!=='mysql';foreach($values as $i=>$value){$row=['id'=>'68','user_name'=>'数据库兼容测试','current_route'=>'/system/agentQuestionRecords','question'=>null,'answer'=>'完整中文内容','matched'=>'0','source'=>'cdx_test','create_time'=>$value];$expected=$row;$expected['id']=68;$expected['matched']=0;if($isDm&&(($i>=4&&$i<=9)||$i===19))$expected['create_time']=substr($value,0,19);$checks[$type.'_time_'.$i]=$method->invoke($logic,$row)===$expected;}$row=['id'=>'68','matched'=>'0','question'=>null];$checks[$type.'_missing_time_preserves_shape']=$method->invoke($logic,$row)===['id'=>68,'matched'=>0,'question'=>null];}
$failed=array_keys(array_filter($checks,static function($v){return !$v;}));echo json_encode(['total'=>count($checks),'failed'=>$failed]),"\n";exit($failed?1:0);
}
