From 340fc911b1ff882f8e1c566b7d1ae5760f872180 Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Sun, 20 Sep 2026 02:57:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=B7=A5=E5=85=B7=E5=88=97=E8=A1=A8):=20?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E3=80=8C=E6=8E=92=E9=99=A4=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E3=80=8D=E7=9A=84=E5=89=8D=E7=AB=AF=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=EF=BC=8C=E5=BA=94=E7=94=A8=E5=8F=AF=E8=A7=81=E6=80=A7?= =?UTF-8?q?=E4=BA=A4=E7=94=B1=E5=90=8E=E5=8F=B0=E4=B8=8A=E4=B8=8B=E6=9E=B6?= =?UTF-8?q?=E5=86=B3=E5=AE=9A=20(v26092007)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原逻辑:loadPublishedApps() 里 `.filter(a => a.url && !/wx-h5-demo/i.test(a.url))` 单独屏蔽「H5应用授权示例」,于是已上架 14 个只显示 13 个。 去掉的两个理由: 1)同一份数据在别的端不一致 —— 商城小程序「我的应用」(myApps) 直接铺 /api/mp/apps 全量,没有任何过滤,所以那边能看到它; 2)mama-box 端要用这个应用排查「openid 为空」的场景,前端把它藏掉就没法从宫格进去。 现在只保留「必须有 url」这一条(没配链接的点了没反应),谁能出现完全由后台 「应用管理」的上架/下架(isPublished)人工决定;注释里写清了历史与「别在前端 重新引入名单」。顺带说明:原来那条过滤是按 URL 正则匹配的,本身就是脆的 (demo 换域名就自动失效)。 验证:本地代理实测宫格 14 个、含「H5应用授权示例」,标题「共 14 个 ›」; 点它 → https://mp.yizhezhe.com/wx-h5-demo/?openid=…(有身份); 无 openid 时 → https://mp.yizhezhe.com/wx-h5-demo/(正好是排查要的干净入口);errors 空。 --- index.html | 2 +- js/app.js | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 6b9a49d..7b3f91a 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ 兜爸心选 · 孕育陪伴 - + diff --git a/js/app.js b/js/app.js index e26ecdd..d417475 100644 --- a/js/app.js +++ b/js/app.js @@ -3,7 +3,7 @@ (function () { 'use strict'; /* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */ - var VER = '26092006'; + var VER = '26092007'; const $ = (s, c) => (c || document).querySelector(s); const $$ = (s, c) => Array.from((c || document).querySelectorAll(s)); @@ -164,7 +164,16 @@ /* ================= 「记一下」弹层 · 全部孕期工具 = 已上架应用列表 ================= 数据:box_app /api/mp/apps(应用管理统一维护图标/名称/链接)。 - 范围:isPublished=1 且有 url;排除授权示例(wx-h5-demo,开发者用的)。 + 范围:isPublished=1 且有 url。**前端不做任何额外过滤** —— + 谁能出现在这里,完全由后台「应用管理」的上架/下架(isPublished)人工决定。 + ⚠️ 2026-09-20 按需求去掉了原来那条 `!/wx-h5-demo/i` 过滤(它单独屏蔽「H5应用授权示例」)。 + 去掉的两个理由,别再加回来: + 1)同一个应用在别的端(商城小程序「我的应用」直接铺全量)是可见的, + 只在 mama-box 屏蔽会造成「同一份数据、两个端不一样」; + 2)mama-box 端要**用这个应用排查「openid 为空」**的场景(授权示例页本身就是干这个的), + 前端把它藏掉就没法从宫格进去。 + 真要让某个应用不出现,去后台下架它,别在前端写名单 —— 名单会漂。 + ⚠️ 那个过滤是按 URL 正则匹配的,本身就是脆的:demo 换个域名就自动失效。 交互:全量铺进弹层宫格(沿用 .apps-grid/.app 样式),点击带身份跳转对应 H5。 */ function appTileColor(name) { const PALETTE = ['#F2917A', '#E8A2B8', '#8FB4E3', '#7FC8A9', '#E3B771', '#A99BD1', '#73BFB2', '#DE8F6E']; @@ -213,8 +222,12 @@ .then(r => (r.ok ? r.json() : null)) .then(d => { const items = (d && d.result && d.result.items) || []; + /* ⚠️ 只要求有 url(没配链接的点了没反应);**不再按应用名/URL 过滤** —— + 「H5应用授权示例(wx-h5-demo)」曾经在这里被单独屏蔽,2026-09-20 按需求去掉: + mama-box 要用它排查 openid 为空的场景,且它的可见性该由后台上下架决定。 + 详见上面那段注释;别在前端重新引入名单。 */ const apps = items - .filter(a => a.url && !/wx-h5-demo/i.test(a.url)) /* 排除授权示例 */ + .filter(a => a.url) .sort((x, y) => (y.seq || 0) - (x.seq || 0) || (y.no || 0) - (x.no || 0)); apps.forEach(a => { APP_BY_ID[a.identifier] = a; }); /* 供首页工具卡按 identifier 取 URL */ renderAppGrid(apps);