docs(private): 更新私有化SDK设计文档添加配置管理和错误码规范
- Flutter包名格式从xuqm_private_flutter_*改为xuqm_private_* - 添加configVersion字段用于追踪配置变更,格式为YYYY.MM.DD-序号 - 添加配置版本管理说明,包含schemaVersion兼容性策略 - 添加配置热更新机制,支持冷加载和热加载两种方式 - 添加多环境配置支持,可通过activeProfile指定生效环境 - 添加统一错误码规范,覆盖配置缺失、格式错误、版本不兼容等场景 - 更新验收标准,包含热更新、多环境切换、错误码一致性要求 - 添加私有化开发计划中的错误码规范、文档同步、数据迁移等任务 - 补充MySQL运维细节、证书自动续期、监控告警、日志收集等部署要求 - 添加性能基准指标,包含HTTP API、WebSocket、文件传输等性能要求 - 修复应用商店审核状态轮询中的逻辑错误,添加小米商店特殊处理 - 更新前端界面显示审核版本信息,优化状态刷新逻辑
这个提交包含在:
父节点
a1e4d5741b
当前提交
b6f2aedc70
@ -70,7 +70,7 @@
|
|||||||
<div class="store-review-tags">
|
<div class="store-review-tags">
|
||||||
<template v-for="item in parseStoreReview(row.storeReviewStatus)" :key="item.store">
|
<template v-for="item in parseStoreReview(row.storeReviewStatus)" :key="item.store">
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
v-if="item.state === 'REJECTED' && item.reason"
|
v-if="item.reason"
|
||||||
:content="item.reason"
|
:content="item.reason"
|
||||||
placement="top"
|
placement="top"
|
||||||
>
|
>
|
||||||
@ -671,6 +671,10 @@
|
|||||||
<span class="meta-label">线上版本</span>
|
<span class="meta-label">线上版本</span>
|
||||||
<span class="meta-value">{{ [item.liveVersionName, item.liveVersionCode].filter(Boolean).join(' · ') }}</span>
|
<span class="meta-value">{{ [item.liveVersionName, item.liveVersionCode].filter(Boolean).join(' · ') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="item.reviewVersionName || item.reviewVersionCode" class="review-card-meta-item">
|
||||||
|
<span class="meta-label">审核版本</span>
|
||||||
|
<span class="meta-value">{{ [item.reviewVersionName, item.reviewVersionCode].filter(Boolean).join(' · ') }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Rejection / withdrawal reason -->
|
<!-- Rejection / withdrawal reason -->
|
||||||
@ -1576,6 +1580,8 @@ type StoreReviewItem = {
|
|||||||
nonCurrentRelease?: boolean
|
nonCurrentRelease?: boolean
|
||||||
liveVersionName?: string
|
liveVersionName?: string
|
||||||
liveVersionCode?: string
|
liveVersionCode?: string
|
||||||
|
reviewVersionName?: string
|
||||||
|
reviewVersionCode?: string
|
||||||
}
|
}
|
||||||
const storeReviewDetailItems = ref<StoreReviewItem[]>([])
|
const storeReviewDetailItems = ref<StoreReviewItem[]>([])
|
||||||
const storeReviewDetailLive = ref(false)
|
const storeReviewDetailLive = ref(false)
|
||||||
@ -1640,26 +1646,14 @@ async function handleRefreshReviewStatus() {
|
|||||||
if (!storeReviewDetailVersion.value) return
|
if (!storeReviewDetailVersion.value) return
|
||||||
refreshingReviewStatus.value = true
|
refreshingReviewStatus.value = true
|
||||||
try {
|
try {
|
||||||
const res = await updateAdminApi.refreshStoreReviewStatus(storeReviewDetailVersion.value.id)
|
const versionId = storeReviewDetailVersion.value.id
|
||||||
const result = res.data.data
|
await updateAdminApi.refreshStoreReviewStatus(versionId)
|
||||||
if (result && result.stores) {
|
|
||||||
// Merge refreshed states into the detail items
|
|
||||||
for (const s of result.stores) {
|
|
||||||
const idx = storeReviewDetailItems.value.findIndex(i => i.store === s.storeType)
|
|
||||||
if (idx >= 0) {
|
|
||||||
// Re-parse the row's storeReviewStatus to get updated fields from DB
|
|
||||||
const row = appVersions.value.find(v => v.id === storeReviewDetailVersion.value!.id)
|
|
||||||
if (row) {
|
|
||||||
const parsed = parseStoreReview(row.storeReviewStatus)
|
|
||||||
const updated = parsed.find(p => p.store === s.storeType)
|
|
||||||
if (updated) {
|
|
||||||
storeReviewDetailItems.value[idx] = updated
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await loadAppVersions()
|
await loadAppVersions()
|
||||||
|
const row = appVersions.value.find(v => v.id === versionId)
|
||||||
|
if (row) {
|
||||||
|
storeReviewDetailVersion.value = row
|
||||||
|
storeReviewDetailItems.value = parseStoreReview(row.storeReviewStatus)
|
||||||
|
}
|
||||||
ElMessage.success('厂商状态已刷新')
|
ElMessage.success('厂商状态已刷新')
|
||||||
} catch {
|
} catch {
|
||||||
ElMessage.error('刷新失败,请稍后重试')
|
ElMessage.error('刷新失败,请稍后重试')
|
||||||
@ -2527,6 +2521,8 @@ function parseStoreReview(json?: string): StoreReviewItem[] {
|
|||||||
nonCurrentRelease: item.nonCurrentRelease === true,
|
nonCurrentRelease: item.nonCurrentRelease === true,
|
||||||
liveVersionName: String(item.liveVersionName ?? ''),
|
liveVersionName: String(item.liveVersionName ?? ''),
|
||||||
liveVersionCode: String(item.liveVersionCode ?? ''),
|
liveVersionCode: String(item.liveVersionCode ?? ''),
|
||||||
|
reviewVersionName: String(item.reviewVersionName ?? ''),
|
||||||
|
reviewVersionCode: String(item.reviewVersionCode ?? ''),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return { store, state: String(value ?? ''), reason: '' }
|
return { store, state: String(value ?? ''), reason: '' }
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户