feat(ai): complete v3.2 risk watch agent
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import type { VersionWithContext } from './derive';
|
||||
import type { V22XiaobaoWarningSummary } from './v22-api';
|
||||
import type { XiaobaoRiskInsightCacheItem } from './xiaobao-risk-cache';
|
||||
import type {
|
||||
RiskReason,
|
||||
SilentRisk,
|
||||
@@ -37,6 +38,25 @@ export function filterV22XiaobaoSummariesForVisibleVersions(
|
||||
return summaries.filter((summary) => visibleVersionIds.has(summary.versionId));
|
||||
}
|
||||
|
||||
export function collectV22XiaobaoLatestInsights(
|
||||
summaries: V22XiaobaoWarningSummary[],
|
||||
): XiaobaoRiskInsightCacheItem[] {
|
||||
return summaries
|
||||
.map((summary) => summary.latestInsight)
|
||||
.filter((item): item is XiaobaoRiskInsightCacheItem => Boolean(item));
|
||||
}
|
||||
|
||||
export function mergeV22XiaobaoLatestInsights(
|
||||
relationInsights: XiaobaoRiskInsightCacheItem[],
|
||||
legacyInsights: XiaobaoRiskInsightCacheItem[],
|
||||
): XiaobaoRiskInsightCacheItem[] {
|
||||
const relationKeys = new Set(relationInsights.map((item) => insightKey(item)));
|
||||
return [
|
||||
...relationInsights,
|
||||
...legacyInsights.filter((item) => !relationKeys.has(insightKey(item))),
|
||||
];
|
||||
}
|
||||
|
||||
export function buildXiaobaoRisksFromV22Summaries(
|
||||
input: BuildXiaobaoRisksFromV22SummariesInput,
|
||||
): XiaobaoVersionRisk[] {
|
||||
@@ -118,6 +138,10 @@ function getRiskPayload(summary: unknown): Record<string, unknown> {
|
||||
return Object.keys(nested).length > 0 ? nested : root;
|
||||
}
|
||||
|
||||
function insightKey(item: XiaobaoRiskInsightCacheItem): string {
|
||||
return `${item.versionId}::${item.riskSignature}`;
|
||||
}
|
||||
|
||||
function buildCurrentSnapshot(input: {
|
||||
payload: Record<string, unknown>;
|
||||
row: V22XiaobaoWarningSummary;
|
||||
|
||||
Reference in New Issue
Block a user