| 955 | }; |
| 956 | |
| 957 | const buildAutomationWorkflowFromDetail = (baseWorkflow, detail) => { |
| 958 | const job = (detail && typeof detail === 'object' && detail.job && typeof detail.job === 'object') ? detail.job : null; |
| 959 | const payload = (job && job.payload && typeof job.payload === 'object') ? job.payload : null; |
| 960 | const progress = (payload && payload.aiProgress && typeof payload.aiProgress === 'object') ? payload.aiProgress : null; |
| 961 | const result = (payload && payload.aiResult && typeof payload.aiResult === 'object') ? payload.aiResult : null; |
| 962 | const rawStatus = String(job?.status || '').trim().toLowerCase(); |
| 963 | const workflow = { |
| 964 | ...(baseWorkflow && typeof baseWorkflow === 'object' ? baseWorkflow : {}) |
| 965 | }; |
| 966 | if (job && Number(job.id || 0) > 0) { |
| 967 | workflow.jobId = Number(job.id || 0); |
| 968 | } |
| 969 | workflow.pending = false; |
| 970 | workflow.confirmed = rawStatus === 'succeeded'; |
| 971 | workflow.queued = rawStatus === 'queued'; |
| 972 | workflow.running = rawStatus === 'running'; |
| 973 | workflow.status = rawStatus === 'succeeded' |
| 974 | ? 'completed' |
| 975 | : (rawStatus || 'queued'); |
| 976 | |
| 977 | const progressProcessed = Number(progress?.processedCount || 0); |
| 978 | const progressFiltered = Number(progress?.filteredOutCount || 0); |
| 979 | const progressFailed = Number(progress?.failedCount || 0); |
| 980 | const resultProcessed = Number(result?.processedCount || 0); |
| 981 | const resultFiltered = Number(result?.filteredOutCount || 0); |
| 982 | const resultFailed = Number(result?.failedCount || 0); |
| 983 | workflow.processed = rawStatus === 'succeeded' || rawStatus === 'failed' || rawStatus === 'dead' || rawStatus === 'canceled' |
| 984 | ? resultProcessed |
| 985 | : progressProcessed; |
| 986 | workflow.filtered = rawStatus === 'succeeded' || rawStatus === 'failed' || rawStatus === 'dead' || rawStatus === 'canceled' |
| 987 | ? resultFiltered |
| 988 | : progressFiltered; |
| 989 | workflow.failed = rawStatus === 'succeeded' || rawStatus === 'failed' || rawStatus === 'dead' || rawStatus === 'canceled' |
| 990 | ? resultFailed |
| 991 | : progressFailed; |
| 992 | workflow.lastFile = String(progress?.lastFile || '').trim(); |
| 993 | workflow.savedOutputFile = (result?.savedOutputFile && typeof result.savedOutputFile === 'object') |
| 994 | ? result.savedOutputFile |
| 995 | : null; |
| 996 | workflow.savedOutputJsonFile = (result?.savedOutputJsonFile && typeof result.savedOutputJsonFile === 'object') |
| 997 | ? result.savedOutputJsonFile |
| 998 | : null; |
| 999 | workflow.adapterStats = (result?.adapterStats && typeof result.adapterStats === 'object') |
| 1000 | ? result.adapterStats |
| 1001 | : null; |
| 1002 | return workflow; |
| 1003 | }; |
| 1004 | |
| 1005 | const buildWorkflowCard = (workflow) => { |
| 1006 | if (!workflow || typeof workflow !== 'object') return ''; |