Files
mama-box/index.html
Karlcarlo 3ab8af2bf5 fix(来信提示): 未填孕产期不显示「宝宝来信」提示 —— 卡与红点同一次判定一起收 (v26092211)
产品口径(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)→ 都无
2026-09-22 21:20:46 +08:00

117 KiB