<?php
declare(strict_types=1);

// Synthetic SELECT-only score buckets; no customer row or DML.
$lane = (string)($argv[1] ?? '');
if (!in_array($lane, ['B', 'C'], true)) exit(78);
if ($lane === 'B') {
    $cfg = parse_ini_file('/Users/wiscourper/Documents/workspace/zhct/zhctproject/ai_api/.env.local',
        true, INI_SCANNER_RAW)['DATABASE'] ?? null;
    if (!is_array($cfg) || strtolower((string)($cfg['TYPE'] ?? '')) !== 'mysql'
        || (string)($cfg['HOSTPORT'] ?? '') !== '3306') {
        throw new RuntimeException('not code-local MySQL');
    }
    $db = new PDO('mysql:host=' . $cfg['HOSTNAME'] . ';port=' . $cfg['HOSTPORT']
        . ';dbname=' . $cfg['DATABASE'] . ';charset=utf8',
        $cfg['USERNAME'], $cfg['PASSWORD'], [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
} else {
    $env = [];
    foreach (explode("\0", (string)file_get_contents('/proc/53772/environ')) as $item) {
        $parts = explode('=', $item, 2);
        if (count($parts) === 2) $env[$parts[0]] = $parts[1];
    }
    if (($env['POC_DIALECT'] ?? '') !== 'dm'
        || ($env['POC_AI_HOST'] ?? '') !== '127.0.0.1'
        || ($env['POC_AI_PORT'] ?? '') !== '5238'
        || ($env['POC_AI_SCHEMA'] ?? '') !== 'AIZHCT_APP') {
        throw new RuntimeException('not approved C worker');
    }
    $db = new PDO('dm:host=127.0.0.1;port=5238;schema=AIZHCT_APP',
        $env['POC_AI_USER'], $env['POC_AI_PASSWORD'],
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
    if ($db->query("SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') FROM DUAL")
        ->fetchColumn() !== 'AIZHCT_APP') {
        throw new RuntimeException('C schema drift');
    }
}
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
$source = '(SELECT 10 AS score FROM DUAL UNION ALL SELECT 10 FROM DUAL'
    . ' UNION ALL SELECT 20 FROM DUAL UNION ALL SELECT 30 FROM DUAL) s';
$projection = 'COUNT(*) AS all_count,'
    . ' COUNT(CASE WHEN s.score = 10 THEN 1 END) AS praise,'
    . ' COUNT(CASE WHEN s.score = 20 THEN 1 END) AS review,'
    . ' COUNT(CASE WHEN s.score = 30 THEN 1 END) AS negative';
$query = 'SELECT ' . $projection . ' FROM ' . $source;
$nonempty = array_change_key_case($db->query($query)->fetch(PDO::FETCH_ASSOC), CASE_LOWER);
$empty = array_change_key_case($db->query($query . ' WHERE 1=0')->fetch(PDO::FETCH_ASSOC), CASE_LOWER);
$expected = ['all_count' => 4, 'praise' => 2, 'review' => 1, 'negative' => 1];
$ok = true;
foreach ($expected as $key => $value) {
    $ok = $ok && (int)($nonempty[$key] ?? -1) === $value
        && (int)($empty[$key] ?? -1) === 0;
}
echo json_encode(['lane' => $lane, 'nonempty' => $nonempty,
    'empty' => $empty, 'passed' => $ok,
    'business_table_reads' => 0, 'business_dml' => 0]), PHP_EOL;
exit($ok ? 0 : 1);
