전략평가 화면 수정

This commit is contained in:
Macbook
2026-06-19 21:30:37 +09:00
parent cc30d317ec
commit 7a537f96e0
2 changed files with 50 additions and 62 deletions
@@ -775,50 +775,6 @@ function StrategyEvaluationPageInner({ theme = 'dark' }: Props) {
return ( return (
<div className={`btd-page se-page se-page--${theme}`}> <div className={`btd-page se-page se-page--${theme}`}>
{selectedStrategy && (signalScanRunning || analysisSummary) && (
<header className="btd-header btd-header--seval-summary">
<div className="btd-header-actions seval-header-analysis">
{selectedStrategy && signalScanRunning && (
<span className="seval-header-analysis-busy"> </span>
)}
{selectedStrategy && analysisSummary && !signalScanRunning && (
<span
className="seval-analysis-summary"
title="일괄매수(최초 전액) · 분할매수(40/30/잔여) · 레포트와 동일 필터 기준"
>
<span className="seval-analysis-item">
:<strong>{padEvaluationSignalCount(analysisSummary.buyCount)}</strong>
</span>
<span className="seval-analysis-sep" aria-hidden>·</span>
<span className="seval-analysis-item">
:<strong>{padEvaluationSignalCount(analysisSummary.sellCount)}</strong>
</span>
<span className="seval-analysis-sep" aria-hidden>·</span>
<span className={`seval-analysis-item seval-analysis-return${
analysisSummary.fullBuyReturnPct > 0
? ' seval-analysis-return--pos'
: analysisSummary.fullBuyReturnPct < 0
? ' seval-analysis-return--neg'
: ''
}`}>
:<strong>{formatEvaluationReturnPct(analysisSummary.fullBuyReturnPct)}</strong>
</span>
<span className="seval-analysis-sep" aria-hidden>·</span>
<span className={`seval-analysis-item seval-analysis-return${
analysisSummary.splitBuyReturnPct > 0
? ' seval-analysis-return--pos'
: analysisSummary.splitBuyReturnPct < 0
? ' seval-analysis-return--neg'
: ''
}`}>
:<strong>{formatEvaluationReturnPct(analysisSummary.splitBuyReturnPct)}</strong>
</span>
</span>
)}
</div>
</header>
)}
<div className="btd-body"> <div className="btd-body">
<div <div
className={`seval-left-wrap${leftOpen ? ' seval-left-wrap--open' : ''}`} className={`seval-left-wrap${leftOpen ? ' seval-left-wrap--open' : ''}`}
@@ -978,6 +934,47 @@ function StrategyEvaluationPageInner({ theme = 'dark' }: Props) {
<main className={`btd-main${leftOpen ? '' : ' seval-main--left-collapsed'}`}> <main className={`btd-main${leftOpen ? '' : ' seval-main--left-collapsed'}`}>
<div className="btd-main-content seval-main-content"> <div className="btd-main-content seval-main-content">
{selectedStrategy && (signalScanRunning || analysisSummary) && (
<div className="seval-chart-summary-bar">
{signalScanRunning && (
<span className="seval-header-analysis-busy"> </span>
)}
{analysisSummary && !signalScanRunning && (
<span
className="seval-analysis-summary"
title="일괄매수(최초 전액) · 분할매수(40/30/잔여) · 레포트와 동일 필터 기준"
>
<span className="seval-analysis-item">
:<strong>{padEvaluationSignalCount(analysisSummary.buyCount)}</strong>
</span>
<span className="seval-analysis-sep" aria-hidden>·</span>
<span className="seval-analysis-item">
:<strong>{padEvaluationSignalCount(analysisSummary.sellCount)}</strong>
</span>
<span className="seval-analysis-sep" aria-hidden>·</span>
<span className={`seval-analysis-item seval-analysis-return${
analysisSummary.fullBuyReturnPct > 0
? ' seval-analysis-return--pos'
: analysisSummary.fullBuyReturnPct < 0
? ' seval-analysis-return--neg'
: ''
}`}>
:<strong>{formatEvaluationReturnPct(analysisSummary.fullBuyReturnPct)}</strong>
</span>
<span className="seval-analysis-sep" aria-hidden>·</span>
<span className={`seval-analysis-item seval-analysis-return${
analysisSummary.splitBuyReturnPct > 0
? ' seval-analysis-return--pos'
: analysisSummary.splitBuyReturnPct < 0
? ' seval-analysis-return--neg'
: ''
}`}>
:<strong>{formatEvaluationReturnPct(analysisSummary.splitBuyReturnPct)}</strong>
</span>
</span>
)}
</div>
)}
<StrategyEvaluationChart <StrategyEvaluationChart
market={market} market={market}
timeframe={chartTimeframe} timeframe={chartTimeframe}
+9 -18
View File
@@ -254,16 +254,6 @@
height: 30px; height: 30px;
} }
.btd-header--seval-summary {
justify-content: flex-end;
min-height: 44px;
}
.btd-header--seval-summary:empty,
.btd-header--seval-summary .seval-header-analysis:empty {
display: none;
}
.seval-left-tabs-row { .seval-left-tabs-row {
display: flex; display: flex;
align-items: flex-end; align-items: flex-end;
@@ -344,6 +334,15 @@
padding: 8px 10px; padding: 8px 10px;
} }
.seval-chart-summary-bar {
flex-shrink: 0;
display: flex;
justify-content: flex-end;
align-items: center;
min-height: 34px;
padding: 0 2px 6px;
}
.seval-main-content .seval-chart { .seval-main-content .seval-chart {
flex: 1; flex: 1;
min-height: 0; min-height: 0;
@@ -1005,14 +1004,6 @@
white-space: nowrap; white-space: nowrap;
} }
.seval-header-analysis {
flex: 1;
justify-content: flex-end;
align-items: center;
gap: 10px;
min-width: 0;
}
.seval-bulk-eval-toolbar { .seval-bulk-eval-toolbar {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;