<?php
declare(strict_types=1);

// SELECT-only natural-source gate. Credentials come from each isolated worker runtime.
$lane = (string)($argv[1] ?? '');
if (!in_array($lane, ['B', 'C'], true)) exit(78);
$root = $lane === 'B' ? '/tmp/zhct-http-store-mysql.dQTTBP'
    : '/tmp/zhct-dm-poc-20260928.fcpiiN/store';
$config = require $root . '/application/database.php';
if (!is_array($config) || ($config['prefix'] ?? '') !== 'ydy_'
    || ($config['ai_zhct']['prefix'] ?? '') !== 'yoshop_') {
    throw new RuntimeException('database config');
}
$ai = $config['ai_zhct'];
if ($lane === 'B') {
    $local = require '/workspace/zhct/zhctproject/store/application/config/local/database.php';
    foreach (['hostname', 'database', 'username', 'password'] as $key) {
        if (($ai[$key] ?? null) !== ($local['ai_zhct'][$key] ?? null)) {
            throw new RuntimeException('not local AI MySQL');
        }
    }
    $dsn = 'mysql:host=' . $ai['hostname'] . ';port=' . ($ai['hostport'] ?? 3306)
        . ';dbname=' . $ai['database'] . ';charset=utf8mb4';
} else {
    foreach (['hostname' => 'POC_AI_HOST', 'hostport' => 'POC_AI_PORT',
        'database' => 'POC_AI_SCHEMA', 'username' => 'POC_AI_USER',
        'password' => 'POC_AI_PASSWORD'] as $key => $env) {
        if ((string)($ai[$key] ?? '') !== (string)getenv($env)) {
            throw new RuntimeException('not worker AI DM');
        }
    }
    if ((string)getenv('POC_AI_HOST') !== '127.0.0.1'
        || (string)getenv('POC_AI_PORT') !== '5238'
        || strtoupper((string)getenv('POC_AI_SCHEMA')) !== 'AIZHCT_APP') {
        throw new RuntimeException('not approved AI DM');
    }
    $dsn = 'dm:host=127.0.0.1;port=5238;schema=AIZHCT_APP';
}
$db = new PDO($dsn, (string)$ai['username'], (string)$ai['password'], [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_CASE => PDO::CASE_LOWER,
    PDO::ATTR_TIMEOUT => 5,
]);
$identity = $lane === 'B'
    ? (string)$db->query("SELECT CONCAT(@@server_uuid,'|',@@hostname,'|',@@port,'|',DATABASE())")->fetchColumn()
    : 'AIZHCT_APP|5238|' . (string)$db->query("SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') FROM DUAL")->fetchColumn();
if ($lane === 'C' && $identity !== 'AIZHCT_APP|5238|AIZHCT_APP') {
    throw new RuntimeException('AI identity');
}
$p = $lane === 'B' ? 'yoshop_' : 'YOSHOP_';
$query = static function (string $sql) use ($db): array {
    if (!preg_match('/^SELECT\b/i', $sql)) throw new RuntimeException('not SELECT');
    return array_map(static function (array $row): array {
        return array_change_key_case($row, CASE_LOWER);
    }, $db->query($sql)->fetchAll(PDO::FETCH_ASSOC));
};
$orders = $query('SELECT STORE_ID,STATUS,COUNT(*) AS N FROM ' . $p . 'cash_refund_order'
    . ' WHERE IS_DELETE=0 GROUP BY STORE_ID,STATUS ORDER BY STORE_ID,STATUS');
$logs = $query('SELECT COUNT(*) AS N FROM ' . $p . 'cash_refund_order_log');
$withLog = $query('SELECT R.ID,R.STATUS,R.REFUND_AMOUNT,R.ACTUAL_DEDUCT_AMOUNT,'
    . ' (SELECT COUNT(*) FROM ' . $p . 'cash_refund_order_log L WHERE L.REFUND_ID=R.ID) AS LOG_N'
    . ' FROM ' . $p . 'cash_refund_order R WHERE R.STORE_ID=10001 AND R.IS_DELETE=0'
    . ' ORDER BY R.ID DESC');
$withLog = array_values(array_filter($withLog, static function (array $row): bool {
    return (int)$row['log_n'] > 0;
}));
echo json_encode(['lane' => $lane, 'identity_sha12' => substr(hash('sha256', $identity), 0, 12),
    'store_status_counts' => $orders,
    'log_total' => (int)($logs[0]['n'] ?? 0),
    'store10001_with_log_count' => count($withLog),
    'latest_with_log' => array_slice($withLog, 0, 3)],
    JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_SUBSTITUTE), PHP_EOL;
