fix(今日脚印): 读不到不编数据 —— 四种显隐模式收口到 fpRender(唯一 owner)(v26092214)
产品口径(2026-09-22):
· **无档案**(上游查无此人 / 本地未关联)→ 显示引导占位(#tlGuide:「还没有你的脚印 /
去「数胎动」记一笔,这里就会长出你今天的脚印」)
· **有档案** → 必须从接口读;**读不到就不显示**(整块 .today-line 收起),不再回退演示行
改动:
- index.html:删掉 4 条**写死的演示行**(胎动 12 次 / 体重 58.2kg / 产检提醒 / 睡前散步 20 分钟)——
它们只在「接口读不到」时露出来,等于上游一抖页面就开始编数据。换成一行中性「正在获取今天的脚印…」
+新增 #tlGuide 引导块,并在注释里写明四种模式与判定。
- 新增 fpApply()/fpRender():模块显隐**只有一个 owner**(pending / rows / empty / guide / hide,
外加「未建档 / 产后」硬门槛优先于接口结论)。
⚠️ 之前 syncPregnancy 也直接改 .today-line 的 display,两个 owner 撞出竞态 —— 实测「有档案 +
上游故障(degraded)」会被 profile 回来后重新显示出来(该收起的没收起)。现在 syncPregnancy 两处
都只调 fpRender()。
- 没有真实事件时给 .today-line 挂 .no-ai,AI 气泡一并收起:那句「今天你数到我动了 3 次」是写死的
演示文案,今天没记 / 未关联 / 读不到时显示它就是在说假话。拿到真实事件时才显示气泡
(把那个数字接到真实次数属另一件事,等产品定文案)。
本地验证(桩后端,五种模式各跑一遍,并把 profile 延迟 1.5s 以复现前面那个竞态):
rows → 模块显示 + 真实事件 + 气泡显示;empty → 「还没有足迹」+ 无气泡;
guide → 引导块显示 + 时间轴收起 + 无气泡;degraded → **整块不显示**;
fail(接口 500) → **整块不显示**;未建档 → 整块不显示。全程无 JS 异常。
This commit is contained in:
27
index.html
27
index.html
@@ -7,7 +7,7 @@
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>兜爸心选 · 孕育陪伴</title>
|
||||
<!-- V:26092213 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<!-- V:26092214 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<link rel="stylesheet" href="mama-box.css">
|
||||
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
|
||||
<!-- 共享助手:授权/跳商城/位置上报(分享卡片同步,见 docs/h5-auth-standard.md 第四节) -->
|
||||
@@ -303,12 +303,23 @@
|
||||
<!-- ⚠️ aria-label 里也有小名,所以它跟 #tlTitle 一起交给 syncBabyWords()
|
||||
刷。标题跟着小名走、读屏却一直念旧名字,是最难被发现的那种不同步 ——
|
||||
眼睛看不见它。 -->
|
||||
<!-- ⚠️ 这里原来躺着 4 条**写死的演示行**(胎动 12 次 / 体重 58.2kg / 产检提醒 / 睡前散步)。
|
||||
它们只在「接口读不到」时露出来 —— 也就是说,上游一抖动,页面就开始编数据。
|
||||
2026-09-22 按产品口径删掉,换成一条中性占位;四种显示模式由下方 JS 的 fpApply() 决定:
|
||||
· 有档案 + 拿到事件 → 渲染真实事件(覆盖 #tlSteps)
|
||||
· 有档案 + 今天没记 → 「还没有足迹」
|
||||
· 有档案 + 接口读不到 → **整块不显示**(不编数据)
|
||||
· 无档案(上游查无此人)→ 显示 #tlGuide 引导占位
|
||||
首次渲染时 `#tlSteps` 里是这条「正在获取…」,不是假数据;
|
||||
JS 的 pendingFootprintStep() 会建一份**同构**的行,两处改文案要一起改。 -->
|
||||
<div class="steps ripple" id="tlSteps" data-goto="archive" role="button" tabindex="0"
|
||||
aria-label="宝宝的今日脚印,查看完整档案">
|
||||
<div class="step"><span class="st-time">09:10</span><span class="st-dot"></span><span class="st-txt">胎动 <b>12</b> 次</span><span class="st-from">来源 · 数胎动</span></div>
|
||||
<div class="step"><span class="st-time">13:00</span><span class="st-dot"></span><span class="st-txt">体重 <b>58.2kg</b></span><span class="st-from">来源 · 孕期体重</span></div>
|
||||
<div class="step"><span class="st-time">16:30</span><span class="st-dot"></span><span class="st-txt">产检提醒</span><span class="st-from">来源 · 孕检日历</span></div>
|
||||
<div class="step"><span class="st-time">20:15</span><span class="st-dot"></span><span class="st-txt">睡前散步 <b>20</b> 分钟</span><span class="st-from">来源 · 运动记录</span></div>
|
||||
<div class="step"><span class="st-time">今天</span><span class="st-dot"></span><span class="st-txt">正在获取今天的脚印…</span><span class="st-from"></span></div>
|
||||
</div>
|
||||
<!-- 无档案时的引导占位(fpApply('guide') 才显示;此时 #tlSteps 收起) -->
|
||||
<div class="tl-guide" id="tlGuide" style="display:none">
|
||||
<div class="tl-guide-t">还没有你的脚印</div>
|
||||
<div class="tl-guide-s">去「数胎动」记一笔,这里就会长出你今天的脚印</div>
|
||||
</div>
|
||||
<!-- 这一天的收尾节点。三个直接子元素刻意和 .step 一样排
|
||||
(42px 的左格 + 圆点 + 剩下的),点才落得进同一条竖线里。
|
||||
@@ -323,7 +334,11 @@
|
||||
<b class="ab-tag" id="abTag">宝宝今天想说</b>
|
||||
<!-- 这句是 app.js 里 AI_LOGS[0].txt 的手写副本(这里要 <b> 和 <br> 排版,
|
||||
没法直接共用那个字符串)。那边改口吻,这里必须跟着改,
|
||||
否则首页气泡说「小家伙」、点进去小结说「我」,像两个人在写。 -->
|
||||
否则首页气泡说「小家伙」、点进去小结说「我」,像两个人在写。
|
||||
⚠️ 它是**演示文案**(数字写死),所以只有拿到真实事件的当天才显示:
|
||||
.today-line 挂上 .no-ai 时整颗气泡收起(见 JS 的 fpApply)。
|
||||
待办:把「3 次」接到真实次数(卡片接口 kick.value / events 里数胎动那条),
|
||||
并给「今天没记」定一句不说假话的文案 —— 产品确认口径后再改。 -->
|
||||
<span class="ab-say">妈妈,今天你数到我动了 <b>3</b> 次,<br>我今天精神特别好。</span>
|
||||
</span>
|
||||
<!-- 「AI自动汇总你每日记录」按用户要求删了,这行现在只剩右边的入口。
|
||||
|
||||
Reference in New Issue
Block a user