mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-09-20 21:50:11 +08:00
refactor: 按代码审查清理标签优先显示策略相关代码
- 移除 AppDetailModal auto 决策分支的调试 console.log(生产不残留调试日志) - 删除 storeConfig 中无读取方的 isPriorityConfigLoaded/hasPriorityConfigFile 死变量,并修正 catch 分支借 resetPriorityConfig 误标 loaded 的语义矛盾 - getHybridDefaultOrigin 对合并应用子版匹配时,子版 category 为空则 回退顶层 app.category,避免分类规则漏匹配 - 补充 forceViewingOrigin 强制来源不随设置策略实时切换的注释(设计行为)
This commit is contained in:
@@ -644,6 +644,8 @@ const computeDefaultViewingOrigin = (
|
||||
): "spark" | "apm" => {
|
||||
// 父组件显式指定展示来源(如从已安装应用页按特定来源打开)时优先级最高,
|
||||
// 此时强制覆盖用户标签策略;否则交由下方策略逻辑决定。
|
||||
// 注意:被强制的应用(forceViewingOrigin=true)在详情页保持打开期间,
|
||||
// 即使设置页切换标签策略也不会实时变更其展示来源(已安装来源高于策略,属设计行为)。
|
||||
if (app.forceViewingOrigin && app.viewingOrigin) return app.viewingOrigin;
|
||||
|
||||
// 非合并应用只有一个来源标签,直接展示该标签
|
||||
@@ -666,9 +668,6 @@ const computeDefaultViewingOrigin = (
|
||||
// 回退到应用配置的优先级策略(getHybridDefaultOrigin),使用合并应用自身的
|
||||
// 规范标识(pkgname/category/tags)匹配服务器 priority-config.json,并约束在可用标签范围内
|
||||
const auto = getHybridDefaultOrigin(app);
|
||||
console.log(
|
||||
`[PriorityConfig] auto 决策 pkgname=${app.pkgname} category=${app.category} sparkTags=${app.sparkApp?.tags ?? ""} apmTags=${app.apmApp?.tags ?? ""} -> ${auto}`,
|
||||
);
|
||||
return available.includes(auto) ? auto : available[0];
|
||||
};
|
||||
|
||||
|
||||
+16
-17
@@ -70,14 +70,6 @@ export let dynamicPriorityConfig: PriorityRules = {
|
||||
},
|
||||
};
|
||||
|
||||
// 标记是否已从服务器加载配置
|
||||
export let isPriorityConfigLoaded = false;
|
||||
|
||||
// 标记服务器上是否存在配置文件
|
||||
// false = 没有配置文件,默认优先 Spark
|
||||
// true = 有配置文件,按配置规则判断(配置为空则默认优先 APM)
|
||||
export let hasPriorityConfigFile = false;
|
||||
|
||||
/**
|
||||
* 从服务器加载优先级配置
|
||||
* 配置文件路径: ${arch}-store/priority-config.json (放在 spark 下)
|
||||
@@ -91,7 +83,6 @@ export async function loadPriorityConfig(arch: string): Promise<void> {
|
||||
);
|
||||
const response = await priorityConfigAxios.get(configPath);
|
||||
const config = response.data;
|
||||
hasPriorityConfigFile = true;
|
||||
// 支持新旧两种配置格式
|
||||
if (config.sparkPriority || config.apmPriority) {
|
||||
// 新格式:双向配置
|
||||
@@ -122,24 +113,24 @@ export async function loadPriorityConfig(arch: string): Promise<void> {
|
||||
},
|
||||
};
|
||||
}
|
||||
isPriorityConfigLoaded = true;
|
||||
console.log(
|
||||
"[PriorityConfig] 已从服务器加载优先级配置:",
|
||||
JSON.stringify(dynamicPriorityConfig),
|
||||
);
|
||||
} catch (error) {
|
||||
// 获取失败(含 404:服务器无配置文件),默认优先 APM
|
||||
// 获取失败(含 404:服务器无配置文件),默认优先 APM。
|
||||
// 注:此处为配置缺失/加载失败,dynamicPriorityConfig 重置为空规则,
|
||||
// 由 getHybridDefaultOrigin 回退 HYBRID_DEFAULT_PRIORITY(默认 APM)。
|
||||
console.warn(
|
||||
`[PriorityConfig] 加载配置失败(${APM_STORE_BASE_URL}/${arch}-store/priority-config.json),使用默认 APM 优先:`,
|
||||
error,
|
||||
);
|
||||
hasPriorityConfigFile = false;
|
||||
resetPriorityConfig();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置优先级配置为默认值
|
||||
* 重置优先级配置为默认值(配置缺失/加载失败时调用)
|
||||
*/
|
||||
function resetPriorityConfig(): void {
|
||||
dynamicPriorityConfig = {
|
||||
@@ -154,7 +145,6 @@ function resetPriorityConfig(): void {
|
||||
tags: [],
|
||||
},
|
||||
};
|
||||
isPriorityConfigLoaded = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -198,14 +188,23 @@ export function getHybridDefaultOrigin(app: App): "apm" | "spark" {
|
||||
const result = matchPriority(app);
|
||||
if (result) return result;
|
||||
|
||||
// 合并应用:两个子版分别匹配,任一命中即采用
|
||||
// 合并应用:两个子版分别匹配,任一命中即采用。
|
||||
// 若子版自身 category 为空(如部分入口构造的 fallback 应用),
|
||||
// 回退使用顶层 app.category 参与分类规则匹配,避免漏匹配。
|
||||
if (app.isMerged) {
|
||||
const fallbackCategory = app.category;
|
||||
if (app.sparkApp) {
|
||||
const r = matchPriority(app.sparkApp);
|
||||
const sparkCandidate: App = app.sparkApp.category
|
||||
? app.sparkApp
|
||||
: { ...app.sparkApp, category: fallbackCategory };
|
||||
const r = matchPriority(sparkCandidate);
|
||||
if (r) return r;
|
||||
}
|
||||
if (app.apmApp) {
|
||||
const r = matchPriority(app.apmApp);
|
||||
const apmCandidate: App = app.apmApp.category
|
||||
? app.apmApp
|
||||
: { ...app.apmApp, category: fallbackCategory };
|
||||
const r = matchPriority(apmCandidate);
|
||||
if (r) return r;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user