أعد هيكلة منطق استطلاع المهام للتعامل مع حمولات الأخطاء المنظمة وتحسين رسائل الخطأ

This commit is contained in:
Your Name
2026-03-25 16:51:38 +02:00
parent 14743c6cfe
commit aa3420281c
4 changed files with 157 additions and 13 deletions

View File

@@ -187,12 +187,22 @@ export interface TaskResponse {
message: string;
}
export interface TaskErrorPayload {
error_code?: string;
user_message?: string;
task_id?: string;
trace_id?: string;
message?: string;
error?: string;
detail?: string;
}
export interface TaskStatus {
task_id: string;
state: 'PENDING' | 'PROCESSING' | 'SUCCESS' | 'FAILURE';
progress?: string;
result?: TaskResult;
error?: string;
error?: string | TaskErrorPayload;
}
export interface TaskResult {
@@ -200,6 +210,10 @@ export interface TaskResult {
download_url?: string;
filename?: string;
error?: string;
error_code?: string;
user_message?: string;
task_id?: string;
trace_id?: string;
original_size?: number;
compressed_size?: number;
reduction_percent?: number;
@@ -229,6 +243,33 @@ export interface TaskResult {
tables_found?: number;
}
function isTaskErrorPayload(value: unknown): value is TaskErrorPayload {
return Boolean(value) && typeof value === 'object';
}
export function getTaskErrorMessage(error: unknown, fallback: string): string {
if (typeof error === 'string' && error.trim()) {
return error.trim();
}
if (isTaskErrorPayload(error)) {
const candidates = [
error.user_message,
error.message,
error.error,
error.detail,
];
for (const candidate of candidates) {
if (typeof candidate === 'string' && candidate.trim()) {
return candidate.trim();
}
}
}
return fallback;
}
export interface AuthUser {
id: number;
email: string;