feat(rfa-ai): Complete RFA Approval Refactor and AI Model Revision
CI / CD Pipeline / build (push) Successful in 4m54s
CI / CD Pipeline / deploy (push) Failing after 12m9s

This commit is contained in:
2026-05-16 10:59:53 +07:00
parent 6cb3ae10ee
commit 1a162bf320
105 changed files with 5088 additions and 1083 deletions
+47
View File
@@ -176,3 +176,50 @@ export function useApproveAiStagingRecord() {
},
});
}
// ─── Phase 6: AI Monitoring & Analytics Hooks (T036, T037) ───────────────────
export interface AiAnalyticsSummary {
byDocumentType: Array<{
documentType: string;
avgConfidence: number;
overrideRate: number;
rejectedRate: number;
total: number;
}>;
overall: {
avgConfidence: number;
overrideRate: number;
rejectedRate: number;
total: number;
};
}
export const aiAnalyticsKeys = {
all: ['ai-analytics'] as const,
summary: () => [...aiAnalyticsKeys.all, 'summary'] as const,
};
export function useAiAnalyticsSummary() {
return useQuery({
queryKey: aiAnalyticsKeys.summary(),
queryFn: async (): Promise<AiAnalyticsSummary> => {
const response = await apiClient.get('/ai/analytics/summary');
return extractData<AiAnalyticsSummary>(response.data);
},
staleTime: 5 * 60 * 1000, // Analytics can be cached longer
});
}
export function useDeleteAiAuditLog() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (publicId: string): Promise<{ deleted: boolean; publicId: string }> => {
const response = await apiClient.delete(`/ai/audit-logs/${publicId}`);
return extractData<{ deleted: boolean; publicId: string }>(response.data);
},
onSuccess: () => {
void queryClient.invalidateQueries({ queryKey: aiAnalyticsKeys.all });
},
});
}