<?php
declare(strict_types=1);

$journal = (string)($argv[1] ?? '');
if (!preg_match('#^/tmp/CDXCOI[0-9A-F]{10}\.cashier-c-journal$#D', $journal)
    || is_link($journal) || !is_file($journal) || ((fileperms($journal) & 0077) !== 0)) {
    throw new RuntimeException('C exact private journal invalid');
}
$events = [];
foreach (file($journal, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
    $event = json_decode($line, true);
    if (!is_array($event)) throw new RuntimeException('C journal event invalid');
    $events[] = $event;
}
$first = $events[0] ?? [];
$marker = (string)($first['marker'] ?? '');
$token = (string)($first['token'] ?? '');
$orderId = 0;
$aiStaffId = 0;
$rechargeId = 0;
$deleted = false;
$tokenReportedZero = false;
foreach ($events as $event) {
    if (($event['phase'] ?? '') === 'inserted') $orderId = (int)($event['order_id'] ?? 0);
    if (($event['phase'] ?? '') === 'ai_staff_inserted')
        $aiStaffId = (int)($event['ai_staff_id'] ?? 0);
    if (($event['phase'] ?? '') === 'recharge_inserted')
        $rechargeId = (int)($event['recharge_id'] ?? 0);
    if (($event['phase'] ?? '') === 'deleted') $deleted = true;
    if (($event['phase'] ?? '') === 'token_cleanup') $tokenReportedZero = $event['token_zero'] === true;
}
if ($journal !== '/tmp/' . $marker . '.cashier-c-journal'
    || !preg_match('/^CDXCOI[0-9A-F]{10}$/D', $marker)
    || !preg_match('/^CDXCOI[0-9A-F]{10}T[0-9A-F]{24}$/D', $token)
    || $orderId <= 0) throw new RuntimeException('C journal does not identify one test');
$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]);
$count = static function (string $sql, array $args) use ($store): int {
    $s = $store->prepare($sql); $s->execute($args); return (int)$s->fetchColumn();
};
$orderZero = $count('SELECT COUNT(*) FROM YDY_MEAL_ORDER'
    . ' WHERE ID=? OR ORDER_NO=? OR REMARK=?', [$orderId, $marker, $marker]) === 0;
$menuZero = $count('SELECT COUNT(*) FROM YDY_INITIAL_MENU WHERE MEAL_ORDER_ID=?', [$orderId]) === 0;
$pickupZero = $count('SELECT COUNT(*) FROM YDY_MEAL_ORDER_PICKUP WHERE MEAL_ORDER_ID=?', [$orderId]) === 0;
$oldAudit = $count('SELECT COUNT(*) FROM YDY_MEAL_ORDER WHERE ID=23625 AND USER_ID=2642'
    . ' AND SOURCE=4 AND PAY_STATUS=20 AND REMARK=?', ['CDXPARMOB9411C2CB']) === 1;
$aiStaffZero = true;
$rechargeZero = true;
if ($aiStaffId > 0 || $rechargeId > 0) {
    $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]);
    if ($aiStaffId > 0) {
        $s = $ai->prepare('SELECT COUNT(*) FROM YOSHOP_STAFF WHERE ID=? OR NAME=?');
        $s->execute([$aiStaffId, $marker . 'STAFF']);
        $aiStaffZero = (int)$s->fetchColumn() === 0;
    }
    if ($rechargeId > 0) {
        $s = $ai->prepare('SELECT COUNT(*) FROM YOSHOP_RECHARGE_ORDER'
            . ' WHERE ORDER_ID=? OR ORDER_NO=? OR NOTE=?');
        $s->execute([$rechargeId, 'CR' . $marker, 'CR' . $marker]);
        $rechargeZero = (int)$s->fetchColumn() === 0;
        $s = $ai->prepare('SELECT COUNT(*) FROM YOSHOP_CASHOUT_ORDER_DETAIL'
            . ' WHERE RECHARGE_ORDER_ID=?');
        $s->execute([$rechargeId]);
        $rechargeZero = $rechargeZero && (int)$s->fetchColumn() === 0;
    }
}
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();
$tokenZero = !\think\facade\Cache::has($token);
$okay = $deleted && $tokenReportedZero && $orderZero && $menuZero
    && $pickupZero && $oldAudit && $tokenZero && $aiStaffZero && $rechargeZero;
echo json_encode(['status' => $okay ? 'ZERO_VERIFIED' : 'ZERO_FAILED',
    'marker_sha' => hash('sha256', $marker),
    'order_zero' => $orderZero, 'menu_zero' => $menuZero,
    'pickup_zero' => $pickupZero, 'old_audit_intact' => $oldAudit,
    'token_zero' => $tokenZero, 'ai_staff_zero' => $aiStaffZero,
    'owned_recharge_and_cashout_detail_zero' => $rechargeZero,
    'business_http' => 0, 'business_dml' => 0]), PHP_EOL;
exit($okay ? 0 : 1);
