<?php
declare(strict_types=1);
date_default_timezone_set('Asia/Shanghai');require __DIR__.'/contract.php';$db=smPdo();$ai=catAiPdo();$saved=smLoad('candidates-private.json');$old=$saved['candidates']['card'];$rows=smRows($db,smTop('SELECT c.card_id,c.staff_uuid,u.id user_id,u.ai_user_id FROM ydy_staff_card c JOIN ydy_staff s ON s.uuid=c.staff_uuid JOIN ydy_user u ON u.staff_uuid=c.staff_uuid WHERE c.card_status=1 AND c.is_delete=0 AND s.is_show=1 AND u.is_delete=0 AND u.ai_user_id>0 AND u.ai_user_id<>? ORDER BY c.id',5),[$old['ai_user_id']]);$seen=[];$observed=[];$picked=null;$now=date('Y-m-d H:i:s');foreach($rows as $r){if(isset($seen[$r['ai_user_id']])){continue;}$seen[$r['ai_user_id']]=true;$n=catCount($ai,'SELECT COUNT(*) n FROM yoshop_user_subsidy WHERE user_id=? AND is_delete=0 AND expiration_start_time<=? AND expiration_end_time>=?',[$r['ai_user_id'],$now,$now]);$observed[]=['ai_user_id'=>$r['ai_user_id'],'active_subsidy_count'=>$n];if($n>100){continue;}$users=catCount($db,'SELECT COUNT(*) n FROM ydy_user WHERE staff_uuid=? AND is_delete=0',[$r['staff_uuid']]);$cards=catCount($db,'SELECT COUNT(*) n FROM ydy_staff_card WHERE card_id=? AND card_status=1 AND is_delete=0',[$r['card_id']]);$aiUser=smRows($ai,'SELECT user_id FROM yoshop_user WHERE user_id=? AND is_delete=0',[$r['ai_user_id']]);if($users===1&&$cards===1&&count($aiUser)===1){$picked=$r;break;}}
smSave('card-candidate-retry-private.json',['candidate_rows'=>count($rows),'distinct_users_checked'=>count($seen),'observed'=>$observed,'picked'=>(bool)$picked,'new_fixture_dml'=>0,'ddl'=>0]);if($picked){smSave('candidates-before-card-retry-private.json',$saved);$saved['candidates']['card']=$picked;smSave('candidates-private.json',$saved);}echo json_encode(['lane'=>getenv('SM7_LANE'),'candidate_rows'=>count($rows),'distinct_users_checked'=>count($seen),'picked'=>(bool)$picked,'new_fixture_dml'=>0,'ddl'=>0]),PHP_EOL;
