53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
import { formatDateTime, statusTypeMap } from "@/module/experiment/model/experiment-view-model";
|
|
|
|
export const mapReleaseDetail = (item = {}) => ({
|
|
id: item.id || "",
|
|
experimentId: item.experiment_id || "",
|
|
versionNo: item.version_no ?? 0,
|
|
status: item.status || "draft",
|
|
runtimePayload: item.runtime_payload || {},
|
|
});
|
|
|
|
export const buildReleaseStatusTag = (status) => statusTypeMap[status] || "info";
|
|
|
|
export const buildReleaseTitle = (release) =>
|
|
release?.versionNo ? `版本 v${release.versionNo}` : "未命名版本";
|
|
|
|
export const buildRuntimePayloadSummary = (payload = {}) => {
|
|
const topLevelKeys = Object.keys(payload || {});
|
|
const variants = Array.isArray(payload?.variants) ? payload.variants.length : 0;
|
|
|
|
return {
|
|
keyCount: topLevelKeys.length,
|
|
variants,
|
|
keys: topLevelKeys,
|
|
};
|
|
};
|
|
|
|
export const buildReleaseReadiness = ({ release, payloadSummary }) => {
|
|
if (!release?.id) {
|
|
return {
|
|
level: "warning",
|
|
title: "版本尚未就緒",
|
|
description: "先確認版本已建立,再進行執行內容與發佈檢查。",
|
|
};
|
|
}
|
|
|
|
if (payloadSummary.keyCount === 0) {
|
|
return {
|
|
level: "warning",
|
|
title: "這個版本尚未包含執行內容",
|
|
description: "先確認版本是否已正確建立執行內容,之後才能往發佈與套用驗證走。",
|
|
};
|
|
}
|
|
|
|
return {
|
|
level: "ready",
|
|
title: "這個版本已具備執行內容",
|
|
description: "可以發佈此版本,讓頁面變更上線並開始追蹤成效。",
|
|
};
|
|
};
|
|
|
|
export const buildReleaseUpdatedHint = (value) =>
|
|
value ? formatDateTime(value) : "目前尚未記錄更新時間";
|