import { StatusAnalysis } from "./types";
const STATUS_DISPLAY: Record<string, string> = {
WAIT_START: "等待目标代码仓流水线启动",
RUNNING: "代码仓同步执行中",
SUCCESS: "代码仓同步成功",
FAILURE: "执行失败",
TIMEOUT: "轮询超时,请手动检查目标代码仓同步状态",
start: "开始",
running: "代码仓同步执行中",
success: "代码仓同步成功",
failure: "执行失败",
};
const FINAL_STATUSES = new Set([
"SUCCESS", "FAILURE", "TIMEOUT",
"success", "failure",
]);
export function isStatusFinal(status: string): boolean {
return FINAL_STATUSES.has(status);
}
const FINAL_STATUS_DISPLAY: Record<string, string> = {
SUCCESS: "成功",
FAILURE: "失败",
TIMEOUT: "超时",
SKIPPED: "跳过",
NO_RECORD: "无记录",
};
* 终态的中文展示名,未映射的状态原样返回。
*
* @param status 终态码(如 NO_RECORD / SUCCESS)
* @return 展示文本
*/
export function displayFinalStatus(status: string): string {
return FINAL_STATUS_DISPLAY[status] || status;
}
export function analyzeStatus(
status: string,
pipelineStatus?: string,
failReason?: string | null,
): StatusAnalysis {
const baseText = STATUS_DISPLAY[status] || `未知状态: ${status}`;
let displayText = baseText;
if ((status === "FAILURE" || status === "failure") && failReason) {
displayText = `执行失败: ${failReason}`;
}
let severity: "info" | "warning" | "error" | "success";
if (status === "SUCCESS" || status === "success") {
severity = "success";
} else if (status === "FAILURE" || status === "failure" || status === "TIMEOUT") {
severity = "error";
} else if (status === "RUNNING" || status === "running") {
severity = "warning";
} else {
severity = "info";
}
return { isFinal: isStatusFinal(status), displayText, severity };
}
const PIPELINE_STATUS_DISPLAY: Record<string, string> = {
MQS_SEND_SUCCESS: "MQS消息已发送,等待启动",
WAIT_START: "流水线存在,等待启动",
RUNNING: "流水线正在运行",
ALREADY_RUNNING: "已有流水线在运行中,当前实例启动失败",
MQS_SEND_FAILURE: "MQS发送失败,任务结束",
SUCCESS: "任务结束,运行成功",
FAILURE: "任务结束,运行失败",
UNAUTHORIZED: "该用户无权限执行",
START_FAILURE: "任务结束,启动失败",
TIMEOUT: "任务执行超时",
ABORT: "任务被手动中止",
};
* 获取目标代码仓 pipelineStatus 的中文显示文本
*
* @param pipelineStatus 原始状态码(如 WAIT_START, SUCCESS)
* @return 中文描述,无映射时返回原始值
*/
export function getPipelineStatusDisplay(pipelineStatus: string): string {
return PIPELINE_STATUS_DISPLAY[pipelineStatus] || pipelineStatus;
}