PDO::ERRMODE_EXCEPTION] ); $productCode = $_GET['product_code'] ?? ''; if (!$productCode) { echo json_encode([ 'status' => 'fail', 'message' => '제품코드 없음' ]); exit; } // ✅ 내부 최신 버전 & 외부 버전 가져오기 $st = $pdo->prepare(" SELECT family_version, external_version FROM deploy_versions WHERE product_code=? ORDER BY updated_at DESC LIMIT 1 "); $st->execute([$productCode]); $verRow = $st->fetch(); $familyVer = $verRow['family_version'] ?? '0.0.0'; $externalVer = $verRow['external_version'] ?? ''; // 👉 내부와 외부가 같으면 "사용안함" 으로 표시되도록 빈 값 처리 if ($externalVer === $familyVer) { $externalVer = ''; } // ✅ 배포 확정된 버전 목록 (콤보박스 옵션용) $st = $pdo->prepare(" SELECT DISTINCT sw_version FROM deploy_files WHERE product_code=? AND release_date IS NOT NULL AND deleted=0 ORDER BY CAST(SUBSTRING_INDEX(sw_version, '.', 1) AS UNSIGNED) DESC, CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(sw_version, '.', 2), '.', -1) AS UNSIGNED) DESC, CAST(SUBSTRING_INDEX(sw_version, '.', -1) AS UNSIGNED) DESC "); $st->execute([$productCode]); $allVersions = $st->fetchAll(PDO::FETCH_COLUMN); // ✅ 여기서 필터링 $filtered = []; foreach ($allVersions as $v) { // 내부 배포버전보다 높은 버전 제외 if (version_compare($v, $familyVer, '>')) continue; // 현재 외부배포버전이 지정되어 있으면 그보다 낮은 버전 제외 if ($externalVer !== '' && version_compare($v, $externalVer, '<')) continue; $filtered[] = $v; } echo json_encode([ 'status' => 'ok', 'family_version' => $familyVer, 'external_version' => $externalVer, // "" 이면 "사용안함" 'external_exists' => ($externalVer !== ''), 'confirmed_versions' => $filtered // ✅ 필터링된 버전만 내려줌 ]); } catch (Exception $e) { echo json_encode([ 'status' => 'fail', 'message' => $e->getMessage() ]); }