fix(小宝预警): 保证建议不为空并显示更新中

This commit is contained in:
Script Generator
2026-06-30 14:55:13 +08:00
parent 1daa2f7ec4
commit b365ce65a3
7 changed files with 356 additions and 17 deletions

View File

@@ -13,11 +13,14 @@ import type { XiaobaoRiskSnapshot } from '@/lib/xiaobao-risk-trend';
interface XiaobaoRiskState {
snapshots: XiaobaoRiskSnapshot[];
insights: XiaobaoRiskInsightCacheItem[];
pendingInsightKeys: string[];
riskDataLoaded: boolean;
error?: string;
fetchRiskData: () => Promise<void>;
saveSnapshot: (item: XiaobaoRiskSnapshot) => Promise<void>;
saveInsight: (item: XiaobaoRiskInsightCacheItem) => Promise<void>;
beginInsightUpdate: (key: string) => void;
finishInsightUpdate: (key: string) => void;
}
async function loadSnapshots(): Promise<XiaobaoRiskSnapshot[] | null> {
@@ -42,6 +45,7 @@ let insightSaveQueue: Promise<void> = Promise.resolve();
export const useXiaobaoRiskStore = create<XiaobaoRiskState>((set, get) => ({
snapshots: [],
insights: [],
pendingInsightKeys: [],
riskDataLoaded: false,
error: undefined,
@@ -91,4 +95,15 @@ export const useXiaobaoRiskStore = create<XiaobaoRiskState>((set, get) => ({
throw error;
}
},
beginInsightUpdate: (key) => {
if (!key) return;
if (get().pendingInsightKeys.includes(key)) return;
set({ pendingInsightKeys: [...get().pendingInsightKeys, key] });
},
finishInsightUpdate: (key) => {
if (!key) return;
set({ pendingInsightKeys: get().pendingInsightKeys.filter((item) => item !== key) });
},
}));