import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { Check, Loader2 } from 'lucide-react' import { api } from '@/lib/api' import { QK } from '@/lib/queryKeys' type PullKey = 'pipeline_pull_a_share' | 'pipeline_pull_etf' | 'pipeline_pull_index' interface ScopeItem { key: PullKey label: string desc: string defaultOn: boolean } const ITEMS: ScopeItem[] = [ { key: 'pipeline_pull_a_share', label: 'A股', desc: '沪深京 A 股日K(约 5500 只)', defaultOn: true }, { key: 'pipeline_pull_index', label: '指数', desc: '主要市场指数(默认全量约 600 只)', defaultOn: true }, { key: 'pipeline_pull_etf', label: 'ETF', desc: '场内交易基金(约 1500 只,首次较慢)', defaultOn: false }, ] export function PipelineScopeConfig() { const qc = useQueryClient() const prefs = useQuery({ queryKey: QK.preferences, queryFn: api.preferences }) const updateToggle = useMutation({ mutationFn: (cfg: Partial>) => api.updatePipelinePullTypes(cfg), onSuccess: () => { qc.invalidateQueries({ queryKey: QK.preferences }) qc.invalidateQueries({ queryKey: QK.dataStatus }) }, }) const getValue = (key: PullKey, def: boolean) => prefs.data?.[key] ?? def return (

勾选盘后管道每次自动拉取的数据类型。仅影响后续同步,已存储的历史数据不受影响。

{ITEMS.map((item) => { const locked = item.key === 'pipeline_pull_a_share' const on = locked || getValue(item.key, item.defaultOn) return (
) })}
{updateToggle.isPending && (
保存中…
)}
数据通道基于免费接口,所有档位均可拉取。
) }