fix(首页): 来信卡不再看 mama-box 是否建档,与红点判据对齐(v26092005)

生产实测发现的漏子:某 openid 在 laixin 有 1 封未读(红点亮),但 mama-box
档案未建档(pregnancy empty → state.pregEmpty=true),而 applyLaixinReminder
里带了这个条件 → 卡不显示。于是又出现「红点说有新信、卡里没有」——
只是这次方向相反:是我自己加的判据把两处口径写歪了。

改法:卡只看 laixin 的未读数(与红点同一套判据),不再看 pregEmpty。
「档案未建档」和「宝宝来信里有没有信」本来就是两件事 —— 用户能从 laixin
收到信,未必在 mama-box 填过预产期。注释里写死了「别再加回来」。

验证:新增本地 mock 场景「laixin 未读=2 + pregnancy empty」→ 卡正常显示
(「小汤圆来信 / 有 1 封新信、1 条新回信 · 最近一封 今天 9:00」)且红点同亮;
访客(无 openid)仍收起。
This commit is contained in:
2026-09-20 02:32:10 +08:00
parent ee04a26ba3
commit 0f0af3533d
2 changed files with 10 additions and 6 deletions

View File

@@ -3,7 +3,7 @@
(function () {
'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26092004';
var VER = '26092005';
const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
@@ -1336,10 +1336,14 @@
function applyLaixinReminder(r) {
const card = $('#homeLetter'), body = $('#homeBody');
if (!card) return;
/* 访客态(没身份)、后端说他没建档、上游降级、未读为 0 —— 一律收起。
⚠️ 与底 tab 角标同一套判据,两处别各写一份。 */
const has = r && r.ok !== false && Number(r.unread) > 0;
if (!has || !hashParam('openid') || state.pregEmpty) { hideLetterCard(); return; }
/* 上游降级(ok:false)或未读为 0 —— 收起。
⚠️ 与底 tab 红点**同一套判据**,两处别各写一份(写歪一处就会出现
「红点亮了、卡没出来」这种自相矛盾的屏)。
⚠️⚠️ 这里**故意不看 state.pregEmpty**:那是「兜爸心选档案未建档」,
与「宝宝来信里有没有信」是两件事。加过一版,结果生产上实测出
「红点有 1 封未读、卡不显示」—— 用户能从 laixin 收到信,
却未必在 mama-box 填过预产期。别再加回来。 */
if (!r || r.ok === false || !(Number(r.unread) > 0)) { hideLetterCard(); return; }
const letters = Number(r.unreadLetters) || 0;
const replies = Number(r.unreadReplies) || 0;
/* 两种都有时分开讲,别合成一个含糊的总数(用户不知道「3」是什么东西) */