diff --git a/AGENTS.md b/AGENTS.md index 4fe8b39..e23e7ae 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -70,6 +70,22 @@ CRMEB 商城小程序(uniapp,manifest `name=DoubaShop`),同时是**整 否则 mama-box 的兜底恢复会绕开小程序判定又把用户送走。 - 反向:小程序**尝试恢复但取数失败/超时**时**不带** `norestore`,让 mama-box 兜底重试一次。 +### 4.3 回到首页要清 last_app(两侧互补,2026-09-22) + +现象:进入 H5 应用 → **返回**回到 mama-box 首页 → 再冷启动进小程序,又被送回刚退出的应用。 +记录的是「最后进入的 H5 应用」,人已经回到首页了 → 必须清掉。清除动作分两侧,互补覆盖: + +| 路径 | 谁清 | 判定 | +| --- | --- | --- | +| H5 应用自己的返回(`history.back()` / 后退重载) | **mama-box** `clearLastAppOnBackHome()` | `pageshow.persisted` / `navigation.type === 'back_forward'` | +| H5 应用以 `location.href` 回 mama-box | **mama-box**(同上) | `document.referrer` 是 `https://mp.yizhezhe.com//` | +| 容器页**返回箭头**回首页(host 重载,不带 referrer) | **首页壳** `_clearLastApp()` | `onShow` 决定重载回 mama-box 时(`reloadBase` 命中 `/mama-box`) | + +- 接口:`DELETE /api/mp/public/last-app?openid=`(幂等、fail-soft)。 +- ⚠️ **绝不能改成「mama-box 每次加载都清」**:恢复流程会把 mama-box 当**返回落点**加载, + 误清会毁掉刚用上的记录(实测:普通加载与 `#norestore=1` 落点加载都不清)。 +- ⚠️ 首页壳只在**重载目标是 mama-box** 时清;重载目标是某个应用(`shareHref` 指向它)时不能清。 + ## 5. 本仓库状态提醒 - ⚠️ `mixins/shareCard.js` **未被 git 跟踪**(untracked),但两个宿主页都 import 它 —— 提交时别漏,否则一旦丢工作区这份文件就没了。