<?php
declare(strict_types=1);ob_start();require __DIR__.'/CompileGoodsRanking.php';$out=json_decode(ob_get_clean(),true);$assertions=0;$check=static function($ok,$why)use(&$assertions){$assertions++;if(!$ok)throw new RuntimeException($why);};$old=json_decode(file_get_contents(__DIR__.'/compiler-immutable-original-from-snapshot-'.$module.'.json'),true);$check($old['service_sha256']===($module==='store'?'f117d9a632fb1b93f9cc68c337bd77fabacac87e7939684b721f362d194c61fa':'687484fd71c67adbc501618499cb55961af1adedb97050d17f05cd615dd63039'),'Immutable actual original source golden, never current main self compare');
$normalize=static function($sql){$s=str_replace('`','',$sql);$s=preg_replace('/:ThinkBind_[A-Za-z0-9_]+/','?',$s);$s=preg_replace('/\border\b/i','ord',$s);$s=preg_replace('/\s+/',' ',trim($s));$s=str_replace([' = ','=',' "ORDER" '],['=','=',' ord '],$s);return $s;};
foreach(['dm','mysql'] as $dialect){$d=$out['dialects'][$dialect];$sql=$d['sql'][0];$bind=array_values($d['binds'][0]);$check(!preg_match('/\border\./i',$sql),'No reserved qualifier '.$dialect);$check(strpos(str_replace('`','',$sql),'yoshop_order ord ON ord.order_id')!==false,'Explicit structural safe join alias '.$dialect);$check($bind===[$tenant,20,20],'Exact tenant/paid/cancelled binds '.$dialect);$check(strpos(str_replace('`','',$sql),'o_goods.store_id')!==false,'Own qualified tenant scope '.$dialect);$check(strpos($sql,'MAX(goods_name) AS goods_name')!==false&&strpos($sql,'SUM(total_pay_price) AS sales_volume')!==false&&strpos($sql,'SUM(total_num) AS total_sales_num')!==false,'All aggregation output aliases unchanged '.$dialect);$check(strpos(str_replace('`','',$sql),'GROUP BY goods_id')!==false&&strpos(str_replace('`','',$sql),'ORDER BY sales_volume DESC')!==false&&strpos($sql,'LIMIT 10')!==false,'Group/order/limit unchanged '.$dialect);if($dialect==='mysql')$check($normalize($old['dialects']['mysql']['sql'][0])===$normalize($sql),'MySQL logical full SQL equivalent');}
echo json_encode(['module'=>$module,'assertions'=>$assertions,'PDO_opens'=>0,'SQL_executed'=>0,'actual_compiled'=>$out],JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES),"\n";
