import { create } from 'zustand'; const s = (set, key) => (v) => set((state) => ({ [key]: typeof v === 'function' ? v(state[key]) : v })); export const usePairingStore = create((set) => ({ // Pairing foundPairs: [], showPairingModal: false, pairingFiles: null, pairingAoiMode: 'shp', pairingRegionOptions: { provinces: [], cities: [] }, pairingRegionSelection: { province: '', city: '' }, pairingRegionLoading: false, pairingRegionError: '', pairingParams: { time_baseline_min: 1, time_baseline_max: 90, overlap_threshold: 0.5, spatial_baseline_max_meters: 3000, limit_footprint_center_distance: false, coverage_diversity_penalty: 0.3, require_same_imaging_mode: false, require_same_polarization: false, aoi_overlap_threshold: 0, start_date: '', // === 新增字段 === master_date_from: '', master_date_to: '', slave_date_from: '', slave_date_to: '', strategy: 'all', num_connections: 1, reference_image_id: null, allowed_satellites: ['LT1A', 'LT1B'], cross_satellite_pairing: false, }, pairingAlert: { warnings: [], fallbackUsed: false }, // PS showPsModal: false, psFiles: null, psAoiMode: 'shp', psRegionOptions: { provinces: [], cities: [] }, psRegionSelection: { province: '', city: '' }, psRegionLoading: false, psRegionError: '', psResults: null, psParams: { initial_overlap_threshold: 0.3, final_overlap_threshold: 0.95 }, setFoundPairs: s(set, 'foundPairs'), setShowPairingModal: s(set, 'showPairingModal'), setPairingFiles: s(set, 'pairingFiles'), setPairingAoiMode: s(set, 'pairingAoiMode'), setPairingRegionOptions: s(set, 'pairingRegionOptions'), setPairingRegionSelection: s(set, 'pairingRegionSelection'), setPairingRegionLoading: s(set, 'pairingRegionLoading'), setPairingRegionError: s(set, 'pairingRegionError'), setPairingParams: s(set, 'pairingParams'), setPairingAlert: s(set, 'pairingAlert'), setShowPsModal: s(set, 'showPsModal'), setPsFiles: s(set, 'psFiles'), setPsAoiMode: s(set, 'psAoiMode'), setPsRegionOptions: s(set, 'psRegionOptions'), setPsRegionSelection: s(set, 'psRegionSelection'), setPsRegionLoading: s(set, 'psRegionLoading'), setPsRegionError: s(set, 'psRegionError'), setPsResults: s(set, 'psResults'), setPsParams: s(set, 'psParams'), }));