AGENTS.md 增加硬约定 13:跳转/接口一律同源相对路径,mp 404 时补 nginx 反代

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 14:34:21 +00:00
parent 835bd39a2d
commit c911f63ee5

View File

@@ -88,6 +88,22 @@ nginx:`root /opt/app` + `Cache-Control: no-cache` + `etag on` —— 缓存靠
- ⚠️ 悄悄话后端(`models/mamaBoxWhisper.py`、`services/mama_box_whisper_serv.py`、`mama_box_router.py` 与 `models/__init__.py` 的改动)是 2026-10-02 **直接改在服务器 `/opt/app/box_app` 上的,没进 git**(当时的账号无 box_app 推送权限;改前备份在 `/opt/app/box_app_bak_202610021000`)。服务器下次 `git reset --hard` 前,必须由有权限的人先把这几个文件提交进仓库,否则接口会丢。
- 边界:**只限这张卡**。孕期盲盒的数字(已收集、本周开盒人数)一律真实;任何别处都不得引用这里的模拟数字,前端也不得在接口失败时自造数字兜底。
13. **跳其它 H5 应用 / 调第三方接口一律同源:只写相对路径 `/<slug>/`,不写域名**(2026-10-09 用户定)
- 背景:小程序 web-view 只放行业务域名 `mp.yizhezhe.com`,直连 `taidong.douba.top`(或任何 `*.douba.top`)会被拦;
首页直接 `fetch` 别的域名还会跨域。所有第三方 H5 都由 mp 前置机(8.145.39.61)nginx 反代过去,路径不变。
- 写法:`const XXX_URL = '/<slug>/';`、接口 `'/<slug>/api/...'`。确实需要完整地址的地方(如 `return_url`、上报 last_app)
用 `location.origin` 或 `new URL(path, location.origin)` 拼,**也不要手写域名**;万不得已写死时只能是 `https://mp.yizhezhe.com/...`。
- **新接一个应用前,先 `curl -s -o /dev/null -w '%{http_code}' https://mp.yizhezhe.com/<slug>/` 测:**
- 200 → 直接用相对路径;
- **404 → 说明 mp 还没反代这个目录**(不是「小程序白名单没加」,别等别人)。去 mp 的 `/etc/nginx/conf.d/default.conf`
把 slug 加进「第三方 H5 应用统一反代」那条 `location ~ ^/(...)/`(页面和 `/api` 都在目录下时一条就够),
再加一行 `location = /<slug> { return 301 /<slug>/; }`。改前 `cp -a` 备份,`nginx -t` 通过才 `nginx -s reload`,
之后对比 `mp` 和 `taidong` 两边同一路径的内容应一致,并复查 `/mama-box/`、`/mama-box-preview/`、`/api/mp/...` 仍 200。
⚠️ 这台机同时跑正式站,改 nginx 前先告诉用户。
- 应用的页面或接口不在 `/<slug>/` 目录下(比如接口在根路径 `/api/xxx`)→ 别在 mp 上加兜底,先找该应用的会话改成目录内。
- 历史:2026-10-09 一次补了 `chengzhang-dangan`、`muying-xiaoxiao`、`yinger-fang`、`doudou-duihuan` 四个(备份 `default.conf.bak.4proxy-20261009222036`),
首页这 4 个入口同日改为相对路径(v26100906)。例外:微信 JS SDK `res.wx.qq.com` 是官方脚本,不在此列。
## 5. 踩坑
- **不要给别的应用追加 `#openid`**:部分应用自带 hash 路由(如 `/baobao-yingji`),追加 hash 会被当非法路由 → 页面未找到。身份一律走 query(`withIdentity()` 已封装)。