fix(小宝预警): 增加快照节流和 AI cooldown
This commit is contained in:
@@ -18,9 +18,9 @@ import { useWorkActivityStore } from '@/stores/useWorkActivityStore';
|
||||
import { useXiaobaoRiskStore } from '@/stores/useXiaobaoRiskStore';
|
||||
import { flattenVersions } from '@/lib/derive';
|
||||
import { calcXiaobaoVersionRisk, type XiaobaoVersionRisk } from '@/lib/xiaobao-risk';
|
||||
import { buildRiskInsightSignature, findPreviousRiskSnapshot, getReusableInsight, requestRiskInsight, shouldRequestRiskInsight } from '@/lib/xiaobao-risk-ai';
|
||||
import { buildRiskInsightSignature, findLatestRiskInsightForVersion, findPreviousRiskSnapshot, getReusableInsight, requestRiskInsight, shouldRequestRiskInsightWithCooldown } from '@/lib/xiaobao-risk-ai';
|
||||
import { buildVersionDailyEvidence, buildXiaobaoWorkItems } from '@/lib/xiaobao-risk-evidence';
|
||||
import { buildRiskSignature } from '@/lib/xiaobao-risk-trend';
|
||||
import { buildRiskSignature, findLatestDailySnapshot, shouldSaveRiskSnapshot } from '@/lib/xiaobao-risk-trend';
|
||||
import { filterXiaobaoWarningVersions } from '@/lib/xiaobao-warning-view';
|
||||
|
||||
type RiskFilter = 'all' | 'attention' | 'high';
|
||||
@@ -128,7 +128,9 @@ function XiaobaoWarningContent() {
|
||||
|
||||
useEffect(() => {
|
||||
risks.forEach((risk) => {
|
||||
const snapshot = risk.currentSnapshot;
|
||||
const snapshot = { ...risk.currentSnapshot, createdAt: new Date().toISOString() };
|
||||
const previousToday = findLatestDailySnapshot(snapshots, snapshot.versionId, snapshot.date);
|
||||
if (!shouldSaveRiskSnapshot(snapshot, previousToday)) return;
|
||||
const key = `${snapshot.versionId}:${snapshot.date}:${buildRiskSignature(snapshot)}`;
|
||||
if (savedSnapshotKeysRef.current.has(key)) return;
|
||||
savedSnapshotKeysRef.current.add(key);
|
||||
@@ -136,13 +138,14 @@ function XiaobaoWarningContent() {
|
||||
savedSnapshotKeysRef.current.delete(key);
|
||||
});
|
||||
});
|
||||
}, [risks, saveSnapshot]);
|
||||
}, [risks, saveSnapshot, snapshots]);
|
||||
|
||||
useEffect(() => {
|
||||
risks.forEach((risk) => {
|
||||
if (getReusableInsight(insights, risk)) return;
|
||||
const previous = findPreviousRiskSnapshot(snapshots, risk.versionId, today);
|
||||
if (!shouldRequestRiskInsight(risk, previous)) return;
|
||||
const latestInsight = findLatestRiskInsightForVersion(insights, risk.versionId);
|
||||
if (!shouldRequestRiskInsightWithCooldown(risk, previous, latestInsight)) return;
|
||||
const signature = buildRiskInsightSignature(risk);
|
||||
const key = `${risk.versionId}:${signature}`;
|
||||
if (requestedInsightKeysRef.current.has(key)) return;
|
||||
|
||||
Reference in New Issue
Block a user