Merge remote-tracking branch 'origin/main'
Some checks failed
ITAM Code Check / build-and-config-check (push) Successful in 21s
ITAM Docker Build Check / docker-build-check (push) Failing after 23s

# Conflicts:
#	src/views/List/ListFactory.ts
This commit is contained in:
2026-06-19 17:58:22 +09:00
5 changed files with 15 additions and 11 deletions

View File

@@ -3,7 +3,6 @@
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>한맥가족 자산관리시스템</title>
<link rel="stylesheet"

View File

@@ -1,6 +1,6 @@
import { state, saveAsset, deleteAsset } from '../../core/state';
import { ASSET_SCHEMA, UI_TEXT } from '../../core/schema';
import { calculatePcScoreDeductive, getPcGrade } from '../../core/utils';
import { API_BASE_URL, calculatePcScoreDeductive, getPcGrade } from '../../core/utils';
import {
generateOptionsHTML,
setFieldValue,
@@ -299,7 +299,7 @@ class HwAssetModal extends BaseModal {
const prefix = TYPE_PREFIX_MAP[cat] || 'ETC';
const purchaseDate = (document.getElementById('hw-purchase_date') as HTMLInputElement)?.value || '';
try {
const res = await fetch(`http://${location.hostname}:3000/api/generate-asset-code?prefix=${prefix}&purchaseDate=${purchaseDate}`);
const res = await fetch(`${API_BASE_URL}/api/generate-asset-code?prefix=${prefix}&purchaseDate=${purchaseDate}`);
const data = await res.json();
if (data.nextCode) setFieldValue('hw-asset_code', data.nextCode);
} catch (err) { console.error('코드 생성 실패:', err); }
@@ -317,7 +317,7 @@ class HwAssetModal extends BaseModal {
const reader = new FileReader();
reader.onload = async () => {
try {
const res = await fetch(`http://${location.hostname}:3000/api/upload`, {
const res = await fetch(`${API_BASE_URL}/api/upload`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ fileName: file.name, fileData: reader.result })
@@ -728,7 +728,7 @@ class HwAssetModal extends BaseModal {
private async fetchMapConfig() {
try {
const res = await fetch(`http://${location.hostname}:3000/api/maps`);
const res = await fetch(`${API_BASE_URL}/api/maps`);
this.dynamicMapConfig = await res.json();
} catch (err) { console.error('Failed to fetch map config:', err); }
}
@@ -925,7 +925,7 @@ class HwAssetModal extends BaseModal {
private async fetchMasterComponents(): Promise<void> {
try {
const res = await fetch(`http://${location.hostname}:3000/api/hardware-components`);
const res = await fetch(`${API_BASE_URL}/api/hardware-components`);
this.masterComponents = await res.json();
} catch (err) { console.error('Failed to fetch master components:', err); }
}

View File

@@ -196,11 +196,14 @@
height: auto;
object-fit: contain;
display: block;
position: relative;
z-index: 1;
}
.map-overlay {
position: absolute;
pointer-events: none;
pointer-events: auto;
z-index: 2;
}
.no-map-message {
@@ -216,6 +219,7 @@
align-items: center;
justify-content: center;
transition: all 0.2s ease;
z-index: 3;
}
/* --- Asset Detail Sidebar --- */

View File

@@ -1,5 +1,5 @@
import { ASSET_SCHEMA, UI_TEXT } from '../../core/schema';
import { dynamicSort, renderPageHeader, calculateAssetAge, formatInline, isWindows11Incompatible, calculatePcScoreDeductive } from '../../core/utils';
import { API_BASE_URL, dynamicSort, renderPageHeader, calculateAssetAge, formatInline, isWindows11Incompatible, calculatePcScoreDeductive } from '../../core/utils';
import { setupTableSorting, SortState } from '../../core/tableHandler';
import { renderFilterBar, applyCommonFilters } from '../../core/filterHandler';
import { state } from '../../core/state';
@@ -77,7 +77,7 @@ export function createListView(container: HTMLElement, config: ListViewConfig) {
const fetchMapConfig = async () => {
try {
const res = await fetch(`http://${location.hostname}:3000/api/maps`);
const res = await fetch(`${API_BASE_URL}/api/maps`);
dynamicMapConfig = await res.json();
} catch (err) { console.error('Failed to fetch map config:', err); }
};

View File

@@ -1,4 +1,5 @@
import { IMAGE_LOCATIONS } from '../components/Modal/SharedData';
import { API_BASE_URL } from '../core/utils';
import { createIcons, X, Save, Trash2, ChevronLeft, ChevronRight } from 'lucide';
export class MapEditor {
@@ -95,7 +96,7 @@ export class MapEditor {
private async loadConfig() {
try {
const res = await fetch(`http://${location.hostname}:3000/api/maps`);
const res = await fetch(`${API_BASE_URL}/api/maps`);
this.allMapConfig = await res.json();
} catch (err) {
console.error('Failed to load config:', err);
@@ -195,7 +196,7 @@ export class MapEditor {
this.saveBtn.disabled = true;
this.saveBtn.textContent = '저장 중...';
const res = await fetch(`http://${location.hostname}:3000/api/maps/save`, {
const res = await fetch(`${API_BASE_URL}/api/maps/save`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ path: this.currentPath, boxes: this.boxes })