mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-06-06 05:51:19 +08:00
- Rename experience/ to telemetry/ for clarity - Split 15+ large Go files (800-2200 lines) into focused modules: kernel/engine.go, backtest/runner.go, market/data.go, store/position.go, api/handler_trader.go, trader/auto_trader_grid.go, and 9 exchange traders - Split frontend monoliths: types.ts, api.ts, AITradersPage.tsx, BacktestPage.tsx into domain-specific modules with barrel re-exports - Remove stale files: screenshots, .yml.old, pyproject.toml - Remove unused scripts/ and cmd/ directories - Remove broken/outdated test files (network-dependent, stale expectations)
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { motion } from 'framer-motion'
|
|
import { DecisionCard } from '../trader/DecisionCard'
|
|
import type { Language } from '../../i18n/translations'
|
|
import type { DecisionRecord } from '../../types'
|
|
|
|
interface BacktestDecisionsTabProps {
|
|
decisions: DecisionRecord[] | undefined
|
|
language: Language
|
|
tr: (key: string) => string
|
|
}
|
|
|
|
export function BacktestDecisionsTab({ decisions, language, tr }: BacktestDecisionsTabProps) {
|
|
return (
|
|
<motion.div
|
|
key="decisions"
|
|
initial={{ opacity: 0 }}
|
|
animate={{ opacity: 1 }}
|
|
exit={{ opacity: 0 }}
|
|
className="space-y-3 max-h-[500px] overflow-y-auto"
|
|
>
|
|
{decisions && decisions.length > 0 ? (
|
|
decisions.map((d) => (
|
|
<DecisionCard
|
|
key={`${d.cycle_number}-${d.timestamp}`}
|
|
decision={d}
|
|
language={language}
|
|
/>
|
|
))
|
|
) : (
|
|
<div className="py-12 text-center" style={{ color: '#5E6673' }}>
|
|
{tr('decisionTrail.emptyHint')}
|
|
</div>
|
|
)}
|
|
</motion.div>
|
|
)
|
|
}
|