feat: 로또 백테스트 탭 UI 폴리시 (1·2등 컬럼·빈 상태·차트 박스 CSS)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -58,6 +58,9 @@
|
|||||||
.winner-card .winner-meta strong { color: #f1f5f9; font-weight: 600; }
|
.winner-card .winner-meta strong { color: #f1f5f9; font-weight: 600; }
|
||||||
.winner-card .winner-chart { background: rgba(0,0,0,0.15); border-radius: 8px; padding: 8px; }
|
.winner-card .winner-chart { background: rgba(0,0,0,0.15); border-radius: 8px; padding: 8px; }
|
||||||
|
|
||||||
|
/* Backtest — WinnerAnalysisCard chart wrapper (standalone, not inside .winner-card) */
|
||||||
|
.backtest-winner-chart { background: rgba(0,0,0,0.15); border-radius: 8px; padding: 8px; }
|
||||||
|
|
||||||
/* TrialsGrid */
|
/* TrialsGrid */
|
||||||
.trials-grid .grid {
|
.trials-grid .grid {
|
||||||
display: grid; grid-template-columns: repeat(6, 1fr);
|
display: grid; grid-template-columns: repeat(6, 1fr);
|
||||||
|
|||||||
@@ -7,17 +7,22 @@ export default function TrackRecordCard({ byStrategy }) {
|
|||||||
if (!byStrategy) return null;
|
if (!byStrategy) return null;
|
||||||
|
|
||||||
const rows = STRATEGY_ORDER.filter((s) => byStrategy[s]);
|
const rows = STRATEGY_ORDER.filter((s) => byStrategy[s]);
|
||||||
if (rows.length === 0) return null;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="evolver-card backtest-track-record">
|
<div className="evolver-card backtest-track-record">
|
||||||
<h2>누적 성적표</h2>
|
<h2>누적 성적표</h2>
|
||||||
|
{rows.length === 0 ? (
|
||||||
|
<p className="backtest-note">아직 백테스트 데이터가 없습니다.</p>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
<table className="backtest-table">
|
<table className="backtest-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>전략</th>
|
<th>전략</th>
|
||||||
<th>누적 장수</th>
|
<th>누적 장수</th>
|
||||||
<th>회차수</th>
|
<th>회차수</th>
|
||||||
|
<th>1등</th>
|
||||||
|
<th>2등</th>
|
||||||
<th>3등</th>
|
<th>3등</th>
|
||||||
<th>4등</th>
|
<th>4등</th>
|
||||||
<th>5등</th>
|
<th>5등</th>
|
||||||
@@ -31,6 +36,8 @@ export default function TrackRecordCard({ byStrategy }) {
|
|||||||
<td>{STRATEGY_LABEL[s] || s}</td>
|
<td>{STRATEGY_LABEL[s] || s}</td>
|
||||||
<td>{(a.n_tickets || 0).toLocaleString()}</td>
|
<td>{(a.n_tickets || 0).toLocaleString()}</td>
|
||||||
<td>{a.draws || 0}</td>
|
<td>{a.draws || 0}</td>
|
||||||
|
<td>{a['1st'] || 0}</td>
|
||||||
|
<td>{a['2nd'] || 0}</td>
|
||||||
<td>{a['3rd'] || 0}</td>
|
<td>{a['3rd'] || 0}</td>
|
||||||
<td>{a['4th'] || 0}</td>
|
<td>{a['4th'] || 0}</td>
|
||||||
<td>{a['5th'] || 0}</td>
|
<td>{a['5th'] || 0}</td>
|
||||||
@@ -42,6 +49,8 @@ export default function TrackRecordCard({ byStrategy }) {
|
|||||||
<p className="backtest-note">
|
<p className="backtest-note">
|
||||||
엔진이 무작위를 넘지 못하면 분석에 통계적 우위가 없다는 정직한 증거입니다.
|
엔진이 무작위를 넘지 못하면 분석에 통계적 우위가 없다는 정직한 증거입니다.
|
||||||
</p>
|
</p>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export default function WinnerAnalysisCard({ analysis }) {
|
|||||||
이번 당첨조합 분석치
|
이번 당첨조합 분석치
|
||||||
<span className="badge">무작위 상위 {pct}</span>
|
<span className="badge">무작위 상위 {pct}</span>
|
||||||
</h2>
|
</h2>
|
||||||
<div className="winner-chart">
|
<div className="backtest-winner-chart">
|
||||||
<ResponsiveContainer width="100%" height={240}>
|
<ResponsiveContainer width="100%" height={240}>
|
||||||
<RadarChart data={data}>
|
<RadarChart data={data}>
|
||||||
<PolarGrid stroke="rgba(255,255,255,0.12)" />
|
<PolarGrid stroke="rgba(255,255,255,0.12)" />
|
||||||
|
|||||||
Reference in New Issue
Block a user