From ff7d4e4b9a35bfa008874bfa227e9678ba1490db Mon Sep 17 00:00:00 2001 From: choibk Date: Mon, 26 Jan 2026 10:03:56 +0900 Subject: [PATCH] [STABLE] v0.4.2.7 - Accurate version detection and project synchronization --- backup/.env.backup.2026-01-26-00-58-22 | 23 +++++++++++++++ package-lock.json | 4 +-- package.json | 2 +- server/index.js | 16 +++++++++-- server/package-lock.json | 4 +-- server/package.json | 2 +- server/routes/system.js | 18 ++++++++---- update_system.bat | 39 ++++++++++++++++++++++++++ 8 files changed, 95 insertions(+), 13 deletions(-) create mode 100644 backup/.env.backup.2026-01-26-00-58-22 create mode 100644 update_system.bat diff --git a/backup/.env.backup.2026-01-26-00-58-22 b/backup/.env.backup.2026-01-26-00-58-22 new file mode 100644 index 0000000..ab7d08a --- /dev/null +++ b/backup/.env.backup.2026-01-26-00-58-22 @@ -0,0 +1,23 @@ +# ============================================== +# [Common Settings] +# ============================================== +DB_HOST=sokuree.com +DB_USER=choibk +DB_PASSWORD=^Ocean1472bk +PORT=3005 + +# ============================================== +# [Development Environment] - Local Windows +# ============================================== +# 로컬 개발용 DB (분리됨: sokuree_platform_dev) +DB_NAME=sokuree_platform_dev +DB_PORT=3307 +# Windows 환경 호환성 (tcp는 권한 오류 발생 가능) +CCTV_TRANSPORT_OVERRIDE=auto + +# ============================================== +# [Production Environment] - Synology NAS +# ============================================== +# DB_NAME=sokuree_platform_prod +# DB_PORT=3307 + diff --git a/package-lock.json b/package-lock.json index 02c35c2..a1e19d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "smartims", - "version": "0.4.0.0", + "version": "0.4.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "smartims", - "version": "0.4.0.0", + "version": "0.4.0.1", "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", diff --git a/package.json b/package.json index e5efe2c..1408f84 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "smartims", "private": true, - "version": "0.4.0.1", + "version": "0.4.2.7", "type": "module", "scripts": { "dev": "vite", diff --git a/server/index.js b/server/index.js index 8dbde83..1274116 100644 --- a/server/index.js +++ b/server/index.js @@ -467,13 +467,25 @@ initTables(); const packageJson = require('./package.json'); app.get('/api/health', (req, res) => { - // Light-weight health check + // Dynamic version check (Light-weight) const kstOffset = 9 * 60 * 60 * 1000; const kstDate = new Date(Date.now() + kstOffset); + let version = packageJson.version; + try { + const { execSync } = require('child_process'); + // Check git tag in parent directory (Project root) + version = execSync('git describe --tags --abbrev=0', { + cwd: path.join(__dirname, '..'), + stdio: ['ignore', 'pipe', 'ignore'] + }).toString().trim().replace(/^v/, ''); + } catch (e) { + // Safe fallback to package.json + } + res.json({ status: 'ok', - version: packageJson.version, + version: version, node_version: process.version, platform: process.platform, arch: process.arch, diff --git a/server/package-lock.json b/server/package-lock.json index 305ba19..f1f8ed5 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,12 +1,12 @@ { "name": "server", - "version": "0.4.0.0", + "version": "0.4.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "server", - "version": "0.4.0.0", + "version": "0.4.0.1", "license": "ISC", "dependencies": { "axios": "^1.13.2", diff --git a/server/package.json b/server/package.json index 8537666..733c812 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "server", - "version": "0.4.0.1", + "version": "0.4.2.7", "description": "", "main": "index.js", "scripts": { diff --git a/server/routes/system.js b/server/routes/system.js index 341184e..ccc6f80 100644 --- a/server/routes/system.js +++ b/server/routes/system.js @@ -489,13 +489,22 @@ const getGiteaAuth = async () => { // 5. Get Version Info (Current, Remote & History from Tags) router.get('/version/remote', isAuthenticated, hasRole('admin'), async (req, res) => { try { - // Local version detection (No caching) + // Local version detection (Dynamic & Robust) + const projectRoot = path.join(__dirname, '../..'); let currentVersion = '0.0.0.0'; try { - const rootPkg = JSON.parse(fs.readFileSync(path.join(__dirname, '../../package.json'), 'utf8')); - currentVersion = rootPkg.version; + const { execSync } = require('child_process'); + currentVersion = execSync('git describe --tags --abbrev=0', { + cwd: projectRoot, + stdio: ['ignore', 'pipe', 'ignore'] + }).toString().trim().replace(/^v/, ''); } catch (e) { - currentVersion = '0.4.2.1'; + try { + const rootPkg = JSON.parse(fs.readFileSync(path.join(projectRoot, 'package.json'), 'utf8')); + currentVersion = rootPkg.version; + } catch (err) { + currentVersion = '0.4.2.7'; + } } // Prepare git fetch command @@ -509,7 +518,6 @@ router.get('/version/remote', isAuthenticated, hasRole('admin'), async (req, res fetchCmd = `git fetch ${auth.url} --tags --force --prune`; } - const projectRoot = path.join(__dirname, '../..'); exec(fetchCmd, { cwd: projectRoot }, (err, stdout, stderr) => { if (err) { console.error('Git fetch failed:', err); diff --git a/update_system.bat b/update_system.bat new file mode 100644 index 0000000..d162224 --- /dev/null +++ b/update_system.bat @@ -0,0 +1,39 @@ + +@echo off +echo [Update] Starting update to v0.4.2.6... + +REM Ensure backup directory +set BACKUP_PATH=./backup +if not exist "%BACKUP_PATH%" mkdir "%BACKUP_PATH%" 2>nul +if not exist "%BACKUP_PATH%" ( + echo [Warning] Global backup failed, using local backup. + set BACKUP_PATH=.\server\backups + if not exist ".\server\backups" mkdir ".\server\backups" +) + +echo [Update] Backing up Config... +if exist "server\.env" ( + copy /Y "server\.env" "%BACKUP_PATH%\.env.backup.2026-01-26-00-58-22" + copy /Y "server\.env" "server\.env.tmp" +) + +echo [Update] Syncing Source Code... +git fetch "https://gitea.qideun.com/SOKUREE/smart_ims.git" --tags --force --prune +git checkout -f v0.4.2.6 + +echo [Update] Restoring Config... +if exist "server\.env.tmp" ( + copy /Y "server\.env.tmp" "server\.env" + del "server\.env.tmp" +) else if exist "%BACKUP_PATH%\.env.backup.2026-01-26-00-58-22" ( + copy /Y "%BACKUP_PATH%\.env.backup.2026-01-26-00-58-22" "server\.env" +) + +echo [Update] Installing & Building... +call npm install +call npm run build +cd server +call npm install + +echo [Update] Done. + \ No newline at end of file