feat(quant): WBS-FE-BE-100 complete Vue3 Vite8 SPA & .NET10 FastEndpoints refactoring
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 13s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 19s

This commit is contained in:
2026-07-22 15:14:28 +09:00
parent fd8ff3d51e
commit 2fe4cb288f
100 changed files with 7975 additions and 804 deletions
@@ -10,121 +10,68 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - QuantEngine</title>
<title>@ViewData["Title"] - QuantEngine ERP</title>
<!-- Tabler CSS -->
<!-- Tabler CSS Core -->
<link href="https://cdn.jsdelivr.net/npm/@@tabler/core@1.0.0/dist/css/tabler.min.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/@@tabler/core@1.0.0/dist/css/tabler-vendors.min.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/@@tabler/icons@latest/tabler-icons.css" rel="stylesheet" />
<!-- Custom Admin CSS -->
<!-- Douzone ERP Custom Theme CSS -->
<link rel="stylesheet" href="~/css/admin.css" asp-append-version="true" />
</head>
<body>
<div class="page">
<!-- Sidebar (left) -->
<aside class="navbar navbar-vertical navbar-expand-lg navbar-dark" data-bs-theme="dark">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar-menu" aria-controls="sidebar-menu" aria-expanded="false" aria-label="메뉴 토글">
<span class="navbar-toggler-icon"></span>
</button>
<h1 class="navbar-brand navbar-brand-autodark">
<a href="/Admin/Dashboard" class="d-flex align-items-center gap-2 text-decoration-none">
<i class="ti ti-chart-line" style="font-size: 1.5rem;"></i>
<span>QuantEngine</span>
</a>
</h1>
<div class="collapse navbar-collapse" id="sidebar-menu">
<ul class="navbar-nav pt-lg-3">
<li class="nav-item">
<a class="nav-link @NavActive("/Admin/Dashboard")" href="/Admin/Dashboard">
<span class="nav-link-icon"><i class="ti ti-dashboard"></i></span>
<span class="nav-link-title">대시보드</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link @NavActive("/Admin/Collection")" href="/Admin/Collection">
<span class="nav-link-icon"><i class="ti ti-database"></i></span>
<span class="nav-link-title">데이터 수집</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link @NavActive("/Admin/Monitoring")" href="/Admin/Monitoring">
<span class="nav-link-icon"><i class="ti ti-eye"></i></span>
<span class="nav-link-title">모니터링</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link @NavActive("/Admin/Users")" href="/Admin/Users">
<span class="nav-link-icon"><i class="ti ti-users"></i></span>
<span class="nav-link-title">사용자 관리</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link @NavActive("/Admin/Operations")" href="/Admin/Operations">
<span class="nav-link-icon"><i class="ti ti-settings"></i></span>
<span class="nav-link-title">운영 관리</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link @NavActive("/Admin/Database")" href="/Admin/Database">
<span class="nav-link-icon"><i class="ti ti-table"></i></span>
<span class="nav-link-title">DB 테이블 관리</span>
</a>
</li>
</ul>
</div>
<div class="douzone-layout-container">
<!-- 1. Top Toolbar & Filter Header Bar -->
<header class="douzone-header-toolbar">
<div class="d-flex align-items-center gap-3">
<span class="fw-bold fs-3 text-warning">QuantEngine ERP</span>
<span class="border-start ps-3 opacity-75">@ViewData["Title"]</span>
</div>
</aside>
<!-- Topbar -->
<header class="navbar navbar-expand-md navbar-light d-print-none">
<div class="container-xl">
<div class="navbar-nav flex-row flex-fill justify-content-between align-items-center">
<span class="fw-medium">@ViewData["Title"]</span>
<a href="/Account/Logout" class="btn btn-sm btn-outline-danger">
<i class="ti ti-logout me-1"></i> 로그아웃
</a>
</div>
<div class="d-flex align-items-center">
<button type="button" class="btn-douzone-action btn-douzone-search" id="btnDouzoneSearch"><span class="hotkey-badge">F3</span>조회</button>
<button type="button" class="btn-douzone-action btn-douzone-save" id="btnDouzoneSave"><span class="hotkey-badge">F4</span>저장</button>
<button type="button" class="btn-douzone-action btn-douzone-delete" id="btnDouzoneDelete"><span class="hotkey-badge">F5</span>삭제</button>
<button type="button" class="btn-douzone-action btn-douzone-excel" id="btnDouzoneExcel"><span class="hotkey-badge">F7</span>엑셀</button>
<a href="/Account/Logout" class="btn-douzone-action style-danger ms-3 text-decoration-none" style="background-color: var(--status-error); color: white;">로그아웃</a>
</div>
</header>
<div class="page-wrapper">
<!-- Center content -->
<div class="page-body">
<div class="container-xl">
@RenderBody()
</div>
</div>
<!-- Footer -->
<footer class="footer footer-transparent d-print-none">
<div class="container-xl">
<div class="row text-center align-items-center flex-row-reverse">
<div class="col-lg-auto ms-lg-auto">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
<a href="/Admin/Dashboard" class="link-secondary">대시보드</a>
</li>
<li class="list-inline-item">
<a href="/Admin/Operations" class="link-secondary">운영 관리</a>
</li>
</ul>
</div>
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
&copy; @DateTime.UtcNow.Year QuantEngine
</li>
</ul>
</div>
</div>
</div>
</footer>
<!-- Navigation Sub-Header Bar -->
<div style="background-color: var(--douzone-slate); padding: 4px 16px; border-bottom: 1px solid #1A252F;">
<ul class="nav nav-pills gap-1">
<li class="nav-item"><a class="nav-link text-white py-1 px-3 @NavActive("/Admin/Dashboard")" href="/Admin/Dashboard">대시보드</a></li>
<li class="nav-item"><a class="nav-link text-white py-1 px-3 @NavActive("/Admin/Collection")" href="/Admin/Collection">데이터 수집</a></li>
<li class="nav-item"><a class="nav-link text-white py-1 px-3 @NavActive("/Admin/Monitoring")" href="/Admin/Monitoring">모니터링</a></li>
<li class="nav-item"><a class="nav-link text-white py-1 px-3 @NavActive("/Admin/Decisions")" href="/Admin/Decisions">의사결정 이력</a></li>
<li class="nav-item"><a class="nav-link text-white py-1 px-3 @NavActive("/Admin/Database")" href="/Admin/Database">DB 테이블 관리</a></li>
<li class="nav-item"><a class="nav-link text-white py-1 px-3 @NavActive("/Admin/Users")" href="/Admin/Users">사용자 관리</a></li>
<li class="nav-item"><a class="nav-link text-white py-1 px-3 @NavActive("/Admin/Operations")" href="/Admin/Operations">운영 관리</a></li>
</ul>
</div>
<!-- 2. Center High-Density Data Grid Body -->
<main class="douzone-grid-body">
@RenderBody()
</main>
<!-- 3. Bottom Hotkey Guidance & Summary Footer Bar -->
<footer class="douzone-summary-footer">
<div>
<span><span class="hotkey-badge">Enter</span>다음 필드 이동</span>
<span class="ms-3"><span class="hotkey-badge">F2</span>코드 팝업</span>
<span class="ms-3"><span class="hotkey-badge">F3</span>조회</span>
<span class="ms-3"><span class="hotkey-badge">F4</span>저장</span>
<span class="ms-3"><span class="hotkey-badge">F5</span>삭제</span>
<span class="ms-3"><span class="hotkey-badge">F7</span>엑셀</span>
</div>
<div>
<span class="opacity-75">Douzone ERP Accounting UX Standard | QuantEngine v1.0</span>
</div>
</footer>
</div>
<!-- Tabler JS (bundles Bootstrap JS, incl. the Collapse plugin used by the mobile sidebar toggle above) -->
<script src="https://cdn.jsdelivr.net/npm/@@tabler/core@1.0.0/dist/js/tabler.min.js"></script>
<!-- Douzone Keyboard Engine Script -->
<script src="~/js/douzone-keyboard.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>