fix: 管理后台页面修复

- AdminLayout: 侧边栏布局和导航修复
- dal.ts: 数据访问层 API 调用修复
- Dashboard: 仪表盘统计卡片和数据加载修复
- Backtest: 回测配置和结果展示修复
- LLMConfig: LLM 配置页面修复
- Predictions: 预测管理页面修复
This commit is contained in:
shangfangjian
2026-09-20 08:45:27 +08:00
parent 7b1457f0db
commit 78375d6e39
6 changed files with 223 additions and 182 deletions
+9 -11
View File
@@ -37,7 +37,7 @@ export default function PredictionsPage() {
const [matches, setMatches] = useState<Match[]>([])
const [predictions, setPredictions] = useState<Prediction[]>([])
const [matchId, setMatchId] = useState('')
const [mode, setMode] = useState<'single' | 'multi'>('multi')
const [mode] = useState<'multi'>('multi')
const [loading, setLoading] = useState(false)
const [error, setError] = useState<string | null>(null)
const [successMsg, setSuccessMsg] = useState<string | null>(null)
@@ -142,7 +142,7 @@ export default function PredictionsPage() {
{matches.map(m => (
<option key={m.id} value={m.id}>
{teamSidePrefix('home')}{(m.home_team_zh || m.home_team)} vs {teamSidePrefix('away')}{(m.away_team_zh || m.away_team)}
({m.match_date?.slice(5, 10)})
({m.match_date ? new Date(m.match_date).toLocaleDateString('zh-CN', { month: '2-digit', day: '2-digit' }) : '—'})
</option>
))}
</select>
@@ -150,14 +150,12 @@ export default function PredictionsPage() {
<div>
<label className="mb-1.5 block text-xs text-ink-500"></label>
<select
value={mode}
onChange={e => setMode(e.target.value as 'single' | 'multi')}
className="field w-full"
>
<option value="multi"> (5 + ,)</option>
<option value="single"> ()</option>
</select>
<input
type="text"
value="多专家 (5 路 + 终裁)"
readOnly
className="field w-full bg-paper-100 text-ink-500"
/>
</div>
{error && <Alert kind="error" title="预测失败" message={error} onClose={() => setError(null)} />}
@@ -305,7 +303,7 @@ export default function PredictionsPage() {
<div className="space-y-3 px-4 pb-4 pl-8 sm:px-6 sm:pl-9">
<p className="text-2xs text-ink-500">
{p.mode === 'multi' ? `多专家 · ${okAgents.length}/${p.agent_outputs?.length ?? 0} 路有效` : '单次模式'}
`多专家 · ${okAgents.length}/${p.agent_outputs?.length ?? 0} 路有效`
{p.model && <span className="ml-2 font-mono">{p.model}</span>}
</p>