import { ExperimentStatus } from '@/enums'; import { NodeStatus } from '@/types'; import { parseJsonText } from './index'; /** * 获取工作流节点 * * @param node_status - 流水线workflow节点,json字符串 * @return workflow 节点 */ export const getWorkflowStatus = (node_status?: string | null) => { if (!node_status) { return undefined; } const nodeStatusJson = parseJsonText(node_status); if (!nodeStatusJson) { return undefined; } for (const key in nodeStatusJson) { if (key.startsWith('workflow')) { return nodeStatusJson[key]; } } return undefined; }; /** * 获取实例状态 * 终止或者 workflowStatus 不存在时,取实例状态,否则取流水线状态 * * @param instanceStatus - 实例状态 * @param workflowStatus - 流水线workflow节点 * @return 实例状态 */ export const getExperimentInstanceStatus = ( instanceStatus: ExperimentStatus, workflowStatus?: NodeStatus, ): ExperimentStatus => { return instanceStatus === ExperimentStatus.Terminated || !workflowStatus ? instanceStatus : workflowStatus?.phase; }; /** * 获取实例状态 * 终止或者 workflowStatus 不存在时,取实例状态,否则取流水线状态 * * @param instanceStatus - 实例状态 * @param workflowStatus - 流水线workflow节点 * @return 实例状态 */ export const getInstanceStatusInList = ( instanceStatus: ExperimentStatus, node_status?: string | null, ): ExperimentStatus => { const workflowStatus = getWorkflowStatus(node_status); return getExperimentInstanceStatus(instanceStatus, workflowStatus); };