fix: 处理 PR 审查意见(竞态/类型安全/冗余/日志泄露)

- App.vue fetchAppFromStore 的 fetch 接入 rootAbortController.signal,
  组件卸载时取消请求,避免竞态与内存泄漏;catch 静默处理 AbortError。
- App.vue loadHome 远程字段由 `as string` 断言改为 typeof 运行时守卫,
  避免非字符串数据注入响应式状态(非崩溃,属改进)。
- ranking.ts topUpdatedContributors 移除对 topByUpdate 已过滤结果的冗余 filter。
- storeConfig 加载成功日志改为仅打印规则条数,避免完整配置泄露且保留诊断价值。
- 未采纳:parseAppPayload 默认 origin=spark 维持不变(spark 为历史默认源,
  盲改 apm 有反向误路由风险,且该字符串分支仅为极旧格式兜底)。
This commit is contained in:
xiyidaiwa
2026-08-10 17:19:55 +08:00
parent 9247fe8e63
commit 800a92b419
3 changed files with 41 additions and 12 deletions
+9 -2
View File
@@ -113,9 +113,16 @@ export async function loadPriorityConfig(arch: string): Promise<void> {
},
};
}
// 仅打印规则计数而非完整配置,避免潜在敏感信息泄露(诊断用)
const ruleCount = (r: {
pkgnames: string[];
categories: string[];
tags: string[];
}) => r.pkgnames.length + r.categories.length + r.tags.length;
console.log(
"[PriorityConfig] 已从服务器加载优先级配置:",
JSON.stringify(dynamicPriorityConfig),
`[PriorityConfig] 已从服务器加载优先级配置: spark ${ruleCount(
dynamicPriorityConfig.sparkPriority,
)} 条, apm ${ruleCount(dynamicPriorityConfig.apmPriority)}`,
);
} catch (error) {
// 获取失败(含 404:服务器无配置文件),默认优先 APM。