refactor(version): 优化版本管理中的灰度发布配置
- 移除 GrayMemberGroup 和 GraySelectionSource 类型定义 - 添加 GrayTag 类型定义以支持标签模式 - 重命名 normalizeCallbackUrl 函数为 normalizeUrl - 简化灰度发布配置逻辑,移除本地选择源相关代码 - 将灰度同步回调URL和发布回调URL统一为 graySyncUrl 和 publishCallbackUrl - 更新灰度成员加载逻辑为标签加载逻辑 - 移除成员模式下的回调地址验证和选择源设置 - 简化灰度模式切换条件判断逻辑
这个提交包含在:
父节点
f116b63369
当前提交
0a8011d9be
@ -923,9 +923,8 @@ import {
|
|||||||
updateAdminApi,
|
updateAdminApi,
|
||||||
type AppPackageInspectResult,
|
type AppPackageInspectResult,
|
||||||
type AppVersion,
|
type AppVersion,
|
||||||
type GrayMemberGroup,
|
|
||||||
type GrayMode,
|
type GrayMode,
|
||||||
type GraySelectionSource,
|
type GrayTag,
|
||||||
type PublishMode,
|
type PublishMode,
|
||||||
type RnBundle,
|
type RnBundle,
|
||||||
type RnBundleInspectResult,
|
type RnBundleInspectResult,
|
||||||
@ -1420,21 +1419,17 @@ async function removeStoreConfig(type: StoreType) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function normalizePublishConfig(raw: Record<string, unknown> | null | undefined) {
|
function normalizePublishConfig(raw: Record<string, unknown> | null | undefined) {
|
||||||
const normalizeCallbackUrl = (value: unknown) => {
|
const normalizeUrl = (value: unknown) => {
|
||||||
const text = String(value ?? '').trim()
|
const text = String(value ?? '').trim()
|
||||||
return /^https?:\/\//i.test(text) ? text : ''
|
return /^https?:\/\//i.test(text) ? text : ''
|
||||||
}
|
}
|
||||||
const grayMode = String(raw?.grayMode ?? 'PERCENT') as GrayMode
|
|
||||||
const graySelectionSource = String(raw?.graySelectionSource ?? 'LOCAL') as GraySelectionSource
|
|
||||||
return {
|
return {
|
||||||
allowAnonymousUpdateCheck: Boolean(raw?.allowAnonymousUpdateCheck ?? raw?.defaultAllowAnonymousUpdateCheck ?? false),
|
allowAnonymousUpdateCheck: Boolean(raw?.allowAnonymousUpdateCheck ?? false),
|
||||||
defaultGrayPercent: Number((raw as Record<string, unknown>)?.defaultGrayPercent ?? 0),
|
defaultGrayPercent: Number(raw?.defaultGrayPercent ?? 0),
|
||||||
grayMode,
|
grayMode: String(raw?.grayMode ?? 'PERCENT') as GrayMode,
|
||||||
graySelectionSource,
|
graySyncUrl: normalizeUrl(raw?.graySyncUrl),
|
||||||
graySelectCallbackUrl: normalizeCallbackUrl((raw as Record<string, unknown>)?.graySelectCallbackUrl),
|
publishCallbackUrl: normalizeUrl(raw?.publishCallbackUrl),
|
||||||
graySelectCallbackSecret: String((raw as Record<string, unknown>)?.graySelectCallbackSecret ?? ''),
|
enableRealtimeNotification: Boolean(raw?.enableRealtimeNotification ?? false),
|
||||||
grayDirectorySyncCallbackUrl: normalizeCallbackUrl((raw as Record<string, unknown>)?.grayDirectorySyncCallbackUrl),
|
|
||||||
grayDirectorySyncCallbackSecret: String((raw as Record<string, unknown>)?.grayDirectorySyncCallbackSecret ?? ''),
|
|
||||||
parallelStoreUpload: raw?.parallelStoreUpload !== false,
|
parallelStoreUpload: raw?.parallelStoreUpload !== false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1457,10 +1452,6 @@ async function loadPublishConfig() {
|
|||||||
publishConfigForm.value = parsePublishConfig(res.data.data.configJson)
|
publishConfigForm.value = parsePublishConfig(res.data.data.configJson)
|
||||||
if (allowAnonymousUpdateCheck.value) {
|
if (allowAnonymousUpdateCheck.value) {
|
||||||
publishConfigForm.value.grayMode = 'PERCENT'
|
publishConfigForm.value.grayMode = 'PERCENT'
|
||||||
publishConfigForm.value.graySelectionSource = 'LOCAL'
|
|
||||||
}
|
|
||||||
if (publishConfigForm.value.grayMode === 'MEMBERS' && !hasAnyGrayCallback.value) {
|
|
||||||
publishConfigForm.value.grayMode = 'PERCENT'
|
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
publishConfigForm.value = normalizePublishConfig({})
|
publishConfigForm.value = normalizePublishConfig({})
|
||||||
@ -1472,26 +1463,18 @@ async function loadPublishConfig() {
|
|||||||
async function savePublishConfig() {
|
async function savePublishConfig() {
|
||||||
savingPublishConfig.value = true
|
savingPublishConfig.value = true
|
||||||
try {
|
try {
|
||||||
const normalizeCallbackUrl = (value: string) => {
|
const normalizeUrl = (value: string) => {
|
||||||
const trimmed = value.trim()
|
const trimmed = value.trim()
|
||||||
return /^https?:\/\//i.test(trimmed) ? trimmed : ''
|
return /^https?:\/\//i.test(trimmed) ? trimmed : ''
|
||||||
}
|
}
|
||||||
const payload = {
|
const payload = {
|
||||||
...publishConfigForm.value,
|
...publishConfigForm.value,
|
||||||
defaultGrayPercent: Math.min(Math.max(Number(publishConfigForm.value.defaultGrayPercent || 0), 0), 100),
|
defaultGrayPercent: Math.min(Math.max(Number(publishConfigForm.value.defaultGrayPercent || 0), 0), 100),
|
||||||
graySelectCallbackUrl: normalizeCallbackUrl(publishConfigForm.value.graySelectCallbackUrl),
|
graySyncUrl: normalizeUrl(publishConfigForm.value.graySyncUrl),
|
||||||
grayDirectorySyncCallbackUrl: normalizeCallbackUrl(publishConfigForm.value.grayDirectorySyncCallbackUrl),
|
publishCallbackUrl: normalizeUrl(publishConfigForm.value.publishCallbackUrl),
|
||||||
}
|
}
|
||||||
if (payload.allowAnonymousUpdateCheck) {
|
if (payload.allowAnonymousUpdateCheck) {
|
||||||
payload.grayMode = 'PERCENT'
|
payload.grayMode = 'PERCENT'
|
||||||
payload.graySelectionSource = 'LOCAL'
|
|
||||||
}
|
|
||||||
if (payload.grayMode === 'MEMBERS' && !hasAnyGrayCallback.value) {
|
|
||||||
ElMessage.warning('成员模式至少需要配置一个回调地址')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (payload.grayMode === 'MEMBERS' && !hasGrayDirectorySyncCallback.value) {
|
|
||||||
payload.graySelectionSource = 'CALLBACK'
|
|
||||||
}
|
}
|
||||||
await updateAdminApi.savePublishConfig(appKey.value, payload)
|
await updateAdminApi.savePublishConfig(appKey.value, payload)
|
||||||
ElMessage.success('发布配置已保存')
|
ElMessage.success('发布配置已保存')
|
||||||
@ -2464,15 +2447,9 @@ watch(storeConfigs, () => {
|
|||||||
}
|
}
|
||||||
}, { deep: true })
|
}, { deep: true })
|
||||||
|
|
||||||
watch([grayMemberKeyword, grayMemberGroupFilter], () => {
|
|
||||||
if (showGray.value && grayForm.value.grayMode === 'MEMBERS' && grayForm.value.selectionSource === 'LOCAL') {
|
|
||||||
loadGrayMembers()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(grayForm, () => {
|
watch(grayForm, () => {
|
||||||
if (showGray.value && grayForm.value.grayMode === 'MEMBERS' && grayForm.value.selectionSource === 'LOCAL') {
|
if (showGray.value && grayForm.value.grayMode === 'MEMBERS') {
|
||||||
loadGrayMembers()
|
loadGrayTags()
|
||||||
}
|
}
|
||||||
}, { deep: true })
|
}, { deep: true })
|
||||||
|
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户