Files
mama-box/mama-box.css
Karlcarlo dedce247e9 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 异常。
2026-09-22 23:48:44 +08:00

156 KiB