feat: 로또 자율학습 탭 — 성적표·캘리브레이션·당첨조합 분석

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-31 18:07:03 +09:00
parent ecc1ab0954
commit a57ac23064
6 changed files with 236 additions and 1 deletions

View File

@@ -0,0 +1,47 @@
import React from 'react';
const STRATEGY_ORDER = ['engine_w', 'random_null', 'coverage'];
const STRATEGY_LABEL = { engine_w: '엔진', random_null: '무작위', coverage: '커버리지' };
export default function TrackRecordCard({ byStrategy }) {
if (!byStrategy) return null;
const rows = STRATEGY_ORDER.filter((s) => byStrategy[s]);
if (rows.length === 0) return null;
return (
<div className="evolver-card backtest-track-record">
<h2>누적 성적표</h2>
<table className="backtest-table">
<thead>
<tr>
<th>전략</th>
<th>누적 장수</th>
<th>회차수</th>
<th>3</th>
<th>4</th>
<th>5</th>
</tr>
</thead>
<tbody>
{rows.map((s) => {
const a = byStrategy[s];
return (
<tr key={s}>
<td>{STRATEGY_LABEL[s] || s}</td>
<td>{(a.n_tickets || 0).toLocaleString()}</td>
<td>{a.draws || 0}</td>
<td>{a['3rd'] || 0}</td>
<td>{a['4th'] || 0}</td>
<td>{a['5th'] || 0}</td>
</tr>
);
})}
</tbody>
</table>
<p className="backtest-note">
엔진이 무작위를 넘지 못하면 분석에 통계적 우위가 없다는 정직한 증거입니다.
</p>
</div>
);
}