From 3ab8af2bf55fdab0356ed573ace8eb72969c833a Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Tue, 22 Sep 2026 21:20:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=9D=A5=E4=BF=A1=E6=8F=90=E7=A4=BA):=20?= =?UTF-8?q?=E6=9C=AA=E5=A1=AB=E5=AD=95=E4=BA=A7=E6=9C=9F=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E3=80=8C=E5=AE=9D=E5=AE=9D=E6=9D=A5=E4=BF=A1=E3=80=8D?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=20=E2=80=94=E2=80=94=20=E5=8D=A1=E4=B8=8E?= =?UTF-8?q?=E7=BA=A2=E7=82=B9=E5=90=8C=E4=B8=80=E6=AC=A1=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E4=B8=80=E8=B5=B7=E6=94=B6=20(v26092211)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 产品口径(2026-09-22):**没填孕产期(pregEmpty)就不该出现宝宝来信提示**, 显示了不合理。这条**覆盖**了代码里原先那条决定(「来信与建档是两件事,故意不看 pregEmpty」)—— 那条当时是为了修「红点有、卡没有」,方向反了,见下。 做法:把首页卡与底 tab 红点收进**唯一渲染入口** renderLetterReminder(),用同一个 判据同时决定两处(pregEmpty 是硬门槛 → 建档后看 unread > 0 → 上游降级保持现状), 并把最近一次未读结果存进 _laixinUnread,供建档状态变化时重算: · syncLaixinReminder():拿到结果后交给 render(不再自己 toggle 红点); · syncPregnancy():未建档分支与建档分支各调一次 render。 于是无论 laixin 与 /profile 谁先回来,都收敛到同一结果(时序无关)。 顺带消掉上一版残留的竞态:此前红点与卡各写一份判据 —— laixin 先回来(亮红点 + 显示卡)、 /profile 后回来(只藏卡),就得到「红点有、卡没有」。现在同源同判。 另外把已不存在的 applyLaixinReminder() 的注释引用一并改掉(js + index.html 共 3 处)。 无头浏览器 + 桩后端实测(profile 延迟 0 / 1.5 / 3s,覆盖两种返回顺序): 未建档 unread=1 → 卡与红点**都无**(三档一致) 已建档 unread=1 → **都有**(确认没把建档用户一起关掉) 已建档 unread=0 → 都无 访客(无 openid)→ 都无 --- index.html | 11 +++---- js/app.js | 87 ++++++++++++++++++++++++++++++++---------------------- 2 files changed, 57 insertions(+), 41 deletions(-) diff --git a/index.html b/index.html index ea3d64f..1f24c48 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ 兜爸心选 · 孕育陪伴 - + @@ -131,8 +131,9 @@
宝宝来信
@@ -156,7 +157,7 @@ -