fix: reset strategy builder identity

This commit is contained in:
shy3130
2026-07-16 16:12:06 +08:00
parent c763a6970f
commit 1e38c8cebb
2 changed files with 18 additions and 8 deletions
@@ -193,23 +193,35 @@ export function StrategyBuilderDialog({ open, onClose, onSavedId, mode = 'create
const [checkedAi, setCheckedAi] = useState(false)
const [loaded, setLoaded] = useState(false)
const resetDraftState = useCallback(() => {
setStep(1); setTab('ai'); setName(''); setDescription(''); setDirection('long')
setExecutionBackend('polars_expr'); setRules(''); setCode(''); setInstruction('')
setPreviewTab('params'); setStrategyId(''); setSource('ai'); setValidated(false); setError('')
}, [])
// 打开时恢复草稿
useEffect(() => {
if (!open) { setLoaded(false); return }
const d = draftStore.get(null)
if (d) {
const restoredSource = d.source ?? (d.strategyId?.startsWith('custom_') ? 'custom' : 'ai')
const restoredId = mode === 'create' && d.strategyId
? slugId(restoredSource)
: (d.strategyId ?? '')
setStep(d.step ?? 1); setName(d.name ?? ''); setDescription(d.description ?? '')
setDirection(d.direction ?? 'long')
setExecutionBackend(
(d as any).executionBackend
?? (String(d.code ?? '').includes('matrix_native') ? 'matrix_native' : 'polars_expr'),
)
setRules(d.rules ?? ''); setCode(d.code ?? ''); setStrategyId(d.strategyId ?? '')
setSource((d as any).source ?? (d.strategyId?.startsWith('custom_') ? 'custom' : 'ai'))
if (mode === 'modify') setTab('custom')
setRules(d.rules ?? ''); setCode(d.code ?? ''); setStrategyId(restoredId)
setSource(restoredSource)
setTab(mode === 'modify' || restoredSource === 'custom' ? 'custom' : 'ai')
} else {
resetDraftState()
}
setLoaded(true)
}, [open])
}, [open, mode, draftStore, resetDraftState])
// 打开时检查 AI 状态
useEffect(() => {
@@ -229,9 +241,7 @@ export function StrategyBuilderDialog({ open, onClose, onSavedId, mode = 'create
const clearDraft = () => {
draftStore.set(null)
setName(''); setDescription(''); setDirection('long'); setExecutionBackend('polars_expr')
setRules(''); setCode(''); setStep(1); setError(''); setInstruction('')
setStrategyId(''); setSource('ai'); setValidated(false)
resetDraftState()
}
const handleClose = () => { if (name || rules || code) persist(); onClose() }
@@ -571,7 +571,7 @@ export function StrategySettingsDialog({ strategyId, onClose, onSaved, onAiModif
</button>
{(detail?.source === 'ai' || detail?.source === 'custom') && (
<button onClick={() => { setDeleteError(''); setShowDeleteConfirm(true) }}
className="text-[10px] text-muted/40 hover:text-danger transition-colors"></button>
className="text-[10px] text-danger hover:text-danger/80 transition-colors"></button>
)}
</div>
<div className="flex items-center gap-2">