<?php
declare(strict_types=1);require __DIR__.'/contract.php';$db=smPdo();$c=smLoad('candidates-private.json')['candidates']['card'];
$sql="SELECT IFNULL(c.card_status,5) AS card_status, IFNULL(c.cost,'') AS cost, IFNULL(c.create_time,'') AS issue_time FROM ydy_staff s LEFT JOIN ydy_staff_card c ON c.staff_uuid=s.uuid AND c.is_delete=0 AND c.is_cancel=0 WHERE s.is_show=1 AND c.card_id LIKE ? ORDER BY s.id DESC";
$s=$db->prepare($sql);$s->execute(['%'.$c['card_id'].'%']);$rows=$s->fetchAll(PDO::FETCH_ASSOC);if(count($rows)!==1){throw new RuntimeException('Frozen card projection no longer unique');}$types=[];foreach(array_change_key_case($rows[0],CASE_LOWER) as $name=>$value){$types[$name]=gettype($value);}$meta=[];for($i=0;$i<$s->columnCount();$i++){$m=$s->getColumnMeta($i);$meta[]=['name'=>$m['name']??null,'native_type'=>$m['native_type']??null,'pdo_type'=>$m['pdo_type']??null];}
$out=['lane'=>getenv('SM7_LANE'),'projection_types'=>$types,'projection_metadata'=>$meta,'exact_projection_rows_sha256'=>hash('sha256',serialize($rows)),'database_dml_ddl'=>0];smSave('card-projection-probe-private.json',$out);echo json_encode($out),PHP_EOL;
