fix(backtest): UI 렌더링, 레이아웃 개선 및 Optuna DB 휩쏘 적용 안내 문구 패치
- 최근 잡 목록 위치 상단으로 이동 (UX 개선) - 체크박스 렌더링 방식 수정 (네이티브 스타일 통일) - 호가·휩쏘 읽기전용 필드 표시 및 Whipsaw 평균수치(stats) 핫핑크 색상 로직 복구 - Bootstrap bundle JS 복구 (비교 모달 정상 호출) - 백테스트 실행 시 후처리 파라미터 오해 방지를 위한 팝업 안내 문구 명확화
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
<title>📈 KIS Quant 백테스트 대시보드</title>
|
||||
<link rel="icon" href="data:,">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.4/dist/chart.umd.min.js"></script>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/backtest.css') }}">
|
||||
</head>
|
||||
@@ -4049,6 +4050,29 @@
|
||||
|
||||
<!-- ═══ Optuna 파람서치 (잡 시작 + 폴링, HTTP 타임아웃 회피) ═══════════════ -->
|
||||
<div id="tab-optuna" style="display:none">
|
||||
<div class="card p-3 mb-3">
|
||||
<div class="d-flex flex-wrap justify-content-between align-items-center gap-2 mb-2">
|
||||
<h6 class="mb-0">최근 잡 <small class="text-muted fw-normal">(최대 40 · 순차 스터디가 잘리지 않게)</small></h6>
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<button class="btn btn-sm btn-outline-info" onclick="compareSelectedJobs()">선택 비교</button>
|
||||
<label class="small text-muted mb-0" for="opt_jobs_sort">정렬</label>
|
||||
<select id="opt_jobs_sort" class="form-select form-select-sm" style="width:120px" onchange="optunaRefreshJobs()">
|
||||
<option value="started" selected>시작↓</option>
|
||||
<option value="finished">종료↓</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm table-hover mb-0" style="font-size:12px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>job_id</th><th>전략</th><th>기간</th><th>상태</th><th>trial</th><th>시작</th><th>종료</th><th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="opt_jobs_tbody"><tr><td colspan="8" class="text-muted">로딩…</td></tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-3 mb-3">
|
||||
<div class="d-flex flex-wrap justify-content-between align-items-center gap-2 mb-2">
|
||||
<h6 class="mb-0">🔬 Optuna TPE 탐색</h6>
|
||||
@@ -4423,28 +4447,6 @@
|
||||
<pre id="opt_briefing" class="small" style="max-height:280px;overflow:auto;white-space:pre-wrap;color:var(--text)">—</pre>
|
||||
</div>
|
||||
|
||||
<div class="card p-3 mb-3">
|
||||
<div class="d-flex flex-wrap justify-content-between align-items-center gap-2 mb-2">
|
||||
<h6 class="mb-0">최근 잡 <small class="text-muted fw-normal">(최대 40 · 순차 스터디가 잘리지 않게)</small></h6>
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<label class="small text-muted mb-0" for="opt_jobs_sort">정렬</label>
|
||||
<select id="opt_jobs_sort" class="form-select form-select-sm" style="width:120px" onchange="optunaRefreshJobs()">
|
||||
<option value="started" selected>시작↓</option>
|
||||
<option value="finished">종료↓</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm table-hover mb-0" style="font-size:12px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>job_id</th><th>전략</th><th>기간</th><th>상태</th><th>trial</th><th>시작</th><th>종료</th><th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="opt_jobs_tbody"><tr><td colspan="8" class="text-muted">로딩…</td></tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- tab-optuna end -->
|
||||
|
||||
</div><!-- container end -->
|
||||
@@ -4483,6 +4485,27 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{{ url_for('static', filename='js/backtest.js') }}?v=20260901opt_tail_ui"></script>
|
||||
<!-- 선택 비교 모달 -->
|
||||
<div class="modal fade" id="optCmpModal" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
|
||||
<div class="modal-content bg-dark text-light" style="border:1px solid #444;">
|
||||
<div class="modal-header border-bottom border-secondary py-2">
|
||||
<h5 class="modal-title fs-6">🏆 선택 항목 Top 10 비교</h5>
|
||||
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body p-2" style="background:#1e1e1e;">
|
||||
<div id="optCmpLoading" class="text-center py-4 d-none">
|
||||
<div class="spinner-border text-info" role="status"></div>
|
||||
<div class="mt-2 text-muted" style="font-size:12px;">상세 데이터를 불러오는 중...</div>
|
||||
</div>
|
||||
<div class="table-responsive" id="optCmpTableWrap">
|
||||
<!-- 비교 테이블 렌더링 영역 -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{{ url_for('static', filename='js/backtest.js') }}?v=20260901opt_params_ui4"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user