<?php
require_once __DIR__.'/common.php';require_once __DIR__.'/Native.php';
function pp_ai(){pp_sources('ai');$root=pp_base().'/source/ai';define('TP_ENV','poc');define('BUSINESS','aizhct');define('ENTERPRISE_NO','10001');require $root.'/vendor/autoload.php';spl_autoload_register(static function($class)use($root){if(preg_match('/printer|MQTT|BaiduDishes|\\\\Face$|storage\\\\Driver|QwRobot|GuzzleHttp\\\\Client|Alipay\\\\|OSS\\\\|EasyWeChat\\\\/i',$class))throw new RuntimeException('External SDK denied');foreach(['app\\'=>'app/','cores\\'=>'cores/']as $p=>$d)if(strpos($class,$p)===0){$f=$root.'/'.$d.str_replace('\\','/',substr($class,strlen($p))).'.php';if(is_file($f))require $f;}},true,true);$app=new \think\App($root);$app->setEnvName('poc');$app->setRuntimePath(pp_private().'/ai-runtime/');$app->initialize();$app->config->set(['default'=>'file','stores'=>['file'=>['type'=>'File','path'=>pp_private().'/ai-cache/','prefix'=>'','expire'=>0]]],'cache');$app->instance('cache',new \think\Cache($app));$log=$app->config->get('log');$log['close']=true;foreach($log['channels']as &$c)$c['close']=true;unset($c);$app->config->set($log,'log');$app->instance('log',new \think\Log($app));$app->log->channel()->close();require_once __DIR__.'/ai-connection.php';$cfg=$app->config->get('database');$connections=[];foreach(['mysql'=>'AI','mysql_zhct'=>'ZHCT']as $name=>$db){$c=$cfg['connections'][$name];$c['type']=getenv('PP_SIDE')==='C'?'\\'.PPDm::class:'\\'.PPMysql::class;foreach(['HOST'=>'hostname','PORT'=>'hostport','SCHEMA'=>'database','USER'=>'username','PASSWORD'=>'password','CHARSET'=>'charset','PREFIX'=>'prefix']as $k=>$to)$c[$to]=getenv('POC_'.$db.'_'.$k);$c['debug']=false;$c['trigger_sql']=true;$c['break_reconnect']=false;$c['fields_cache']=false;$c['dsn']='';$c['params']=[];$connections[$name]=$c;}$cfg['default']='mysql';$cfg['connections']=$connections;$app->config->set($cfg,'database');$app->db->setConfig($app->config);$app->env->set('store.host',['prepay.code-scan.invalid'=>2147001111]);$app->env->set('redis.hostname','');return $app;}
function pp_store(){pp_sources('store');$root=getenv('PP_STORE_PARENT');pp_need(in_array($root,['/tmp/zhct-http-store-mysql.dQTTBP','/tmp/zhct-dm-poc-20260928.fcpiiN/store'],true),'Exact original Store parent');define('TP_ENV','local');define('BUSINESS','');define('APP_PATH',pp_base().'/source/store/');define('ROOT_PATH',$root.'/');define('RUNTIME_PATH',pp_private().'/store-runtime/');$cfg=(static function($f){return require $f;})($root.'/application/database.php');$ai=$cfg;foreach(['hostname','hostport','database','username','password','prefix']as $k)$ai[$k]=$cfg['ai_zhct'][$k]??$cfg[$k];foreach([['ZHCT',$cfg],['AI',$ai]]as [$db,$c])foreach(['hostname'=>'HOST','hostport'=>'PORT','database'=>'SCHEMA','username'=>'USER','password'=>'PASSWORD','prefix'=>'PREFIX']as $k=>$v)pp_need((string)($c[$k]?:($k==='hostport'?3306:''))===(string)getenv('POC_'.$db.'_'.$v),'Original Store config equals approved two-client env '.$db.'.'.$k);require $root.'/external_stubs.php';if(!function_exists('json')){function json($data=[],$code=200,array $header=[],$options=[]){return \think\Response::create($data,'json',$code,$header,$options);}}require $root.'/thinkphp/base.php';\think\App::initCommon();\think\Log::init(['type'=>'File','path'=>pp_private().'/store-safe-log/','level'=>['no_raw_application_log']]);\think\Config::set(['type'=>'File','path'=>pp_private().'/store-cache/','prefix'=>'CDXPPFORM11'],'cache');\think\Config::set('redis',[]);\think\Config::set($cfg,'database');\think\Db::clear();foreach([['ZHCT',null],['AI',null]]as [$db,$ignore]){$conn=$db==='ZHCT'?\think\Db::connect():get_ai_db();$opts=pp_options();$opts[PDO::ATTR_STATEMENT_CLASS]=[PPStatement::class,[$db]];$p=new PPPDO(pp_dsn($db),getenv('POC_'.$db.'_USER'),getenv('POC_'.$db.'_PASSWORD'),$opts);$p->db=$db;foreach(['links'=>[0=>$p],'linkID'=>$p,'attrCase'=>PDO::CASE_LOWER]as $name=>$value){$r=new ReflectionProperty(\think\db\Connection::class,$name);$r->setAccessible(true);$r->setValue($conn,$value);}}return true;}
