feat: add points risk report

This commit is contained in:
Codex
2026-06-30 15:12:32 +08:00
parent a5a2caa2e9
commit 87f4cf9c4e
15 changed files with 522 additions and 25 deletions

View File

@@ -579,6 +579,33 @@ export interface PointExchangeItemInput {
metadata?: Record<string, unknown>;
}
export interface PointsRiskReport {
range?: {
timeRange?: '7d' | '30d' | '90d';
startDate?: string;
endDate?: string;
};
thresholds?: Record<string, number>;
summary?: {
eventCount?: number;
affectedUsers?: number;
earnedPoints?: number;
spentPoints?: number;
netPoints?: number;
maxEarnedEvent?: number;
maxSpentEvent?: number;
suspiciousUserCount?: number;
suspiciousEventCount?: number;
riskScore?: number;
};
eventBreakdown?: Array<Record<string, unknown>>;
suspiciousUsers?: Array<Record<string, unknown>>;
suspiciousEvents?: Array<Record<string, unknown>>;
suspiciousTasks?: Array<Record<string, unknown>>;
suspiciousExchanges?: Array<Record<string, unknown>>;
dailyTrend?: Array<Record<string, unknown>>;
}
export interface CodeBatchItem {
id: string;
name?: string | null;
@@ -1242,6 +1269,19 @@ export async function loadPointExchangeOrders(query: {
});
}
export async function loadPointsRiskReport(query: {
timeRange?: '7d' | '30d' | '90d';
highEarnedThreshold?: number;
highClaimThreshold?: number;
highEventPointsThreshold?: number;
highRedeemThreshold?: number;
limit?: number;
} = {}) {
return apiRequest<{ item?: PointsRiskReport }>('/api/tenant-admin/points-risk-report', {
query: { ...query, limit: query.limit || 20 },
});
}
export async function loadCodeBatches() {
return apiRequest<{ items?: CodeBatchItem[] }>('/api/tenant-admin/code-batches');
}