소스 수정

This commit is contained in:
2025-12-28 17:16:00 +09:00
parent 383e24ba1c
commit 4312a942dc
3 changed files with 36 additions and 17 deletions

View File

@@ -4,7 +4,7 @@ import { refreshServerTimer } from '../../../utils/server-scheduler'
export default defineEventHandler(async (event) => {
const targetId = getRouterParam(event, 'id')
const body = await readBody(event)
const { name, host, port, username, auth_type, is_active } = body
const { server_name, server_ip, glances_url, is_active, collect_interval, physical_location } = body
if (!targetId) {
throw createError({
@@ -15,15 +15,15 @@ export default defineEventHandler(async (event) => {
const changes = await execute(`
UPDATE server_targets
SET name = $1,
host = $2,
port = $3,
username = $4,
auth_type = $5,
is_active = $6,
SET server_name = $1,
server_ip = $2,
glances_url = $3,
is_active = $4,
collect_interval = $5,
physical_location = $6,
updated_at = NOW()
WHERE target_id = $7
`, [name, host, port || 22, username, auth_type || 'password', is_active ? 1 : 0, targetId])
`, [server_name, server_ip, glances_url, is_active ? 1 : 0, collect_interval || 60, physical_location || '운영서버실', targetId])
// 스케줄러에 반영
refreshServerTimer(Number(targetId))

View File

@@ -3,7 +3,7 @@ import { refreshServerTimer } from '../../../utils/server-scheduler'
export default defineEventHandler(async (event) => {
const body = await readBody(event)
const { server_name, server_ip, glances_url, is_active = 1, collect_interval = 60 } = body
const { server_name, server_ip, glances_url, is_active = 1, collect_interval = 60, physical_location = '운영서버실' } = body
if (!server_name || !server_ip || !glances_url) {
throw createError({
@@ -13,10 +13,10 @@ export default defineEventHandler(async (event) => {
}
const result = await queryOne<{ target_id: number }>(`
INSERT INTO server_targets (server_name, server_ip, glances_url, is_active, collect_interval)
VALUES ($1, $2, $3, $4, $5)
INSERT INTO server_targets (server_name, server_ip, glances_url, is_active, collect_interval, physical_location)
VALUES ($1, $2, $3, $4, $5, $6)
RETURNING target_id
`, [server_name, server_ip, glances_url, is_active ? 1 : 0, collect_interval])
`, [server_name, server_ip, glances_url, is_active ? 1 : 0, collect_interval, physical_location])
const targetId = result?.target_id

View File

@@ -71,6 +71,9 @@
style="width: 80px;"
min="10"
/>
<select v-model="newTarget.physical_location" class="input-field" style="width: 110px;">
<option v-for="loc in locationOptions" :key="loc" :value="loc">{{ loc }}</option>
</select>
<label class="checkbox-label">
<input type="checkbox" v-model="newTarget.is_active" />
활성
@@ -93,7 +96,8 @@
<th style="width: 100px;">서버명</th>
<th style="width: 120px;">IP</th>
<th>Glances URL</th>
<th style="width: 70px;">주기()</th>
<th style="width: 70px;">주기</th>
<th style="width: 100px;">위치</th>
<th style="width: 50px;">상태</th>
<th style="width: 120px;">관리</th>
</tr>
@@ -117,6 +121,12 @@
<input v-if="editingId === target.target_id" v-model.number="editTarget.collect_interval" type="number" class="edit-input" min="10" />
<span v-else>{{ target.collect_interval }}</span>
</td>
<td>
<select v-if="editingId === target.target_id" v-model="editTarget.physical_location" class="edit-input">
<option v-for="loc in locationOptions" :key="loc" :value="loc">{{ loc }}</option>
</select>
<span v-else>{{ target.physical_location || '운영서버실' }}</span>
</td>
<td>
<label v-if="editingId === target.target_id" class="checkbox-label">
<input type="checkbox" v-model="editTarget.is_active" />
@@ -151,6 +161,7 @@ interface ServerTarget {
glances_url: string
is_active: number
collect_interval: number
physical_location: string
}
interface SchedulerStatus {
@@ -159,6 +170,11 @@ interface SchedulerStatus {
total_targets: number
}
const locationOptions = [
'운영서버실', '개발서버실', '터보사무실', '백업실',
'기타1', '기타2', '기타3', '기타4'
]
const targets = ref<ServerTarget[]>([])
const currentTime = ref('')
const editingId = ref<number | null>(null)
@@ -173,7 +189,8 @@ const newTarget = ref({
server_ip: '',
glances_url: '',
is_active: true,
collect_interval: 60
collect_interval: 60,
physical_location: '운영서버실'
})
const editTarget = ref({
@@ -181,7 +198,8 @@ const editTarget = ref({
server_ip: '',
glances_url: '',
is_active: true,
collect_interval: 60
collect_interval: 60,
physical_location: '운영서버실'
})
const canAdd = computed(() =>
@@ -243,7 +261,7 @@ async function addTarget() {
method: 'POST',
body: newTarget.value
})
newTarget.value = { server_name: '', server_ip: '', glances_url: '', is_active: true, collect_interval: 60 }
newTarget.value = { server_name: '', server_ip: '', glances_url: '', is_active: true, collect_interval: 60, physical_location: '운영서버실' }
await fetchTargets()
await fetchSchedulerStatus()
} catch (err) {
@@ -258,7 +276,8 @@ function startEdit(target: ServerTarget) {
server_ip: target.server_ip,
glances_url: target.glances_url,
is_active: !!target.is_active,
collect_interval: target.collect_interval || 60
collect_interval: target.collect_interval || 60,
physical_location: target.physical_location || '운영서버실'
}
}