<?php
declare(strict_types=1);

// Exactly two SELECT-only connections to the isolated C customer's DM8 instances.
if (getenv('POC_DIALECT') !== 'dm' || getenv('POC_AI_PORT') !== '5238'
    || getenv('POC_PORT') !== '5237' || getenv('POC_AI_SCHEMA') !== 'AIZHCT_APP'
    || getenv('POC_SCHEMA') !== 'ZHCT_APP') {
    throw new RuntimeException('C database identity drift');
}
$ai = new PDO('dm:host=127.0.0.1;port=5238;schema=AIZHCT_APP',
    getenv('POC_AI_USER'), getenv('POC_AI_PASSWORD'),
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_LOWER]);
$store = new PDO('dm:host=127.0.0.1;port=5237;schema=ZHCT_APP',
    getenv('POC_USER'), getenv('POC_PASSWORD'),
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_LOWER]);
if ($ai->query("SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') FROM DUAL")->fetchColumn() !== 'AIZHCT_APP'
    || $store->query("SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') FROM DUAL")->fetchColumn() !== 'ZHCT_APP') {
    throw new RuntimeException('C schema mismatch');
}
$aiMatches = $ai->query("SELECT USER_ID,NICK_NAME,STORE_ID FROM YOSHOP_USER"
    . " WHERE NICK_NAME LIKE 'CDXPARMOB%' AND IS_DELETE=0 FETCH FIRST 10 ROWS ONLY")
    ->fetchAll(PDO::FETCH_ASSOC);
$mapped = [];
foreach ($aiMatches as $user) {
    $aiStaffQuery = $ai->prepare('SELECT COUNT(*) FROM YOSHOP_STAFF WHERE USER_ID=? AND IS_DELETE=0');
    $aiStaffQuery->execute([(int)$user['user_id']]);
    $aiStaffCount = (int)$aiStaffQuery->fetchColumn();
    $query = $store->prepare('SELECT ID,ACCOUNT,IS_DELETE FROM YDY_USER WHERE AI_USER_ID=?');
    $query->execute([(int)$user['user_id']]);
    $storeRows = $query->fetchAll(PDO::FETCH_ASSOC);
    $staffQuery = $store->prepare('SELECT ID,NAME,IS_SHOW FROM YDY_STAFF WHERE AI_USER_ID=?');
    $staffQuery->execute([(int)$user['user_id']]);
    $staffRows = $staffQuery->fetchAll(PDO::FETCH_ASSOC);
    $orderCount = 0;
    $pendingCount = 0;
    foreach ($storeRows as $storeUser) {
        $ordersQuery = $store->prepare('SELECT COUNT(*) FROM YDY_MEAL_ORDER WHERE USER_ID=?');
        $ordersQuery->execute([(int)$storeUser['id']]);
        $orderCount += (int)$ordersQuery->fetchColumn();
        $pendingQuery = $store->prepare('SELECT COUNT(*) FROM YDY_MEAL_ORDER WHERE USER_ID=?'
            . ' AND PAY_STATUS=10 AND ORDER_STATUS=10 AND IS_DELETE=0');
        $pendingQuery->execute([(int)$storeUser['id']]);
        $pendingCount += (int)$pendingQuery->fetchColumn();
    }
    $orderMeta = [];
    if ($storeRows) {
        $orderQuery = $store->prepare('SELECT ID,SOURCE,PAY_STATUS,ORDER_STATUS,RESTAURANT_ID,MEAL_TIMES,REMARK'
            . ' FROM YDY_MEAL_ORDER WHERE USER_ID=? ORDER BY ID DESC FETCH FIRST 3 ROWS ONLY');
        $orderQuery->execute([(int)$storeRows[0]['id']]);
        foreach ($orderQuery->fetchAll(PDO::FETCH_ASSOC) as $order) {
            $orderMeta[] = ['id' => (int)$order['id'], 'source' => (int)$order['source'],
                'pay_status' => (int)$order['pay_status'], 'order_status' => (int)$order['order_status'],
                'restaurant_id' => (int)$order['restaurant_id'],
                'meal_times' => (int)$order['meal_times'],
                'synthetic_remark' => strpos((string)$order['remark'], 'CDX') === 0];
        }
    }
    $balanceQuery = $ai->prepare('SELECT BALANCE FROM YOSHOP_USER WHERE USER_ID=?');
    $balanceQuery->execute([(int)$user['user_id']]);
    $balanceCents = (int)round((float)$balanceQuery->fetchColumn() * 100);
    $refundQuery = $ai->prepare('SELECT COUNT(*),COALESCE(SUM(REFUNDABLE_MONEY),0)'
        . ' FROM YOSHOP_RECHARGE_ORDER WHERE STORE_ID=10001 AND USER_ID=?'
        . " AND PAY_STATUS=20 AND PAY_METHOD='wechat'"
        . ' AND REFUNDABLE_MONEY>0 AND PAY_TIME>?');
    $refundQuery->execute([(int)$user['user_id'], time() - 365 * 86400 + 600]);
    $refundRow = $refundQuery->fetch(PDO::FETCH_NUM);
    $mapped[] = ['ai_user_id' => (int)$user['user_id'],
        'ai_staff_count' => $aiStaffCount,
        'ai_balance_cents' => $balanceCents,
        'refundable_recharge_count' => (int)$refundRow[0],
        'refundable_recharge_cents' => (int)round((float)$refundRow[1] * 100),
        'store_id' => (int)$user['store_id'],
        'store_user_ids' => array_map(static function ($row) { return (int)$row['id']; }, $storeRows),
        'store_user_count' => count($storeRows),
        'store_staff_count' => count($staffRows),
        'existing_order_count' => $orderCount,
        'existing_pending_order_count' => $pendingCount,
        'order_metadata' => $orderMeta];
}
$orders = $store->query("SELECT COUNT(*) FROM YDY_MEAL_ORDER WHERE REMARK LIKE 'CDXCOI%'")->fetchColumn();
$activeDrillCourses = (int)$ai->query('SELECT COUNT(*) FROM YOSHOP_DRILL_COURSE'
    . ' WHERE STORE_ID=10001 AND IS_DELETE=0')->fetchColumn();
$rechargeColumns = $ai->query("SELECT COLUMN_NAME,NULLABLE,DATA_DEFAULT"
    . " FROM USER_TAB_COLUMNS WHERE TABLE_NAME='YOSHOP_RECHARGE_ORDER'")
    ->fetchAll(PDO::FETCH_ASSOC);
$rechargeRequired = [];
foreach ($rechargeColumns as $column) {
    $column = array_change_key_case($column, CASE_LOWER);
    if (($column['nullable'] ?? '') === 'N'
        && ($column['data_default'] ?? null) === null
        && ($column['column_name'] ?? '') !== 'ORDER_ID') {
        $rechargeRequired[] = (string)$column['column_name'];
    }
}
$rechargeTriggers = (int)$ai->query("SELECT COUNT(*) FROM USER_TRIGGERS"
    . " WHERE TABLE_NAME='YOSHOP_RECHARGE_ORDER' AND STATUS='ENABLED'")
    ->fetchColumn();
define('TP_ENV', 'poc');
define('BUSINESS', 'aizhct');
define('ENTERPRISE_NO', '10001');
$root = '/tmp/zhct-ai-http-20260929.3XDj3w';
require $root . '/vendor/autoload.php';
(new \think\App($root))->setEnvName('poc')->initialize();
$modelSource = (new ReflectionClass(\app\api\model\MealOrder::class))->getFileName();
echo json_encode(['lane' => 'C', 'worker_pid' => 53772,
    'candidate_synthetic_accounts' => $mapped,
    'previous_cashier_probe_orders' => (int)$orders,
    'active_drill_course_count' => $activeDrillCourses,
    'recharge_column_count' => count($rechargeColumns),
    'recharge_required_without_default' => $rechargeRequired,
    'recharge_enabled_trigger_count' => $rechargeTriggers,
    'actual_model_source' => $modelSource,
    'actual_model_sha' => hash_file('sha256', $modelSource),
    'business_http' => 0, 'business_dml' => 0], JSON_UNESCAPED_SLASHES), PHP_EOL;
