<?php

declare(strict_types=1);

// COUNT only: no menu IDs, API rows or existing operator data emitted.
$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_TARGET_ROOT'] ?? '') !== '/tmp/zhct-ai-http-20260929.3XDj3w'
    || ($env['POC_DIALECT'] ?? '') !== 'dm'
    || ($env['POC_AI_PORT'] ?? '') !== '5238'
    || ($env['POC_AI_SCHEMA'] ?? '') !== 'AIZHCT_APP') {
    throw new RuntimeException('Unapproved C AI boundary');
}
$db = new PDO('dm:host=' . $env['POC_AI_HOST'] . ';port=' . $env['POC_AI_PORT']
    . ';schema=' . $env['POC_AI_SCHEMA'], $env['POC_AI_USER'],
    $env['POC_AI_PASSWORD'], [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$urls = ['/store.habit/detail', '/store.habit/dateRpe', '/store.habit/detailRpe'];
$sql = 'SELECT COUNT(*) FROM ('
    . ' SELECT m.MENU_ID FROM YOSHOP_STORE_MENU_API m'
    . ' JOIN YOSHOP_STORE_API a ON a.API_ID=m.API_ID'
    . ' WHERE a.URL IN (?,?,?) GROUP BY m.MENU_ID'
    . ' HAVING COUNT(DISTINCT a.URL)=3) scoped_menus';
$stmt = $db->prepare($sql);
$stmt->execute($urls);
$commonCount = (int)$stmt->fetchColumn();
$scopeSql = 'SELECT MIN(s.api_count),MAX(s.api_count) FROM ('
    . ' SELECT m.MENU_ID,COUNT(DISTINCT m.API_ID) api_count'
    . ' FROM YOSHOP_STORE_MENU_API m WHERE m.MENU_ID IN ('
    . ' SELECT m2.MENU_ID FROM YOSHOP_STORE_MENU_API m2'
    . ' JOIN YOSHOP_STORE_API a2 ON a2.API_ID=m2.API_ID'
    . ' WHERE a2.URL IN (?,?,?) GROUP BY m2.MENU_ID'
    . ' HAVING COUNT(DISTINCT a2.URL)=3) GROUP BY m.MENU_ID) s';
$scope = $db->prepare($scopeSql);
$scope->execute($urls);
$range = $scope->fetch(PDO::FETCH_NUM);
echo json_encode(['mode' => 'read-only-habit-acl-overlap-count',
    'common_menu_count' => $commonCount,
    'min_api_count_on_common_menu' => isset($range[0]) ? (int)$range[0] : null,
    'max_api_count_on_common_menu' => isset($range[1]) ? (int)$range[1] : null],
    JSON_UNESCAPED_SLASHES) . PHP_EOL;
