Commit Graph

366 Commits

Author SHA1 Message Date
3b70f63dce fix(身份): bustReload 重载时拼回 hash —— 退出登录/首次完善资料后不再丢身份误报未获取身份 (v26092009) 2026-09-21 14:04:54 +08:00
932e42e050 fix(身份): 宿主未注入 openid 时给出可见提示 + jumpApp 带 __no_identity 标记 (v26092008)
背景(2026-09-20 线上排查):小程序首页壳拿不到 openid 时会**匿名加载**本页,
页面照常渲染但全是占位(孕周 `--`、档案查不到),而跳应用时 jumpApp 因为没有身份
就跳**裸 URL** —— 从商城返回首页加载本页时很容易被误判成「数据丢了」。
根因在小程序侧(App.vue 丢掉无 token 分支的 openid;首页壳没有像 web_view 那样的
silenceAuthNoLogin 兜底),H5 这侧先做**可见 + 可观测**两件缓解:

· 新增顶部提示条(#idNotice):仅在没有 openid 时显示,文案「未获取到微信身份,
  页面数据可能不完整」;带「重试」按钮(location.replace 换 URL 重载,重试过一次后
  文案升级为「请退出小程序后重新进入」,状态落 sessionStorage,活过那次跳转)。
  有身份加载时(applyRemoteProfile 拿到 openid)自动隐藏。
  ⚠️ 刻意不做自动轮询/自动 reload:宿主只在它自己重设 web-view src 或 onShow 时注入身份,
     页面自己刷同一 URL 并不会让身份出现,反而可能循环。
· jumpApp():一个身份都没有时显式带 `__no_identity=1` —— 目标应用能区分「宿主没注入身份」
  与「参数被平台丢了」,nginx/后端日志里也能一眼查到(排查 openid 为空的关键指纹)。

验证(本地代理 + 浏览器):访客态提示可见且默认文案正确;有 openid 时隐藏;
点重试后 URL 变 `?t=…`、提示仍在且文案升级;点宫格:无身份 → `…/?__no_identity=1`,
有身份 → `?openid=…&unionid=…`(无标记);卡片/红点/资源库 8 份/弹窗/我的页/tab 顺序
全部回归正常,errors 与 console 为空。
2026-09-20 23:08:26 +08:00
340fc911b1 fix(工具列表): 去掉「排除授权示例」的前端过滤,应用可见性交由后台上下架决定 (v26092007)
原逻辑:loadPublishedApps() 里 `.filter(a => a.url && !/wx-h5-demo/i.test(a.url))`
单独屏蔽「H5应用授权示例」,于是已上架 14 个只显示 13 个。

去掉的两个理由:
1)同一份数据在别的端不一致 —— 商城小程序「我的应用」(myApps) 直接铺
   /api/mp/apps 全量,没有任何过滤,所以那边能看到它;
2)mama-box 端要用这个应用排查「openid 为空」的场景,前端把它藏掉就没法从宫格进去。

现在只保留「必须有 url」这一条(没配链接的点了没反应),谁能出现完全由后台
「应用管理」的上架/下架(isPublished)人工决定;注释里写清了历史与「别在前端
重新引入名单」。顺带说明:原来那条过滤是按 URL 正则匹配的,本身就是脆的
(demo 换域名就自动失效)。

验证:本地代理实测宫格 14 个、含「H5应用授权示例」,标题「共 14 个 ›」;
点它 → https://mp.yizhezhe.com/wx-h5-demo/?openid=…(有身份);
无 openid 时 → https://mp.yizhezhe.com/wx-h5-demo/(正好是排查要的干净入口);errors 空。
2026-09-20 02:57:27 +08:00
31d153b513 refactor(来信): 彻底删除内置来信屏及全部功能代码,来信整体由第三方 laixin 承接(v26092006)
「宝宝来信」功能已全部由第三方应用 laixin(mp.yizhezhe.com/laixin/)承接,
mama-box 只保留两个入口/提醒,二者逻辑一行未改:
· 底 tab「宝宝来信」#tabLetter → openLetterApp() 跳 laixin
· 首页提醒卡 #homeLetter + 底 tab 红点 #tabBadge → syncLaixinReminder()/applyLaixinReminder()
  (读 /api/mp/public/laixin/unread)

删除的界面:#screen-letter(来信列表屏)、#detailLetter(来信详情)、
#detailCard(来信分享卡)、#fabWrite(写回信钮)、#modalReply(回信弹窗)。

删除的代码:LETTERS 数据与 stampLetters/renderLetters/filterLetters/buildThread/
renderLetterDetail/openLetter/curLetter/kidText/kidEl、本地延迟投递队列全套
(store/pending、deliverDue、deliverBabyReply、deliverVoiceLetter、语音信)、
syncLetterCounts、信箱头像换图 pickBabyAvatar、回信提交、applyRemoteLetters
(H5 从此不再请求 box_app 的 /mama-box/letters)、滑动 order 里的 letter、
go() 里 #fabWrite 的开关、state.{unread,letterFilter,curLetter,replyCount,babyAvatar}
以及随之无调用方的 fillBaby()。

保留(删前逐个 grep 确认仍有调用方):babyWord()、backAt()(stampAiLogs 在用)、
el()(档案海报在用)、.segmented(档案页在用)、.letter-card(首页提醒卡在用)、
档案页「珍贵时刻」里仅以文案提及来信的装饰卡。

CSS:删掉来信专用规则块与随之失效的变量(--font-round 等);净变化 -2396/+93 行。
2026-09-20 02:47:24 +08:00
0f0af3533d 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)仍收起。
2026-09-20 02:32:10 +08:00
ee04a26ba3 fix(首页): 来信卡数据源改为 laixin,与底 tab 红点统一(修两套数据不一致)(v26092004)
问题:底 tab 早已改跳 laixin、红点读 /api/mp/public/laixin/unread,但首页那张
「宝宝来信」卡仍由 pushLatestToHome() 按 LETTERS(box_app /mama-box/letters)驱动,
而那条线对多数用户是 0 封 —— 同一屏上会出现「红点说有新信、卡里什么都没有」。

改法(两者共用一个 laixin 未读结果):
- 新增 hideLetterCard() + applyLaixinReminder(r):unread>0 才显示,文案按
  「N 封新信 / M 条新回信」组装并附「最近一封 <时间>」;归零收起;上游降级(ok:false)、
  访客态、未建档一律收起(与角标同一套判据)
- syncLaixinBadge() → syncLaixinReminder():一次 fetch 同时落红点与首页卡(owner 唯一)
- 删除 pushLatestToHome() / lettersResolved / state.homeLetter / openDetail():
  内置来信屏(#screen-letter)与其 /letters 数据仍在,但不再往首页推卡
- 首页卡点击改走 openLetterApp()(跳 laixin),与底 tab 同落点;卡不再打开内置详情
- 卡仍默认 .hide + #homeBody 默认 .no-letter(保住 §9 的不闪规则)

验证(本地四态 mock + 浏览器):
- laixin 未读=2 → 接口回来前 hidden,回来后显示「小汤圆来信 / 有 1 封新信、1 条新回信 ·
  最近一封 今天 9:00」,红点同亮(同一次请求)
- 未读=0 → 全程收起;上游 ok:false → 冷启动收起、已显示则保持显示
- 访客(无 openid)→ 收起
- **box_app 来信有 1 封未读但 laixin 未读=0 → 首页卡仍收起**(内置屏照常渲染,互不影响)
- 点卡 → https://mp.yizhezhe.com/laixin/?openid=…&unionid=…;内置列表点开详情仍正常;errors 空
2026-09-20 02:31:19 +08:00
e29052f107 fix(首页): 来信卡默认收起,等 /letters 结果再决定显示 —— 修掉「先冒出来再缩回去」的闪烁 (v26092003)
现象:从商城切回首页加载 mama-box 时,先渲染出一张「宝宝来信/宝宝回信啦」卡
(用内置样例信 + 本地待投递队列拼的),几百毫秒后 /letters 回来说没有未读,
卡又缩回去,闪一下。

原因:卡在 index.html 里默认可见,pushLatestToHome() 是「先显示、数据回来再决定」;
而首屏渲染远早于 /letters。

改法(反过来:没确定之前一律不显示):
- index.html:#homeLetter 默认带 .hide、#homeBody 默认带 .no-letter(首屏按「无卡」排版,不跳)
- app.js:新增 lettersResolved 开关;pushLatestToHome() 在未确定、访客态(无 openid)、
  或后端明确未建档(pregEmpty)时一律保持收起;applyRemoteLetters 的每条终态
  (成功/空列表/接口挂/无身份)与 applyRemoteProfile 的访客分支都置位并重算
- 访客分支顺手补了一次 pushLatestToHome():此前清空 LETTERS 后没人重算,
  那张卡会顶着一封已不存在的信留在首页

验证(本地 + 延迟代理四态,浏览器实测):
- 有建档 + 0 封信:全程 hidden(修的就是这个)
- 有建档 + 1 封未读:接口回来前 hidden → 回来后显示「小汤圆来信」
- 接口全挂:回退内置样例照旧显示(离线行为不变)
- 访客(无 openid):hidden
2026-09-20 02:02:47 +08:00
e9873040f3 mama-box: 角标改调 /api/mp/public/laixin/unread(接口命名规范)+ 版本 v26092002
按 box_app/docs/api-naming-convention.md:box_app 对外暴露某应用的数据一律走
/api/mp/public/<app>/<资源>,app 段 = App 表 identifier。原先调的是
/api/mp/public/mama-box/laixin/unread,与妈妈盒子自己的来信(mama-box/letters)
同处一个命名空间、容易混,已随之迁到 laixin 命名空间。
2026-09-20 01:48:16 +08:00
aa53d5c6e6 mama-box 9.19 需求: 资料弹窗去兑换码闸门、底tab改回宝宝来信、我的页卡片改兜爸心选商城 (v26092001)
资料详情页(需求 1.1/1.2):
- #modalWx 删掉兑换码输入框与「以后再说」「解锁全部资料」两颗按钮,is-gate/is-gift/is-done
  三模式合并成单态(唯一出口是右上角 .modal-x);二维码下方文案改需求指定句
- 需求方确认「扫码加顾问 → 回复领资料 → 顾问直接发资料」,故「解锁」概念整体取消

死代码清理(D1 的连带):
- 删 PAN/PAN_DEFAULT 网盘链接表、panOf、WX_CODE/wxCodeOK、givePan、#modalPan 弹窗、
  state.wxUnlocked/WXOK_KEY、syncUnlockCopy、fetchRemoteConfig
- 删「已领」整套:state.resGot/RESGOT_KEY/isGot/列表「已领 ✓」标与筛选 chip/详情页「再拿一次链接」

底 tab(需求 2,D2=C):
- 「兜爸心选」→「宝宝来信」,图标换回 ic-letter,点击改走 jumpApp 跳第三方 H5
  mp.yizhezhe.com/laixin/(App 表 identifier=laixin,取不到时兜底硬编码)
- 红点 #tabBadge 挪回该 tab;角标数据源改为 box_app 封装的 /laixin/unread
  (syncLaixinBadge,ok=false 时保持现状,不把红点抹掉)

其它:
- 我的页卡片「兜爸心选」→「兜爸心选商城」(需求 3)
- 内置来信屏 #screen-letter 与 box_app /letters 链路保留不动,但不再有底 tab 入口
2026-09-20 01:36:06 +08:00
d39e52cf4f 授权回传确定性修复:requestProfile/goAuth 跳授权页时把当前 H5 地址作 backUrl 带给授权页(navigateTo query 通道,不赌 postMessage 派发时机);版本 v26091901 2026-09-19 16:55:42 +08:00
627a819e46 底tab「兜爸心选」/「进入商城」落点改商城首页:小程序原装装修首页已恢复为 pages/index/mall(DIY 底部导航第2项),goMall 改 switchTab 该页并补 fail 提示;首页新增今日脚印(数胎动对外 API,box_app 封装,拉不到回退内置);版本 v26091802 2026-09-18 21:12:49 +08:00
3ddcfe3e43 应用宫格: 工具列表改按 seq 倒序(值大靠前,seq 相同按 no 倒序) 2026-09-17 23:48:47 +08:00
f99a4d59eb mama-box: 接入共享 wx-auth.js,首屏/换页向小程序宿主上报 location(分享卡片深链同步);版本 bump v26091602 2026-09-17 21:34:27 +08:00
60bc63a870 mama-box 首页与底tab 第九批: 卡2 生长曲线→数宫缩(gongsuopinlv), 档案tab跳孕检日历, 来信tab改兜爸心选商城(购物袋图标+红点移到首页), 隐藏专属福利; 工具链接统一 mp 业务域名 (v26091601) 2026-09-16 16:34:28 +08:00
7868556042 wx-auth/wx-h5-demo: 授权与商城跳转加 fail 兜底提示; 修环境标签恒显「纯浏览器」; 调试面板转发 navigateTo/switchTab fail (demo v26090901) 2026-09-09 18:41:13 +08:00
1d0b780185 内容指纹缓存推广到 mama-box css/js/index(URL稳定去?v=, ETag+no-cache), 与共享库统一 (v26090817) 2026-09-08 12:06:15 +08:00
fc7160a4f2 落地A: 应用间跳转统一query-only(去hash与identityHash开关), 简化契约 (v26090816) 2026-09-08 11:55:35 +08:00
bd82944f18 身份注入支持 hash 开关: 应用 identityHash=false 时跳转只带 query 不追加#(修复baobao-yingji hash路由被破坏) (v26090815) 2026-09-08 11:49:08 +08:00
3cfe08cd73 商城模块文案 兜爸心选商城→兜爸心选(用户已改, 同步注释+版本bump v26090814) 2026-09-08 11:31:45 +08:00
ced6b1ff08 品牌名整体替换: 「妈妈盒子」→「兜爸心选」(仅中文字样; 目录/路由/类名 ASCII 不变) (v26090813) 2026-09-08 11:23:53 +08:00
81549a4f50 同步 app.js VER 常量到 26090812 2026-09-08 11:01:01 +08:00
7b33902bdc 关于页版本号只显示 v26090812(去掉'妈妈盒子'前缀) 2026-09-08 11:00:40 +08:00
e2d6489393 版本号移入「关于妈妈盒子」页底部(renderSetting about分支), 删全站固定底标 (v26090811) 2026-09-08 10:58:01 +08:00
0598f5b566 共享库 goMall 加环境判定矩阵(与授权同款): 非webview提示「请在小程序中打开商城」; demo加switchTab埋点 (v26090810) 2026-09-08 10:52:13 +08:00
f7691c540f 共享库移到 /mama-box/js/wx-auth.js, 最终地址带版本参数 (v26090805) 2026-09-08 10:26:51 +08:00
21c2e1e4cf 共享库唯一源移至 mama-box 资源目录(/mama-box/wx-auth.js), 撤销/shared挂载, 应用与demo统一引用 (v26090805) 2026-09-08 10:23:01 +08:00
9104dc1c98 访客态: 无openid(匿名加载兜底)时全站占位引导, 隐藏脚印时间轴, 杜绝演示数据落定 (v26090737) 2026-09-08 09:59:44 +08:00
6bfdac8e31 加标准 mobile-web-app-capable meta, 消除 Chrome 弃用警告 (v26090736) 2026-09-08 03:57:05 +08:00
1d7d1c05c8 首页5张工具卡按identifier跳已上架应用(带身份), 替换旧beian域名裸跳 (v26090735) 2026-09-08 03:54:32 +08:00
e1554e8a03 授权完善资料增加环境判定: 非小程序webview提示「请在小程序中完成授权登录」(v26090734) 2026-09-08 03:42:34 +08:00
0e69819165 用户卡记录行按状态显示: 未完善→引导文案, 已完善→已连续记录N天(数据源后定) (v26090733) 2026-09-08 03:37:09 +08:00
e8fba64a91 统一表单输入框最小高度50px(iOS date控件偏矮) (v26090732) 2026-09-08 03:28:57 +08:00
2b87d3cfda 预产期空值时隐藏原生日期提示(due-empty 文字透明), 只显示占位层 (v26090731) 2026-09-08 03:17:47 +08:00
915459f21a 预产期占位改为锚定输入框垂直居中, 修复 iOS webview 下错位 (v26090730) 2026-09-08 03:16:28 +08:00
8f78f5b433 我的资料: 预产期空值占位「- 年 - 月 - 日」(原生date不支持placeholder, 叠加文字层) (v26090729) 2026-09-08 03:11:52 +08:00
4301a8865c 退出登录移到「设置与服务」末尾(退出授权登录, 仅已授权显示), 删用户卡右上角退出图标 (v26090728) 2026-09-08 03:04:12 +08:00
e344c1cc5d 来信hero计数按真实信件数(去掉原型虚构的归档20封) (v26090727) 2026-09-08 02:57:20 +08:00
44f778ef1f 来信hero计数: 未完善显示--占位/已完善按实际数量; 未完善时隐藏写回信FAB与未读角标 (v26090726) 2026-09-08 02:53:30 +08:00
46fbc70da3 来信页空数据双态: 未完善资料→引导去完善(打开资料弹窗), 已完善无信→普通空提示 (v26090725) 2026-09-08 02:36:09 +08:00
01fc935255 修复 bento 恢复时切坏的 HTML(重复注释尾行+多余</section>导致整页并排渲染) (v26090724) 2026-09-08 01:59:28 +08:00
672655b022 弹层全部孕期工具宫格限4行x4列, 超出宫格内滚动+细滚动条 (v26090723) 2026-09-08 01:53:19 +08:00
f2eb903eff 纠正: 应用列表渲染到「记一下」弹层的全部孕期工具宫格(#appsGrid), 首页 bento 恢复原样 (v26090722) 2026-09-08 01:51:09 +08:00
98534bd8e2 应用磁贴: 有logo白底图盖满, 无logo才用彩色首字块(colorTheme全blue不能当统一底色) (v26090721) 2026-09-08 01:46:23 +08:00
2af6def2fd 移除对已删演示卡元素的引用(calNext/kickTodayHome) 修复初始化空指针 (v26090720) 2026-09-08 01:44:03 +08:00
90f28b8ec9 首页工具区替换为已上架应用宫格: /api/mp/apps 动态渲染(排除授权示例), 点击带身份跳转, 前8个+展开收起 (v26090719) 2026-09-08 01:42:03 +08:00
c59c7a71c7 档案tab一期跳 yunqi-dangan H5(带openid/unionid转发), 内置档案屏屏蔽保留 (v26090718) 2026-09-08 01:26:04 +08:00
1e6eef781a 修复缓存戳污染 openid: bustReload 按 ?/& 正确拼接 + hashParam 剥离误粘片段 (v26090717) 2026-09-08 01:04:54 +08:00
7cd9d42583 新用户清 state 内置演示默认值(DEFAULT_DUE/孕27), 资料弹窗预产期/孕周全空+锁定 (v26090716) 2026-09-08 00:53:58 +08:00
3ab2b0d651 我的资料表单: 去掉演示默认值(小满妈妈/小汤圆/孕24+3), 打开时按服务端档案回填, 新用户全空+孕周锁定 (v26090715) 2026-09-08 00:52:57 +08:00
1396ccec0c 新用户空态: handler 短路 —— pregEmpty 时跳过 stampLetters/syncStaticDates 等按默认孕周的重算, 隐藏演示未读角标 (v26090714) 2026-09-08 00:36:33 +08:00