최초 커밋

This commit is contained in:
root
2026-07-23 16:15:57 +09:00
commit c8f5efb6b7
14652 changed files with 4812531 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
<?php
header("Content-Type: application/json; charset=utf-8");
try {
$pdo = new PDO(
"mysql:host=localhost;dbname=egbim;charset=utf8mb4",
"egbim", "baron3840!!",
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$productCode = $_GET['product_code'] ?? '';
if (!$productCode) {
echo json_encode(['status' => 'fail', 'message' => '제품코드 없음']);
exit;
}
// 1️⃣ 현재 제품의 최신 내부/외부 버전 정보 가져오기
// updated_at 기준으로 가장 최신 행 1개만 가져옵니다.
$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(PDO::FETCH_ASSOC);
// 데이터가 아예 없을 경우를 대비한 기본값
$familyVer = $verRow['family_version'] ?? '0.0.0';
$externalVer = $verRow['external_version'] ?? '';
// 2️⃣ "사용안함" 로직: 내부와 외부 버전이 같으면 외부 버전은 빈 값으로 처리
if ($externalVer === $familyVer) {
$externalVer = '';
}
// 3️⃣ 콤보박스에 들어갈 '배포 확정'된 버전 목록 가져오기 (deploy_files 테이블 기준)
$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);
// 4️⃣ 필터링 및 "사용안함" 옵션 추가
$filtered = [];
foreach ($allVersions as $v) {
// 내부 배포 버전(최신 작업물)보다 높은 버전은 목록에서 제외 (논리적 오류 방지)
if (version_compare($v, $familyVer, '>')) continue;
$filtered[] = $v;
}
// 목록 최상단에 항상 "사용안함" 추가
array_unshift($filtered, "");
echo json_encode([
'status' => 'ok',
'family_version' => $familyVer, // 프론트의 #latest-family에 표시됨
'external_version' => $externalVer, // 현재 선택된 값
'external_exists' => ($externalVer !== ''),
'confirmed_versions' => $filtered
]);
} catch (Exception $e) {
echo json_encode(['status' => 'fail', 'message' => $e->getMessage()]);
}