<?php
declare(strict_types=1);

// C-only DM8 Store source. No HTTP and no DML.
set_exception_handler(static function (Throwable $error): void {
    echo json_encode(['status' => 'preflight-error', 'class' => get_class($error),
        'code' => (string)$error->getCode()], JSON_UNESCAPED_SLASHES), PHP_EOL;
    exit(2);
});
$pid = 53772;
$raw = file_get_contents('/proc/' . $pid . '/environ');
$cmd = file_get_contents('/proc/' . $pid . '/cmdline');
if ($raw === false || $cmd === false || strpos($cmd, '127.0.0.1:18102') === false
    || strpos($cmd, '/tmp/zhct-ai-http-20260929.3XDj3w/public') === false) {
    throw new RuntimeException('C isolated HTTP process unavailable');
}
$env = [];
foreach (explode("\0", $raw) as $part) {
    if (strpos($part, 'POC_') !== 0) continue;
    $at = strpos($part, '=');
    if ($at !== false) $env[substr($part, 0, $at)] = substr($part, $at + 1);
}
foreach (['POC_DIALECT' => 'dm', 'POC_EXTERNAL_STUBS' => '1',
    'POC_HOST' => '127.0.0.1', 'POC_PORT' => '5237',
    'POC_SCHEMA' => 'ZHCT_APP', 'POC_AI_PORT' => '5238',
    'POC_AI_SCHEMA' => 'AIZHCT_APP'] as $key => $expected) {
    if (($env[$key] ?? null) !== $expected) throw new RuntimeException('C boundary mismatch');
}
if (empty($env['POC_USER']) || empty($env['POC_PASSWORD'])) {
    throw new RuntimeException('C private credentials missing');
}
$pdo = new PDO('dm:host=127.0.0.1;port=5237;schema=ZHCT_APP',
    $env['POC_USER'], $env['POC_PASSWORD'], [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_CASE => PDO::CASE_LOWER,
    ]);
$owner = strtoupper((string)$pdo->query('SELECT USER FROM DUAL')->fetchColumn());
$schema = strtoupper((string)$pdo->query(
    "SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') FROM DUAL")->fetchColumn());
if ($owner !== 'ZHCT_APP' || $schema !== 'ZHCT_APP') {
    throw new RuntimeException('C Store DB identity mismatch');
}
$today = date('Y-m-d');
$until = date('Y-m-d', strtotime('+30 days'));
$sql = 'SELECT q.RESTAURANT_ID,q.MENU_DATE,q.MEAL_TIMES FROM ('
    . 'SELECT r.RESTAURANT_ID,r.MENU_DATE,r.MEAL_TIMES '
    . 'FROM YDY_RECIPES r JOIN YDY_DISHES d ON d.UUID=r.DISHES_UUID '
    . 'JOIN YDY_RESTAURANTS s ON s.ID=r.RESTAURANT_ID '
    . 'WHERE r.MENU_DATE BETWEEN ? AND ? AND d.IS_DELETE=0 AND d.AI_DISHES_ID>0 '
    . 'AND s.IS_DELETE=2 AND s.STATUS=1 AND s.STALL_TYPE IN (1,2,3) '
    . 'ORDER BY r.MENU_DATE,r.RESTAURANT_ID) q WHERE ROWNUM=1';
$query = $pdo->prepare($sql);
$query->execute([$today, $until]);
$row = $query->fetch(PDO::FETCH_ASSOC);
echo json_encode(['status' => is_array($row) ? 'natural-candidate' : 'no-natural-candidate',
    'source' => 'approved-nonprod-dm-store', 'owner' => $owner,
    'date_window' => [$today, $until],
    'candidate' => is_array($row) ? ['restaurant_id' => (int)$row['restaurant_id'],
        'menu_date' => (string)$row['menu_date'], 'meal_times' => (int)$row['meal_times']] : null],
    JSON_UNESCAPED_SLASHES), PHP_EOL;
