Просмотр исходного кода

test(interface): 新增 CFC 小程序端接口冒烟测试与页面-接口映射矩阵

- ops_interface_smoke.py: 由页面功能自动派生的 1000 个接口冒烟用例(纯标准库 urllib 实现,无第三方依赖)
  * 支持 IP+Host 头绕过 DNS、空体 wechat-login 自动获取父角色 JWT、按业务 code 分类(BIZ_OK/BIZ_FAIL/NOT_FOUND/SERVER_ERR/NON_JSON/CONN_ERR)
- INTERFACE_TEST_MATRIX.md: 267 个页面路由 → 接口映射(方法/路径/鉴权/参数/来源函数)
- INTERFACE_TEST_REPORT.md: 首次冒烟结论(884 真实页面用例:481 BIZ_OK / 339 500 / 15 个 404 路径 / 8 个 403 / 32 个 400)
  * 主要问题:角色切换类接口 404、健康模块 500 缺乏统一入参校验、articles/detail 403
- interface_test_report.tsv: 千行原始结果,便于回归对比

回归命令:
python ops_interface_smoke.py --base http://192.168.16.251 --host cfc.iwintrue.com --auto-login --timeout 3 --report
E2E Test Bot 2 недель назад
Родитель
Сommit
5b3348ec8b
4 измененных файлов с 4890 добавлено и 0 удалено
  1. 114 0
      INTERFACE_TEST_REPORT.md
  2. 2588 0
      cfc-frontend/INTERFACE_TEST_MATRIX.md
  3. 1001 0
      interface_test_report.tsv
  4. 1187 0
      ops_interface_smoke.py

+ 114 - 0
INTERFACE_TEST_REPORT.md

@@ -0,0 +1,114 @@
+# CFC 小程序端接口测试报告(冒烟级 · 远程 cfc.iwintrue.com)
+
+> 生成时间:2026-10-27 · 测试方式:基于页面功能定义的操作接口冒烟测试
+> 交付物:`ops_interface_smoke.py`(脚本)、`interface_test_report.tsv`(原始 1000 行结果)、`INTERFACE_TEST_MATRIX.md`(页面→接口映射)、本报告
+
+## 1. 测试目标与范围
+- **目标**:依据小程序页面功能定义,对 cfc 后端操作接口做**连通性 + 基本正确性**冒烟测试。
+- **范围来源**:
+  - 从 `cfc-frontend/utils/api.js` 全量解析接口(766 个导出函数 / 769 处请求 / 756 个唯一 method+path / 103 个模块)。
+  - 扫描 498 个页面 `.vue/.js` 得到真实的「页面路由 → 接口」调用映射。
+  - 生成 **1000 个接口用例**,覆盖 **263 个页面路由**(剔除前端 `__tests__` 测试文件后真实页面用例 **884** 个)。
+- **环境**:远程 `cfc.iwintrue.com` 解析至 `192.168.16.251`;后端开启 `wechat.test-mode=true`,脚本用 `wechat-login` 空 body 自动获取 **parent** 角色 token 复用。
+
+## 2. 测试方法与局限(重要,请先读)
+每个用例以**空 body `{}`** POST 调用(与前端 `request(path, 'POST')` 默认空对象一致),携带 JWT token。判定标准:HTTP 200 且返回 `Result` 结构且 `code==200` → `BIZ_OK`,其余按业务码分类。
+
+**本报告是冒烟级,非业务级**,以下局限直接影响结论解读:
+1. **空 body**:`400` 绝大多数为「缺参」(**预期,非 bug**);`500` 表示**异常/边界输入下服务端未受控**(真实健壮性信号,但需带参复测确证)。
+2. **单一 parent token**:教师 / 管理员专属接口被拒返回 `403`(**部分预期**)。
+3. **外部依赖**:AI/LangGraph、微信支付、OSS 等若测试环境未部署,关联接口会 `500`(**环境缺失,非代码 bug**)。
+4. **`__tests__` 测试文件**:前端单测中引用的接口(116 个)一并纳入扫描,已在「真实页面用例(884)」统计中剔除。
+
+## 3. 总体结果
+
+| 类别 | 全部用例 (1000) | 真实页面用例 (884) |
+|------|---------------:|------------------:|
+| BIZ_OK (code=200) | 536 | 481 |
+| BIZ_FAIL | 434 | 383 |
+| ├─ 其中 500 服务端异常 | 379 | 339 |
+| ├─ 其中 400 缺参 | 39 | 32 |
+| ├─ 其中 403 权限 | 12 | 10 |
+| ├─ 其中 410 业务态 | 2 | 1 |
+| └─ 其中 4001 | 2 | 1 |
+| NOT_FOUND (404) | 23 | 14 个唯一 path |
+| CONN_ERR (连接被重置/超时) | 7 | 6 |
+| **业务成功率 (code=200)** | **53%** | **54%** |
+
+## 4. 发现与分类
+
+### 4.1 ⚠️ 404 接口未部署 / 契约缺失(真实问题,建议优先排查)
+前端(含测试)调用、但后端返回 `404` 的唯一路径(`:var` 为路径参数占位):
+
+| 接口路径 | 说明 |
+|----------|------|
+| `/api/user/switch-to-child` | 角色切换(家长↔孩子视角) |
+| `/api/user/switch-role` | 同上 |
+| `/api/user/switch-mode` | 同上 |
+| `/api/user/switch-back-to-parent` | 同上 |
+| `/api/guide/families` | 规划师绑定家庭列表 |
+| `/api/guide/bind/confirm` | 规划师绑定确认 |
+| `/api/guide/families/:var/members` | 规划师查家庭成员 |
+| `/api/guide/families/:var/plans/:var/update` | 规划师更新计划 |
+| `/api/guide/families/:var/plans/pending` | 规划师待审计划 |
+| `/api/guide/orders/list` / `stats` | 规划师订单 |
+| `/api/health-plan/available-teachers` | 健康计划可选规划师 |
+| `/api/health/report/bodyfat-save` | 体脂报告保存 |
+| `/api/packages` | 套餐(家长代付/发布) |
+| `/api/rewards` | 心愿奖励 |
+| `/api/wishes/:var/price` | 心愿改价 |
+
+> **解读**:这些接口被前端调用却返回 404,说明**前后端契约不一致**(后端未实现 / 路径已变更 / 版本不一致)。特别是 4 个 `user/switch-*` 角色切换接口缺失,会直接影响「家长↔孩子视角切换」核心功能。
+
+### 4.2 ⚠️ 500 服务端异常(339 个真实页面用例,占比 38%)
+按模块分布(Top):`health 53`、`family 35`、`activity 18`、`home 16`、`product 16`、`guide 16`、`circle 14`、`orchestration 14`、`wishes 11`、`cognitive 10` … 共涉及 **55 个模块**,仅有 4 个明确属于外部依赖(如 `/api/ai/*` 指向 LangGraph,测试环境未部署)。
+
+> **解读**:空 body 下大量接口抛 `500` 而非受控的 `400`,说明**后端缺少统一的入参校验与全局异常处理**(异常输入未经 `Result` 包装直接抛出)。这是系统性质量缺陷。需带真实参数 + 按模块逐批复测,区分:
+> - (a) **代码健壮性 bug**(空指针 / 类型转换)—— 应修复;
+> - (b) **环境依赖缺失**(AI/支付/微信未配)—— 应补齐环境或降级返回明确错误。
+
+### 4.3 403 权限(8 个唯一 path)
+- `/api/admin/*`(管理员)、`/api/guide/*`(规划师)被 parent token 拒绝 —— **预期**。
+- **例外**:`/api/articles/detail` 返回 403 值得确认(文章详情应可公开或登录后访问,不该被拒)。
+
+### 4.4 400(32 个)—— 空 body 缺参,**非 bug**,属冒烟局限。
+
+## 5. 五要素问题清单(精选代表性)
+
+**问题 1|角色切换接口契约缺失**
+① 问题描述:家长端「切换孩子视角」功能依赖的 4 个 `/api/user/switch-*` 接口全部返回 404。
+② 测试点:`ops_interface_smoke.py` 用例 `user :: switchToChild / switchRole / switchMode / switchBackToParent`,响应 HTTP 404。
+③ 最优方案:确认后端是否已迁移/重命名这些接口(AGENTS.md 提及「双角色切换」是核心特性),修复路由或同步前端调用路径。
+④ 目的:恢复家长↔孩子视角切换核心功能,消除前后端契约缺口。
+⑤ 闭环:后端补路由后,用 parent token 复测 `code==200`。
+
+**问题 2|健康模块接口健壮性(大量 500)**
+① 问题描述:`health` 模块 53 个接口在空 body 下返回 500,疑似缺参校验/空指针。
+② 测试点:`/api/health/*` 系列(report/meal/exercise/sleep 等),响应 HTTP 200 + `code=500`。
+③ 最优方案:为 health 模块补齐 DTO 校验(`@Valid`)与全局异常处理器,使缺参返回 `code=400` 而非 500。
+④ 目的:提升后端在异常输入下的可控性,避免对外暴露 500。
+⑤ 闭环:带参复测 + 注入异常输入压测,确认 `code=400` 且日志无未捕获异常。
+
+**问题 3|文章详情权限异常**
+① 问题描述:`/api/articles/detail` 带有效 parent token 仍返回 403。
+② 测试点:`articles :: getArticleDetail`,HTTP 200 + `code=403`。
+③ 最优方案:核对 `JwtInterceptor` 公开路径列表与文章详情的权限配置,确认是否误拦截。
+④ 目的:保证文章详情对登录用户可见(前端文章中心强依赖)。
+⑤ 闭环:复测确认登录态下 `code==200`。
+
+## 6. 结论
+冒烟级结论:**接口整体连通正常(54% 直接 `code=200`)**,但同时暴露三类可立即行动的工程问题:
+1. **前后端契约缺失(404)**:15 个前端调用的接口后端无路由(含核心的角色切换 4 个)。
+2. **服务端健壮性(500 占比 38%)**:大量接口在边界/空输入下抛 500,缺统一校验与全局异常处理。
+3. **角色权限**:需确认 `/api/articles/detail` 等的 403 是否为配置错误。
+
+**下一步建议**:以本报告为基线,下阶段做**业务级接口测试**——带真实参数 + 多角色(parent/teacher/child)token,对 339 个 500、15 个 404、8 个 403 逐接口确证是代码 bug、环境缺失还是角色因素,形成可派发的缺陷清单。
+
+## 7. 复跑命令
+```bash
+# 在能直连 192.168.16.251 的环境(前台运行,沙箱后台会拦截该内网 IP)
+python ops_interface_smoke.py --base http://192.168.16.251 --host cfc.iwintrue.com \
+       --auto-login --timeout 3 --report interface_test_report.tsv
+# 只测某页面: --only-page pages/health
+# 指定路径参数占位: --param-val <真实ID>
+```

+ 2588 - 0
cfc-frontend/INTERFACE_TEST_MATRIX.md

@@ -0,0 +1,2588 @@
+# CFC 小程序「页面功能 → 操作接口」测试矩阵
+
+> 由 `cfc-frontend/utils/api.js` 全量解析 + 全量页面 `.vue/.js` 调用扫描自动生成。
+> 每个小程序页面(路由)映射到其实际调用的后端操作接口,可直接派生接口测试用例。
+
+- **页面路由数**:267
+- **接口用例总数**:1016
+- **公开接口(无需登录)**:178
+- **需登录态接口**:838
+- **含路径参数(需真实 ID)**:56
+
+> 注意:含路径参数的接口在无真实数据时大概率返回 400/404/401,脚本仅做「可达性 + 返回结构」断言,业务正确性需结合真实数据补充。
+
+## 按模块概览
+
+| 模块 | 接口数 | 公开 | 需登录 | 含参数 |
+|------|-------:|-----:|-------:|-------:|
+| ability | 1 | 0 | 1 | 0 |
+| activity | 27 | 27 | 0 | 0 |
+| admin | 14 | 3 | 11 | 1 |
+| ai | 10 | 1 | 9 | 0 |
+| articles | 22 | 22 | 0 | 0 |
+| assessment | 7 | 0 | 7 | 0 |
+| auth | 26 | 26 | 0 | 0 |
+| badges | 11 | 0 | 11 | 0 |
+| basic-quota | 2 | 0 | 2 | 0 |
+| butler | 8 | 8 | 0 | 0 |
+| cart | 3 | 0 | 3 | 0 |
+| cf | 3 | 0 | 3 | 0 |
+| circle | 15 | 1 | 14 | 0 |
+| cognitive | 15 | 0 | 15 | 0 |
+| commission | 19 | 0 | 19 | 0 |
+| common | 1 | 0 | 1 | 0 |
+| consent | 1 | 0 | 1 | 0 |
+| consignee | 4 | 0 | 4 | 0 |
+| contact | 13 | 0 | 13 | 0 |
+| content | 1 | 0 | 1 | 0 |
+| content-sections | 4 | 0 | 4 | 0 |
+| coupon | 10 | 0 | 10 | 0 |
+| daily-task | 2 | 0 | 2 | 0 |
+| dan-assessment | 17 | 5 | 12 | 1 |
+| dan-report | 2 | 0 | 2 | 1 |
+| diet | 20 | 1 | 19 | 0 |
+| dimension | 12 | 0 | 12 | 0 |
+| doa | 7 | 0 | 7 | 0 |
+| earnings | 4 | 0 | 4 | 0 |
+| emireport | 3 | 0 | 3 | 0 |
+| energy | 41 | 0 | 41 | 0 |
+| family | 98 | 12 | 86 | 1 |
+| family-platform | 4 | 0 | 4 | 0 |
+| feedback | 2 | 2 | 0 | 0 |
+| food | 8 | 0 | 8 | 0 |
+| game | 7 | 0 | 7 | 0 |
+| growth | 12 | 0 | 12 | 2 |
+| growth-task | 2 | 0 | 2 | 0 |
+| guide | 50 | 6 | 44 | 6 |
+| guide-config | 3 | 0 | 3 | 0 |
+| health | 97 | 2 | 95 | 2 |
+| health-plan | 1 | 0 | 1 | 0 |
+| health-status | 7 | 0 | 7 | 0 |
+| home | 21 | 0 | 21 | 0 |
+| home-banner | 1 | 0 | 1 | 0 |
+| indicator | 8 | 0 | 8 | 0 |
+| insurance | 1 | 0 | 1 | 0 |
+| internal | 1 | 0 | 1 | 0 |
+| invite | 23 | 0 | 23 | 0 |
+| invite-card | 2 | 2 | 0 | 0 |
+| leaderboard | 2 | 0 | 2 | 0 |
+| meal | 5 | 0 | 5 | 0 |
+| membership | 35 | 0 | 35 | 0 |
+| micro-action | 4 | 0 | 4 | 0 |
+| mind | 8 | 0 | 8 | 0 |
+| mini-game | 7 | 0 | 7 | 1 |
+| notification | 6 | 0 | 6 | 0 |
+| nutrition | 3 | 0 | 3 | 0 |
+| nutritionist | 1 | 1 | 0 | 0 |
+| octopus | 11 | 0 | 11 | 0 |
+| onboarding | 3 | 0 | 3 | 0 |
+| orchestration | 16 | 0 | 16 | 0 |
+| package | 2 | 0 | 2 | 0 |
+| packages | 6 | 1 | 5 | 5 |
+| parent | 4 | 0 | 4 | 1 |
+| pearl | 9 | 0 | 9 | 0 |
+| points | 8 | 0 | 8 | 0 |
+| poster-template | 2 | 0 | 2 | 0 |
+| product | 32 | 32 | 0 | 0 |
+| profile | 2 | 0 | 2 | 0 |
+| purchase | 2 | 0 | 2 | 0 |
+| recommend | 3 | 0 | 3 | 1 |
+| report-summary | 2 | 0 | 2 | 1 |
+| rewards | 7 | 0 | 7 | 2 |
+| service-role | 2 | 0 | 2 | 0 |
+| share | 5 | 0 | 5 | 0 |
+| shop | 2 | 2 | 0 | 0 |
+| special-price | 2 | 0 | 2 | 0 |
+| stats | 7 | 0 | 7 | 0 |
+| streets | 4 | 4 | 0 | 4 |
+| survey | 8 | 0 | 8 | 0 |
+| task | 2 | 0 | 2 | 0 |
+| tasks | 41 | 0 | 41 | 13 |
+| tianpan | 5 | 5 | 0 | 1 |
+| unlock | 3 | 0 | 3 | 0 |
+| user | 30 | 0 | 30 | 0 |
+| vendor | 9 | 7 | 2 | 0 |
+| wealth | 16 | 8 | 8 | 0 |
+| wisdom | 1 | 0 | 1 | 0 |
+| wishes | 23 | 0 | 23 | 13 |
+| withdrawal | 3 | 0 | 3 | 0 |
+
+## 按页面路由明细
+
+### App  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/auto-login` | 公开 |  | `autoLogin` |
+| POST | `/api/auth/sso-login` | 公开 |  | `ssoLogin` |
+| POST | `/api/auth/verify` | 公开 |  | `verifyToken` |
+| POST | `/api/family/invite/check-family` | 公开 |  | `checkUserFamily` |
+
+### __tests__/api/api.indicator.test  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/indicator/change-ranking` | 登录 |  | `getIndicatorChangeRanking` |
+| POST | `/api/indicator/correlation/list` | 登录 |  | `getIndicatorCorrelationList` |
+| POST | `/api/indicator/quick-lookup` | 登录 |  | `getIndicatorQuickLookup` |
+| POST | `/api/indicator/trend` | 登录 |  | `getIndicatorTrend` |
+
+### __tests__/api/api.test  (113 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/ai/chat/conversations` | 登录 |  | `aiGetConversations` |
+| POST | `/api/ai/chat/send` | 登录 |  | `aiSendMessage` |
+| POST | `/api/articles/categories` | 公开 |  | `getArticleCategories` |
+| POST | `/api/articles/daily-tip` | 公开 |  | `getDailyTip` |
+| POST | `/api/articles/detail` | 公开 |  | `getArticleDetail` |
+| POST | `/api/articles/list` | 公开 |  | `getArticleList` |
+| POST | `/api/articles/related` | 公开 |  | `getRelatedArticles` |
+| POST | `/api/auth/auto-login` | 公开 |  | `autoLogin` |
+| POST | `/api/auth/check-phone` | 公开 |  | `checkPhone` |
+| POST | `/api/auth/direct-register` | 公开 |  | `directRegister` |
+| POST | `/api/auth/phone-login` | 公开 |  | `phoneLogin` |
+| POST | `/api/auth/send-code` | 公开 |  | `sendCode` |
+| POST | `/api/auth/set-password` | 公开 |  | `setPassword` |
+| POST | `/api/auth/silent-login` | 公开 |  | `silentLogin` |
+| POST | `/api/auth/verify` | 公开 |  | `verifyToken` |
+| POST | `/api/auth/verify-password` | 公开 |  | `verifyPassword` |
+| POST | `/api/auth/wechat-login` | 公开 |  | `wechatLogin` |
+| POST | `/api/auth/wechat-phone-login` | 公开 |  | `wechatPhoneLogin` |
+| POST | `/api/badges/child/list` | 登录 |  | `getChildBadges` |
+| POST | `/api/badges/favorite` | 登录 |  | `toggleBadgeFavorite` |
+| POST | `/api/badges/list` | 登录 |  | `getActiveBadges` |
+| POST | `/api/commission/summary` | 登录 |  | `getCommissionSummary` |
+| POST | `/api/contact/create` | 登录 |  | `createContact` |
+| POST | `/api/contact/delete` | 登录 |  | `deleteContact` |
+| POST | `/api/contact/import-phone` | 登录 |  | `importPhoneContact` |
+| POST | `/api/contact/list` | 登录 |  | `getContactList` |
+| POST | `/api/dan-assessment/child-results` | 登录 |  | `getChildAssessmentResults` |
+| POST | `/api/dan-assessment/my-results` | 登录 |  | `getMyAssessmentResults` |
+| POST | `/api/dan-assessment/order/pay` | 登录 |  | `payAssessmentOrder` |
+| POST | `/api/dan-assessment/result/record` | 公开 |  | `recordAssessmentResult` |
+| POST | `/api/energy/logs` | 登录 |  | `getEnergyLogs` |
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/family/user/children` | 登录 |  | `createChild` |
+| POST | `/api/family/user/children/update` | 登录 |  | `updateChild` |
+| POST | `/api/family/user/create-family` | 登录 |  | `createFamily` |
+| POST | `/api/family/user/kick` | 登录 |  | `kickFamilyMember` |
+| POST | `/api/family/user/members/update-visibility` | 登录 |  | `updateMemberVisibility` |
+| POST | `/api/game/history` | 登录 |  | `getGameHistory` |
+| POST | `/api/game/leaderboard` | 登录 |  | `getGameLeaderboard` |
+| POST | `/api/growth/record/create` | 登录 |  | `createGrowthRecord` |
+| POST | `/api/growth/record/create-with-order` | 登录 |  | `createGrowthRecord` |
+| POST | `/api/growth/record/list` | 登录 |  | `getGrowthRecordList` |
+| POST | `/api/guide/bind/invite` | 登录 |  | `generateBindInvite` |
+| POST | `/api/guide/families` | 登录 |  | `getBoundFamilies` |
+| POST | `/api/guide/messages/list` | 登录 |  | `getGuideMessages` |
+| POST | `/api/guide/orders/list` | 登录 |  | `getGuideOrders` |
+| POST | `/api/guide/packages/my` | 登录 |  | `getGuidePackages` |
+| POST | `/api/guide/register` | 公开 |  | `registerGuide` |
+| POST | `/api/guide/team/members` | 登录 |  | `getTeamMembers` |
+| POST | `/api/health/checkin/list` | 登录 |  | `healthCheckinList` |
+| POST | `/api/health/indicator/list` | 登录 |  | `getHealthIndicatorList` |
+| POST | `/api/health/report/create` | 登录 |  | `createHealthReport` |
+| POST | `/api/health/report/detail` | 登录 |  | `getReportDetail` |
+| POST | `/api/health/report/latest` | 登录 |  | `getLatestHealthReport` |
+| POST | `/api/health/report/list` | 登录 |  | `getReportList` |
+| POST | `/api/health/survey/create` | 登录 |  | `createReportSurvey` |
+| POST | `/api/health/survey/submit` | 登录 |  | `submitReportSurvey` |
+| POST | `/api/invite-card/generate` | 公开 |  | `generateInviteCard` |
+| POST | `/api/invite-card/verify` | 公开 |  | `verifyInviteCard` |
+| POST | `/api/invite/bind` | 登录 |  | `bindReferral` |
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+| POST | `/api/membership/levels` | 登录 |  | `getMembershipLevels` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/membership/orders` | 登录 |  | `createOrder` |
+| POST | `/api/mini-game//:var` | 登录 | ✓ | `getMiniGameByCode` |
+| POST | `/api/mini-game/complete` | 登录 |  | `completeMiniGame` |
+| POST | `/api/mini-game/list` | 登录 |  | `getMiniGameList` |
+| POST | `/api/packages//:var/publish` | 登录 | ✓ | `publishPackage` |
+| POST | `/api/points/balance` | 登录 |  | `getPointsBalance` |
+| POST | `/api/points/logs` | 登录 |  | `getPointsLogs` |
+| POST | `/api/product/create` | 公开 |  | `productCreate` |
+| POST | `/api/product/detail` | 公开 |  | `productDetail` |
+| POST | `/api/product/list` | 公开 |  | `productList` |
+| POST | `/api/product/order/create` | 公开 |  | `productOrderCreate` |
+| POST | `/api/rewards` | 登录 |  | `createReward` |
+| POST | `/api/rewards//:var/exchange` | 登录 | ✓ | `exchangeReward` |
+| POST | `/api/rewards/wishlist` | 登录 |  | `getWishlist` |
+| POST | `/api/stats/child-completion` | 登录 |  | `getChildCompletionStats` |
+| POST | `/api/stats/child/overview` | 登录 |  | `getChildOverview` |
+| POST | `/api/streets//:var/match`)
+}
+
+// 按区域统计
+export const getStreetStats = (level = 4) => {
+  return request('/api/streets/stats', 'POST', { level })
+}
+
+// 获取家庭详情(含地址信息)
+export const getFamilyDetail = (id) => {
+  return request(`/api/admin/families//:var`)
+}
+
+// 更新家庭地址
+export const updateFamilyAddress = (data) => {
+  return request(`/api/admin/families/update` | 公开 | ✓ | `matchByStreet` |
+| POST | `/api/streets/provinces')
+}
+
+// 根据父级ID获取子级地址
+export const getStreetChildren = (parentId) => {
+  return request(`/api/streets/children//:var`)
+}
+
+// 根据ID获取地址详情
+export const getStreetById = (id) => {
+  return request(`/api/streets//:var`)
+}
+
+// 获取地址完整路径
+export const getStreetPath = (id) => {
+  return request(`/api/streets//:var/path`)
+}
+
+// 搜索地址
+export const searchStreet = (keyword) => {
+  return request('/api/streets/search` | 公开 | ✓ | `getProvinces` |
+| POST | `/api/survey/status` | 登录 |  | `getSurveyStatus` |
+| POST | `/api/tasks//:var` | 登录 | ✓ | `deleteTask` |
+| POST | `/api/tasks//:var/complete` | 登录 | ✓ | `completeTask` |
+| POST | `/api/tasks//:var/review` | 登录 | ✓ | `approveTask` |
+| POST | `/api/tasks//:var/review` | 登录 | ✓ | `rejectTask` |
+| POST | `/api/tasks//:var/review` | 登录 | ✓ | `reviewTask` |
+| POST | `/api/tasks/batch-complete` | 登录 |  | `batchCompleteTasks` |
+| POST | `/api/tasks/create` | 登录 |  | `createTask` |
+| POST | `/api/tasks/history` | 登录 |  | `getTaskHistory` |
+| POST | `/api/tasks/pending-review` | 登录 |  | `getPendingReviewTasks` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasksByCategory` |
+| POST | `/api/tasks/today-parent` | 登录 |  | `getTodayParentTasks` |
+| POST | `/api/user/info` | 登录 |  | `getUserInfo` |
+| POST | `/api/user/join-family` | 登录 |  | `joinFamily` |
+| POST | `/api/user/switch-back-to-parent` | 登录 |  | `switchBackToParent` |
+| POST | `/api/user/switch-mode` | 登录 |  | `switchMode` |
+| POST | `/api/user/switch-to-child` | 登录 |  | `switchToChild` |
+| POST | `/api/user/update` | 登录 |  | `updateUserInfo` |
+| POST | `/api/vendor/apply` | 登录 |  | `vendorApply` |
+| POST | `/api/vendor/info` | 公开 |  | `vendorInfo` |
+| POST | `/api/vendor/status` | 公开 |  | `vendorStatus` |
+| POST | `/api/wealth/checkin/list` | 登录 |  | `getCheckinList` |
+| POST | `/api/wealth/insurance/list` | 公开 |  | `getInsuranceList` |
+| POST | `/api/wishes//:var/approve-exchange` | 登录 | ✓ | `approveWishExchange` |
+| POST | `/api/wishes//:var/price` | 登录 | ✓ | `setWishPrice` |
+| POST | `/api/wishes/create` | 登录 |  | `createWish` |
+| POST | `/api/wishes/list` | 登录 |  | `getWishes` |
+| POST | `/api/wishes/pending` | 登录 |  | `getPendingWishes` |
+| POST | `/api/withdrawal/apply` | 登录 |  | `applyWithdrawal` |
+
+### __tests__/store/store.test  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/user/switch-role` | 登录 |  | `switchRole` |
+
+### components/DimensionActivities  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/list` | 公开 |  | `getActivityList` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### components/DimensionProducts  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/recommend/dimension-products` | 登录 |  | `getDimensionProducts` |
+| POST | `/api/recommend/repurchase-reminder/'/:var + '/click` | 登录 | ✓ | `clickRepurchaseReminder` |
+
+### components/DimensionTasks  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+
+### components/MemberSelector  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/kick` | 登录 |  | `kickFamilyMemberById` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/family/relationship/pairwise` | 登录 |  | `getPairwiseRelationships` |
+| POST | `/api/family/user/create-family` | 登录 |  | `createFamily` |
+
+### components/OnboardingGuide  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide-config/current` | 登录 |  | `getGuideConfig` |
+
+### components/OnboardingProgressBar  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/onboarding/progress` | 登录 |  | `getOnboardingProgress` |
+
+### components/RelatedContent  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/content/related-items` | 登录 |  | `getContentRelated` |
+
+### components/address-picker  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/streets/provinces')
+}
+
+// 根据父级ID获取子级地址
+export const getStreetChildren = (parentId) => {
+  return request(`/api/streets/children//:var`)
+}
+
+// 根据ID获取地址详情
+export const getStreetById = (id) => {
+  return request(`/api/streets//:var`)
+}
+
+// 获取地址完整路径
+export const getStreetPath = (id) => {
+  return request(`/api/streets//:var/path`)
+}
+
+// 搜索地址
+export const searchStreet = (keyword) => {
+  return request('/api/streets/search` | 公开 | ✓ | `getProvinces` |
+
+### components/daily-task-card  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/daily-task/overview` | 登录 |  | `getDailyTaskOverview` |
+
+### components/login-sheet  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/wechat-phone-login` | 公开 |  | `wechatPhoneLogin` |
+
+### components/share-mixin  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+
+### pages/achievement/index  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/badges/child/list` | 登录 |  | `getChildBadges` |
+
+### pages/action-detail/components/PearlDiagram  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/pearl/interaction/add` | 登录 |  | `addPearlInteraction` |
+| POST | `/api/pearl/item/update-priority` | 登录 |  | `updatePearlPriority` |
+
+### pages/action-detail/contact-detail  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/contact/delete` | 登录 |  | `deleteContact` |
+| POST | `/api/contact/detail` | 登录 |  | `getContactDetail` |
+| POST | `/api/contact/interaction` | 登录 |  | `recordContactInteraction` |
+| POST | `/api/contact/update` | 登录 |  | `updateContact` |
+
+### pages/action-detail/index  (13 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/ability/map` | 登录 |  | `getAbilityMap` |
+| POST | `/api/content-sections/visible` | 登录 |  | `getVisibleSections` |
+| POST | `/api/dimension/radar-data` | 登录 |  | `getRadarData` |
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getEnergySandbox` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/octopus/analysis/summary` | 登录 |  | `getOctopusAnalysisSummary` |
+| POST | `/api/octopus/effect/key-persons` | 登录 |  | `getOctopusEffectKeyPersons` |
+| POST | `/api/octopus/effect/list` | 登录 |  | `getOctopusEffects` |
+| POST | `/api/pearl/item/delete` | 登录 |  | `deletePearlResource` |
+| POST | `/api/pearl/reminder/list` | 登录 |  | `getPearlReminders` |
+| POST | `/api/pearl/resources` | 登录 |  | `getPearlResources` |
+
+### pages/action-detail/interaction-log  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/interaction/add` | 登录 |  | `addInteraction` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+
+### pages/action-detail/member-action-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+
+### pages/action-detail/octopus-add-effect  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/octopus/effect/add` | 登录 |  | `addOctopusEffect` |
+| POST | `/api/octopus/key-person/bind-system-user` | 登录 |  | `bindOctopusKeyPersonSystemUser` |
+| POST | `/api/octopus/key-person/list` | 登录 |  | `getOctopusKeyPersons` |
+| POST | `/api/octopus/key-person/match-by-phone` | 登录 |  | `matchOctopusKeyPersonByPhone` |
+
+### pages/action-detail/octopus-add-key-person  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/octopus/key-person/add` | 登录 |  | `addOctopusKeyPerson` |
+| POST | `/api/octopus/key-person/list` | 登录 |  | `getOctopusKeyPersons` |
+
+### pages/action-detail/octopus-effects-list  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/octopus/effect/delete` | 登录 |  | `deleteOctopusEffect` |
+| POST | `/api/octopus/effect/list` | 登录 |  | `getOctopusEffects` |
+
+### pages/action-detail/pearl-add-resource  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/contact/list` | 登录 |  | `getContactList` |
+| POST | `/api/pearl/connection-types` | 登录 |  | `getConnectionTypes` |
+| POST | `/api/pearl/item/add` | 登录 |  | `addPearlResource` |
+
+### pages/action-detail/relationship-questionnaire  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/questionnaire/generate` | 登录 |  | `generateQuestionnaire` |
+| POST | `/api/family/questionnaire/snapshot/'/:var, 'POST', {}, { timeout: 30000 })
+}
+
+export const getQuestionnaireHistory = (memberId) => {
+  return request('/api/family/questionnaire/history/'/:var, 'POST', {}, { timeout: 30000 })
+}
+
+// ===== 五维家庭自检(P0-1)=====
+export const getSelfCheckQuestions = (params) => {
+  return request('/api/family/self-check/questions` | 登录 | ✓ | `getQuestionnaireSnapshot` |
+| POST | `/api/family/questionnaire/submit` | 登录 |  | `submitQuestionnaire` |
+
+### pages/activity/activity-detail/activity-detail  (12 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/cancel-registration` | 公开 |  | `cancelActivityRegistration` |
+| POST | `/api/activity/checkin` | 公开 |  | `activityCheckin` |
+| POST | `/api/activity/detail` | 公开 |  | `getActivityDetail` |
+| POST | `/api/activity/feedback/my` | 公开 |  | `getMyActivityFeedback` |
+| POST | `/api/activity/feedback/submit` | 公开 |  | `submitActivityFeedback` |
+| POST | `/api/activity/order/create` | 公开 |  | `createActivityOrder` |
+| POST | `/api/activity/registration-roster` | 公开 |  | `getActivityRegistrationRoster` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/poster-template/list` | 登录 |  | `getPosterTemplates` |
+| POST | `/api/share/qrcode` | 登录 |  | `getShareQrCode` |
+| POST | `/api/user/profile/backfill` | 登录 |  | `backfillProfile` |
+
+### pages/activity/create  (6 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/create` | 公开 |  | `adminCreateActivity` |
+| POST | `/api/activity/detail` | 公开 |  | `getActivityDetail` |
+| POST | `/api/activity/publish` | 公开 |  | `adminPublishActivity` |
+| POST | `/api/activity/submit-review` | 公开 |  | `submitActivityForReview` |
+| POST | `/api/activity/update` | 公开 |  | `adminUpdateActivity` |
+| POST | `/api/poster-template/list` | 登录 |  | `getPosterTemplates` |
+
+### pages/activity/index  (11 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/cancel-registration` | 公开 |  | `cancelActivityRegistration` |
+| POST | `/api/activity/checkin` | 公开 |  | `activityCheckin` |
+| POST | `/api/activity/end` | 公开 |  | `adminEndActivity` |
+| POST | `/api/activity/list` | 公开 |  | `getActivityList` |
+| POST | `/api/activity/my-registrations` | 公开 |  | `getMyActivityRegistrations` |
+| POST | `/api/activity/publish` | 公开 |  | `adminPublishActivity` |
+| POST | `/api/activity/submit-review` | 公开 |  | `submitActivityForReview` |
+| POST | `/api/admin/activity/list` | 公开 |  | `adminListMyActivities` |
+| POST | `/api/admin/activity/withdraw` | 公开 |  | `adminWithdrawActivity` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/vendor/status` | 公开 |  | `vendorStatus` |
+
+### pages/activity/order-pay/order-pay  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/order/handlePaymentSuccess` | 公开 |  | `handleActivityOrderSuccess` |
+| POST | `/api/activity/order/pay` | 公开 |  | `payActivityOrder` |
+
+### pages/ai/chat  (9 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/ai/butler/send` | 公开 |  | `aiSendHealthButlerMessage` |
+| POST | `/api/ai/chat/conversations` | 登录 |  | `aiGetConversations` |
+| POST | `/api/ai/chat/messages` | 登录 |  | `aiGetMessages` |
+| POST | `/api/ai/health-coach/send` | 登录 |  | `aiSendHealthCoachMessage` |
+| POST | `/api/ai/nutrition/send` | 登录 |  | `aiSendNutritionMessage` |
+| POST | `/api/ai/transcribe` | 登录 |  | `sttTranscribe` |
+| POST | `/api/basic-quota/status/all` | 登录 |  | `getAllQuotaStatus` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### pages/article-center/article-detail  (8 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/articles/audio` | 公开 |  | `getArticleAudio` |
+| POST | `/api/articles/complete-read` | 公开 |  | `completeArticleRead` |
+| POST | `/api/articles/detail` | 公开 |  | `getArticleDetail` |
+| POST | `/api/articles/quiz/generate` | 公开 |  | `generateQuiz` |
+| POST | `/api/articles/quiz/submit` | 公开 |  | `submitQuiz` |
+| POST | `/api/articles/report-reading-time` | 公开 |  | `reportReadingTime` |
+| POST | `/api/share/qrcode` | 登录 |  | `getShareQrCode` |
+| POST | `/api/tasks//:var/complete` | 登录 | ✓ | `completeTask` |
+
+### pages/article-center/article-edit  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/articles/publish` | 公开 |  | `publishArticle` |
+
+### pages/article-center/index  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/articles/featured` | 公开 |  | `getFeaturedArticles` |
+| POST | `/api/articles/list` | 公开 |  | `getArticleList` |
+
+### pages/article-center/my-posts  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/articles/my-posts` | 公开 |  | `getMyPosts` |
+
+### pages/assessment-plan/detail  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-assessment/result/plans/list` | 公开 |  | `getMyAssessmentPlans` |
+
+### pages/assessment-plan/list  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-assessment/result/plans/list` | 公开 |  | `getMyAssessmentPlans` |
+
+### pages/assessment/apply  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/assessment/appointment/create` | 登录 |  | `createAssessmentAppointmentWithQuota` |
+| POST | `/api/assessment/quota/my-list` | 登录 |  | `getAssessmentQuotas` |
+| POST | `/api/guide/invite-code/validate` | 公开 |  | `validateInviteCode` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/package/available-guides` | 登录 |  | `getAvailableGuides` |
+
+### pages/assessment/purchase  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-assessment/order/create` | 登录 |  | `createAssessmentOrder` |
+| POST | `/api/dan-assessment/order/detail` | 登录 |  | `getAssessmentOrderDetail` |
+| POST | `/api/guide/invite-code/validate` | 公开 |  | `validateInviteCode` |
+| POST | `/api/package/available-guides` | 登录 |  | `getAvailableGuides` |
+
+### pages/assessment/quota  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/assessment/quota/my-list` | 登录 |  | `getAssessmentQuotas` |
+
+### pages/assessment/results  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-assessment/child-results` | 登录 |  | `getChildAssessmentResults` |
+| POST | `/api/dan-assessment/my-results` | 登录 |  | `getMyAssessmentResults` |
+
+### pages/assessment/upload-report  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-assessment/result/upload` | 公开 |  | `uploadAssessmentReport` |
+
+### pages/body-detail/dimension-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dimension/history` | 登录 |  | `getDimensionHistory` |
+| POST | `/api/dimension/overview` | 登录 |  | `getDimensionOverview` |
+
+### pages/body-detail/dimension-questionnaire  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/articles/submit-answers` | 公开 |  | `submitAnswers` |
+| POST | `/api/dimension/questionnaire` | 登录 |  | `submitDimensionQuestionnaire` |
+
+### pages/body-detail/health-dimensions  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dimension/overview` | 登录 |  | `getDimensionOverview` |
+| POST | `/api/dimension/upload` | 登录 |  | `uploadDimensionScore` |
+
+### pages/body-detail/health-report  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/nutrition/deficiency` | 登录 |  | `getDeficiencyAnalysis` |
+
+### pages/body-detail/index  (10 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/content-sections/visible` | 登录 |  | `getVisibleSections` |
+| POST | `/api/dimension/overview` | 登录 |  | `getDimensionOverview` |
+| POST | `/api/dimension/radar-data` | 登录 |  | `getRadarData` |
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+| POST | `/api/family/member/kick` | 登录 |  | `kickFamilyMemberById` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health/gut-flora` | 登录 |  | `getGutFloraIndicators` |
+| POST | `/api/health/indicators` | 登录 |  | `getLatestIndicators` |
+| POST | `/api/health/report/body-abnormal` | 登录 |  | `getBodyAbnormalIndicators` |
+
+### pages/body-detail/member-body-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+
+### pages/butler/apply  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/butler/apply` | 公开 |  | `butlerApply` |
+
+### pages/butler/select  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/butler/available-list` | 公开 |  | `getAvailableButlers` |
+| POST | `/api/butler/my-butler` | 公开 |  | `getMyButler` |
+| POST | `/api/butler/select` | 公开 |  | `selectButler` |
+
+### pages/child/rewards  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/verify-password` | 公开 |  | `verifyPassword` |
+| POST | `/api/points/balance` | 登录 |  | `getPointsBalance` |
+| POST | `/api/rewards/wishlist` | 登录 |  | `getWishlist` |
+| POST | `/api/user/switch-back-to-parent` | 登录 |  | `switchBackToParent` |
+
+### pages/child/tasks  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/verify-password` | 公开 |  | `verifyPassword` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+| POST | `/api/user/switch-back-to-parent` | 登录 |  | `switchBackToParent` |
+
+### pages/cognitive-hall  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/child` | 登录 |  | `getCognitiveChildScores` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/cognitive-test/language-test  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/self-test` | 登录 |  | `submitCognitiveSelfTest` |
+
+### pages/cognitive-test/logic-test  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/self-test` | 登录 |  | `submitCognitiveSelfTest` |
+
+### pages/cognitive-test/memory-test  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/self-test` | 登录 |  | `submitCognitiveSelfTest` |
+
+### pages/cognitive-test/perception-test  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/self-test` | 登录 |  | `submitCognitiveSelfTest` |
+
+### pages/cognitive-test/spatial-test  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/self-test` | 登录 |  | `submitCognitiveSelfTest` |
+
+### pages/cognitive-test/speed-test  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/self-test` | 登录 |  | `submitCognitiveSelfTest` |
+
+### pages/dan-assessment/comparison  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-report/compare` | 登录 |  | `compareDanReports` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/dan-assessment/report-result  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-report/'/:var, 'POST', {})
+// DAN 报告列表(对比页:某成员的所有上传)
+export const getDanReportList = (params) => request('/api/dan-report/list` | 登录 | ✓ | `getDanReportDetail` |
+
+### pages/diet/index  (8 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/diet/ingredients/add` | 登录 |  | `addDietIngredient` |
+| POST | `/api/diet/ingredients/recommend` | 登录 |  | `refreshDietIngredients` |
+| POST | `/api/diet/ingredients/remove` | 登录 |  | `removeDietIngredient` |
+| POST | `/api/diet/ingredients/search` | 登录 |  | `searchDietFoods` |
+| POST | `/api/diet/ingredients/suggest` | 登录 |  | `getDietIngredients` |
+| POST | `/api/diet/meals/config` | 登录 |  | `getMealConfig` |
+| POST | `/api/diet/recommendation/generate` | 登录 |  | `generateDietRecommendation` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+
+### pages/diet/meal-config  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/diet/meals/config` | 登录 |  | `getMealConfig` |
+| POST | `/api/diet/meals/config/save` | 公开 |  | `saveMealConfig` |
+
+### pages/diet/preferences  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/diet/preferences/current-member` | 登录 |  | `getDietPreferences` |
+| POST | `/api/diet/preferences/save` | 登录 |  | `saveDietPreferences` |
+
+### pages/diet/recommendation  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/diet/recommendation/complete` | 登录 |  | `completeDietRecommendation` |
+| POST | `/api/diet/recommendation/generate` | 登录 |  | `generateDietRecommendation` |
+| POST | `/api/diet/recommendation/regenerate` | 登录 |  | `regenerateDietRecommendation` |
+| POST | `/api/diet/recommendation/today` | 登录 |  | `getDietRecommendation` |
+
+### pages/diet/record-detail  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/diet/record/daily` | 登录 |  | `getDietDailyRecords` |
+
+### pages/diet/records  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/food/recommendation/members` | 登录 |  | `getCautionFamilyMembers` |
+| POST | `/api/health/meal/alerts` | 登录 |  | `getMealAlerts` |
+| POST | `/api/health/meal/daily` | 登录 |  | `getMealDaily` |
+| POST | `/api/health/meal/weekly` | 登录 |  | `getMealWeekly` |
+
+### pages/discover-detail/product-detail/product-detail  (7 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cart/add` | 登录 |  | `cartAdd` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/product/detail` | 公开 |  | `productDetail` |
+| POST | `/api/product/order/pay` | 公开 |  | `productOrderPay` |
+| POST | `/api/product/spec/map` | 公开 |  | `productSpecMap` |
+| POST | `/api/share/qrcode` | 登录 |  | `getShareQrCode` |
+| POST | `/api/special-price/info` | 登录 |  | `getSpecialPriceInfo` |
+
+### pages/discover/circle-feed  (7 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/circle/comment/add` | 登录 |  | `addCircleComment` |
+| POST | `/api/circle/comment/list` | 登录 |  | `getCircleComments` |
+| POST | `/api/circle/feed` | 公开 |  | `getCircleFeed` |
+| POST | `/api/circle/members` | 登录 |  | `getCircleMembers` |
+| POST | `/api/circle/post/create` | 登录 |  | `createCirclePost` |
+| POST | `/api/circle/post/delete` | 登录 |  | `deleteCirclePost` |
+| POST | `/api/circle/post/like` | 登录 |  | `toggleCircleLike` |
+
+### pages/discover/circles  (8 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/circle/approve` | 登录 |  | `approveCircleMember` |
+| POST | `/api/circle/discover` | 登录 |  | `discoverCircles` |
+| POST | `/api/circle/join` | 登录 |  | `joinGeneralCircle` |
+| POST | `/api/circle/leave` | 登录 |  | `leaveGeneralCircle` |
+| POST | `/api/circle/my-circles` | 登录 |  | `getMyCircles` |
+| POST | `/api/circle/pending-members` | 登录 |  | `getPendingCircleMembers` |
+| POST | `/api/circle/update` | 登录 |  | `updateCircle` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+
+### pages/discover/create-circle  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/circle/create` | 登录 |  | `createGeneralCircle` |
+
+### pages/discover/index  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/articles/featured` | 公开 |  | `getFeaturedArticles` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/product/list` | 公开 |  | `productList` |
+
+### pages/energy/detail  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/logs` | 登录 |  | `getEnergyLogs` |
+
+### pages/energy/index  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/sandbox` | 登录 |  | `getEnergySandbox` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/family/add-member  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/check-phone` | 公开 |  | `checkPhone` |
+| POST | `/api/consent/record` | 登录 |  | `recordConsent` |
+| POST | `/api/family/member/add` | 登录 |  | `addFamilyMember` |
+| POST | `/api/family/member/update` | 登录 |  | `updateFamilyMember` |
+
+### pages/family/manual-score-entry  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/manual-score/submit` | 登录 |  | `submitManualScore` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/family/mbti-entry  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/family/mbti-profile  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/mbti/profile` | 登录 |  | `getMbtiProfile` |
+
+### pages/family/mbti-result  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/mbti/latest` | 登录 |  | `getMbtiLatest` |
+
+### pages/family/mbti-test  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/mbti/questions` | 登录 |  | `getMbtiQuestions` |
+| POST | `/api/family/mbti/submit` | 登录 |  | `submitMbti` |
+
+### pages/family/self-check  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/self-check/submit` | 登录 |  | `submitSelfCheck` |
+
+### pages/family/self-check-ai  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/self-check/submit` | 登录 |  | `submitSelfCheck` |
+
+### pages/family/self-check-entry  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/self-check/ignore` | 登录 |  | `ignoreSelfCheck` |
+| POST | `/api/family/self-check/status` | 登录 |  | `getSelfCheckStatus` |
+| POST | `/api/family/self-check/trend-analysis` | 登录 |  | `getSelfCheckTrendAnalysis` |
+
+### pages/family/self-check-result  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/self-check/generate-plan` | 登录 |  | `generateSelfCheckPlan` |
+| POST | `/api/family/self-check/history` | 登录 |  | `getSelfCheckHistory` |
+| POST | `/api/family/self-check/latest` | 登录 |  | `getSelfCheckLatest` |
+| POST | `/api/micro-action/complete` | 登录 |  | `microActionComplete` |
+| POST | `/api/micro-action/today` | 登录 |  | `microActionToday` |
+
+### pages/games/1a2b  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/mini-game/complete` | 登录 |  | `completeMiniGame` |
+
+### pages/games/list  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/mini-game/list` | 登录 |  | `getMiniGameList` |
+
+### pages/games/records  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/game/history` | 登录 |  | `getGameHistory` |
+
+### pages/games/schulte  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/mini-game/complete` | 登录 |  | `completeMiniGame` |
+
+### pages/games/stats  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/game/best` | 登录 |  | `getGameBestScores` |
+| POST | `/api/game/leaderboard` | 登录 |  | `getGameLeaderboard` |
+| POST | `/api/game/stats` | 登录 |  | `getGameStats` |
+
+### pages/games/sudoku  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/mini-game/complete` | 登录 |  | `completeMiniGame` |
+
+### pages/growth-main/index  (10 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/food/recommendation/caution` | 登录 |  | `getFoodCautionList` |
+| POST | `/api/growth/recommendations` | 登录 |  | `getGrowthRecommendations` |
+| POST | `/api/health/checkin/list` | 登录 |  | `healthCheckinList` |
+| POST | `/api/health/exercise/list` | 登录 |  | `getExerciseRecords` |
+| POST | `/api/health/meal/list` | 登录 |  | `getHealthMealList` |
+| POST | `/api/health/sleep/list` | 登录 |  | `getSleepRecords` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/mind/checkin/list` | 登录 |  | `getEmotionCheckinList` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+| POST | `/api/wealth/checkin/list` | 登录 |  | `getCheckinList` |
+
+### pages/growth/assessment-result  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-assessment/result/'/:var, 'POST')
+}
+
+// 创建测评预约
+export const createAssessmentAppointment = (data) => {
+  return request('/api/dan-assessment/appointment/create` | 公开 | ✓ | `getAssessmentResult` |
+
+### pages/growth/caution-detail  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/food/recommendation/caution` | 登录 |  | `getFoodCautionList` |
+| POST | `/api/food/recommendation/members` | 登录 |  | `getCautionFamilyMembers` |
+| POST | `/api/food/recommendation/trend` | 登录 |  | `getFoodCautionTrend` |
+| POST | `/api/health/knowledge/v3/section` | 登录 |  | `getKnowledgeSection` |
+
+### pages/growth/challenge-progress  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/purchase/challenge/progress` | 登录 |  | `getChallengeProgress` |
+
+### pages/growth/create  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/growth/record/create` | 登录 |  | `createGrowthRecord` |
+| POST | `/api/growth/record/create-with-order` | 登录 |  | `createGrowthRecord` |
+
+### pages/growth/detail  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/growth/record/'/:var + '/supplements` | 登录 | ✓ | `getGrowthSupplements` |
+
+### pages/growth/diet-checkin  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/ai/transcribe` | 登录 |  | `sttTranscribe` |
+| POST | `/api/basic-quota/status/all` | 登录 |  | `getAllQuotaStatus` |
+
+### pages/growth/exercise-checkin  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/ai/transcribe` | 登录 |  | `sttTranscribe` |
+
+### pages/growth/supplement  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/growth/record/supplement` | 登录 |  | `createGrowthSupplement` |
+| POST | `/api/growth/record/upload-and-parse` | 登录 |  | `uploadAndParseReport` |
+
+### pages/growth/upload  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/growth/record/child/'/:var, 'POST')
+}
+export const getGrowthRecordDetail = (id) => {
+  return request('/api/growth/record/'/:var, 'POST')
+}
+export const deleteGrowthRecord = (id) => {
+  return request('/api/growth/record/'/:var + '/delete` | 登录 | ✓ | `getChildRecords` |
+| POST | `/api/growth/record/create-from-upload` | 登录 |  | `createGrowthRecordFromUpload` |
+| POST | `/api/growth/record/upload-and-parse` | 登录 |  | `uploadAndParseReport` |
+| POST | `/api/product/list` | 公开 |  | `productList` |
+
+### pages/guide/activities/detail  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/activities/create` | 登录 |  | `createActivity` |
+| POST | `/api/guide/activities/detail` | 登录 |  | `getGuideActivityDetail` |
+| POST | `/api/guide/activities/publish` | 登录 |  | `publishActivity` |
+| POST | `/api/guide/activities/update` | 登录 |  | `updateActivity` |
+
+### pages/guide/activities/index  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/activities/cancel` | 登录 |  | `cancelActivity` |
+| POST | `/api/guide/activities/delete` | 登录 |  | `deleteActivity` |
+| POST | `/api/guide/activities/list` | 登录 |  | `getGuideActivityList` |
+| POST | `/api/guide/activities/publish` | 登录 |  | `publishActivity` |
+
+### pages/guide/bind/invite  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/common/qrcode` | 登录 |  | `generateQrCodeFromText` |
+| POST | `/api/guide/bind/confirm` | 登录 |  | `confirmBind` |
+| POST | `/api/guide/bind/invite` | 登录 |  | `generateBindInvite` |
+
+### pages/guide/hierarchy/index  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/all-child-guides` | 登录 |  | `getAllChildGuides` |
+| POST | `/api/guide/child-guides` | 登录 |  | `getChildGuides` |
+| POST | `/api/guide/parent-guide` | 登录 |  | `getParentGuide` |
+
+### pages/guide/packages/create  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/packages` | 登录 |  | `createPackage` |
+
+### pages/guide/packages/detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/packages//:var/items` | 登录 | ✓ | `addPackageItem` |
+| POST | `/api/packages/items/'/:var, 'POST', { _method: 'PUT' }, data)
+}
+
+// 删除任务项
+export const deletePackageItem = (itemId) => {
+  return request('/api/packages/items/'/:var, 'POST', { _method: 'DELETE' })
+}
+
+// 获取任务模板任务项
+export const getPackageItems = (packageId) => {
+  return request(`/api/packages//:var/items`, 'POST')
+}
+
+
+// 获取我的任务计划
+export const getMyPlans = () => {
+  return request('/api/market/plans` | 公开 | ✓ | `updatePackageItem` |
+
+### pages/guide/packages/index  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/packages//:var/publish` | 登录 | ✓ | `publishPackage` |
+| POST | `/api/packages//:var/submit` | 登录 | ✓ | `submitPackageForReview` |
+
+### pages/guide/register/index  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/invite-code/validate` | 公开 |  | `validateInviteCode` |
+| POST | `/api/guide/register` | 公开 |  | `registerGuide` |
+
+### pages/health-main/index  (10 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/articles/featured` | 公开 |  | `getFeaturedArticles` |
+| POST | `/api/cognitive/child` | 登录 |  | `getCognitiveChildScores` |
+| POST | `/api/cognitive/family` | 登录 |  | `getCognitiveFamilyScores` |
+| POST | `/api/dimension/overview` | 登录 |  | `getDimensionOverview` |
+| POST | `/api/emireport/latest` | 登录 |  | `getEmiReport` |
+| POST | `/api/energy/wealth-detail` | 登录 |  | `getWealthDetail` |
+| POST | `/api/family/relationship/scores` | 登录 |  | `getRelationshipScores` |
+| POST | `/api/health/plan/list` | 登录 |  | `getHealthPlanList` |
+| POST | `/api/health/report/list` | 登录 |  | `getReportList` |
+| POST | `/api/survey/status` | 登录 |  | `getSurveyStatus` |
+
+### pages/health/bodyfat-confirm  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/report/bodyfat-save` | 登录 |  | `saveBodyFatMetrics` |
+
+### pages/health/challenge-manage  (7 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health/challenge/create` | 登录 |  | `createChallenge` |
+| POST | `/api/health/challenge/history` | 登录 |  | `getChallengeHistory` |
+| POST | `/api/health/challenge/list` | 登录 |  | `getChallengeList` |
+| POST | `/api/health/challenge/respond` | 登录 |  | `respondChallenge` |
+| POST | `/api/health/challenge/update/'/:var, 'POST', data)
+export const deleteChallenge = (id) => request('/api/health/challenge/delete/'/:var, 'POST', data)
+export const getChallengeTemplates = () => request('/api/health/challenge/templates` | 登录 | ✓ | `updateChallenge` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### pages/health/components/MemberChipPicker  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/health/components/feedback-popup  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/feedback/submit` | 公开 |  | `submitFeedback` |
+
+### pages/health/doa-index  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/doa/overview` | 登录 |  | `getDoaOverview` |
+
+### pages/health/doa-stage-create  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/doa/stage/create` | 登录 |  | `createDoaStage` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/health/doa-stage-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/doa/stage/cancel` | 登录 |  | `cancelDoaStage` |
+| POST | `/api/doa/stage/detail` | 登录 |  | `getDoaStageDetail` |
+
+### pages/health/doa-week-edit  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/doa/stage/detail` | 登录 |  | `getDoaStageDetail` |
+| POST | `/api/doa/week/plan` | 登录 |  | `submitDoaWeekPlan` |
+| POST | `/api/doa/week/review` | 登录 |  | `submitDoaWeekReview` |
+
+### pages/health/gut-flora-detail  (13 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/add` | 登录 |  | `addFamilyMember` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/food/recommendation/caution` | 登录 |  | `getFoodCautionList` |
+| POST | `/api/health/foods` | 登录 |  | `getHealthFoods` |
+| POST | `/api/health/knowledge/query` | 登录 |  | `queryKnowledgeBase` |
+| POST | `/api/health/knowledge/v3/indicator/query` | 登录 |  | `queryIndicatorKnowledge` |
+| POST | `/api/health/report/confirm` | 登录 |  | `confirmReportPreview` |
+| POST | `/api/health/report/detail` | 登录 |  | `getReportDetail` |
+| POST | `/api/health/report/discard` | 登录 |  | `discardReportDraft` |
+| POST | `/api/health/report/edit` | 登录 |  | `editHealthReport` |
+| POST | `/api/health/report/parse` | 登录 |  | `parseReportDraft` |
+| POST | `/api/indicator/change-ranking` | 登录 |  | `getIndicatorChangeRanking` |
+| POST | `/api/nutrition/beijing/analysis` | 登录 |  | `getGutFloraAnalysis` |
+
+### pages/health/gut-flora-foods-detail  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/food/recommendation/members` | 登录 |  | `getCautionFamilyMembers` |
+| POST | `/api/food/recommendation/trend` | 登录 |  | `getFoodCautionTrend` |
+| POST | `/api/health/foods` | 登录 |  | `getHealthFoods` |
+| POST | `/api/health/knowledge/v3/food/query` | 登录 |  | `queryFoodKnowledge` |
+| POST | `/api/health/report/edit` | 登录 |  | `editHealthReport` |
+
+### pages/health/gut-flora-risks-detail  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/knowledge/query` | 登录 |  | `queryKnowledgeBase` |
+| POST | `/api/health/knowledge/unified/disease/query` | 登录 |  | `queryDiseaseKnowledge` |
+| POST | `/api/health/knowledge/v3/indicator/query` | 登录 |  | `queryIndicatorKnowledge` |
+| POST | `/api/health/report/detail` | 登录 |  | `getReportDetail` |
+| POST | `/api/health/report/edit` | 登录 |  | `editHealthReport` |
+
+### pages/health/gut-flora-species-detail  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/knowledge/query` | 登录 |  | `queryKnowledgeBase` |
+| POST | `/api/health/knowledge/v3/bacteria/query` | 登录 |  | `queryBacteriaKnowledge` |
+| POST | `/api/health/report/detail` | 登录 |  | `getReportDetail` |
+| POST | `/api/health/report/edit` | 登录 |  | `editHealthReport` |
+
+### pages/health/health-plan-summary  (11 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/diet/preferences/current-member` | 登录 |  | `getDietPreferences` |
+| POST | `/api/diet/preferences/save` | 登录 |  | `saveDietPreferences` |
+| POST | `/api/health-status/get` | 登录 |  | `getHealthStatus` |
+| POST | `/api/health-status/save` | 登录 |  | `saveHealthStatus` |
+| POST | `/api/health-status/signature` | 登录 |  | `saveHealthSignature` |
+| POST | `/api/health/plan/confirm` | 登录 |  | `confirmPlan` |
+| POST | `/api/health/plan/detail` | 登录 |  | `getHealthPlanDetail` |
+| POST | `/api/health/plan/generate` | 登录 |  | `generateHealthPlan` |
+| POST | `/api/health/plan/regenerate-section` | 登录 |  | `regenerateSection` |
+| POST | `/api/health/plan/save` | 登录 |  | `saveHealthPlan` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### pages/health/health-status-form  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health-status/get` | 登录 |  | `getHealthStatus` |
+| POST | `/api/health-status/save` | 登录 |  | `saveHealthStatus` |
+
+### pages/health/health-survey  (6 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/diet/preferences/current-member` | 登录 |  | `getDietPreferences` |
+| POST | `/api/diet/preferences/save` | 登录 |  | `saveDietPreferences` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health-status/get` | 登录 |  | `getHealthStatus` |
+| POST | `/api/health-status/save` | 登录 |  | `saveHealthStatus` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### pages/health/indicator-curve  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/indicator/change-ranking` | 登录 |  | `getIndicatorChangeRanking` |
+| POST | `/api/indicator/trend` | 登录 |  | `getIndicatorTrend` |
+
+### pages/health/indicator-quicklook  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/indicator/quick-lookup` | 登录 |  | `getIndicatorQuickLookup` |
+
+### pages/health/my-feedback  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/feedback/list` | 公开 |  | `getMyReportFeedbacks` |
+
+### pages/health/nutrition-profile  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/nutrition/deficiency` | 登录 |  | `getDeficiencyAnalysis` |
+| POST | `/api/health/nutrition/profile` | 登录 |  | `getChildNutritionProfile` |
+
+### pages/health/physical-exam-detail  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/report/detail` | 登录 |  | `getReportDetail` |
+
+### pages/health/plan-list  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/plan/delete` | 登录 |  | `deleteHealthPlan` |
+| POST | `/api/health/plan/list` | 登录 |  | `getHealthPlanList` |
+
+### pages/health/report-confirm  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/add` | 登录 |  | `addFamilyMember` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health/report/parse` | 登录 |  | `parseReportDraft` |
+
+### pages/health/report-detail  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/add` | 登录 |  | `addFamilyMember` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health/report/edit` | 登录 |  | `editHealthReport` |
+| POST | `/api/health/report/parse` | 登录 |  | `parseReportDraft` |
+| POST | `/api/health/report/payload` | 登录 |  | `getReportPayload` |
+
+### pages/health/report-list  (8 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health/report/collecting-list` | 登录 |  | `getCollectingReports` |
+| POST | `/api/health/report/delete` | 登录 |  | `deleteReport` |
+| POST | `/api/health/report/list` | 登录 |  | `getReportList` |
+| POST | `/api/health/report/reassign` | 登录 |  | `reassignReport` |
+| POST | `/api/health/report/transfer/approve` | 登录 |  | `approveReportTransfer` |
+| POST | `/api/health/report/transfer/deny` | 登录 |  | `denyReportTransfer` |
+| POST | `/api/health/report/transfer/list` | 登录 |  | `getReportTransferList` |
+
+### pages/health/report-survey  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/survey/create` | 登录 |  | `createReportSurvey` |
+| POST | `/api/health/survey/submit` | 登录 |  | `submitReportSurvey` |
+| POST | `/api/survey/status` | 登录 |  | `getSurveyStatus` |
+
+### pages/health/report-upload  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health/report/collect/status` | 登录 |  | `getReportCollectStatus` |
+| POST | `/api/health/report/transfer/request` | 登录 |  | `requestReportTransfer` |
+| POST | `/api/health/report/upload-only` | 登录 |  | `uploadReportOnly` |
+
+### pages/health/survey-history  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/survey/history` | 登录 |  | `getSurveyHistory` |
+| POST | `/api/survey/template/active` | 登录 |  | `getActiveTemplates` |
+
+### pages/health/survey-questionnaire  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/survey/submit` | 登录 |  | `submitSurvey` |
+| POST | `/api/survey/template/active` | 登录 |  | `getActiveTemplates` |
+
+### pages/health/teacher-service  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health-plan/available-teachers` | 登录 |  | `getAvailableTeachers` |
+
+### pages/home-pages/child-index  (11 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/list` | 公开 |  | `getActivityList` |
+| POST | `/api/energy/logs` | 登录 |  | `getEnergyLogs` |
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getEnergySandbox` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/guide-config/current` | 登录 |  | `getGuideConfig` |
+| POST | `/api/guide/popup/consume` | 登录 |  | `consumeGuidePopup` |
+| POST | `/api/guide/popup/list` | 登录 |  | `getGuidePopupList` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+| POST | `/api/unlock/status` | 登录 |  | `getUnlockStatus` |
+| POST | `/api/user/switch-mode` | 登录 |  | `switchMode` |
+
+### pages/home-pages/components/AdBanner  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/home-banner/list` | 登录 |  | `getHomeBanners` |
+
+### pages/home-pages/components/ContactImport  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/contact/import-phone` | 登录 |  | `importPhoneContact` |
+
+### pages/home-pages/components/DailySummary  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/feedback/read` | 公开 |  | `markFeedbackRead` |
+| POST | `/api/feedback/today` | 公开 |  | `getTodayFeedback` |
+
+### pages/home-pages/components/MicroActionCard  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/micro-action/complete` | 登录 |  | `microActionComplete` |
+| POST | `/api/micro-action/today` | 登录 |  | `microActionToday` |
+
+### pages/home-pages/member-home-detail  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+
+### pages/home-pages/parent-index  (23 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/list` | 公开 |  | `getActivityList` |
+| POST | `/api/articles/featured` | 公开 |  | `getFeaturedArticles` |
+| POST | `/api/contact/list` | 登录 |  | `getContactList` |
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getEnergySandbox` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/family/member/switch` | 登录 |  | `switchToFamilyMember` |
+| POST | `/api/family/self-check/status` | 登录 |  | `getSelfCheckStatus` |
+| POST | `/api/health/alert/dismiss` | 登录 |  | `dismissAlert` |
+| POST | `/api/health/alert/list` | 登录 |  | `getActiveAlerts` |
+| POST | `/api/health/challenge/list` | 登录 |  | `getChallengeList` |
+| POST | `/api/health/circle/list` | 登录 |  | `getCircleList` |
+| POST | `/api/health/circle/ranking` | 登录 |  | `getCircleRanking` |
+| POST | `/api/health/family/ranking` | 登录 |  | `getFamilyRanking` |
+| POST | `/api/invite/qrcode` | 登录 |  | `getInviteQrCode` |
+| POST | `/api/parent/dashboard` | 登录 |  | `getParentDashboard` |
+| POST | `/api/stats/child-completion` | 登录 |  | `getChildCompletionStats` |
+| POST | `/api/tasks//:var/review` | 登录 | ✓ | `approveTask` |
+| POST | `/api/tasks//:var/review` | 登录 | ✓ | `rejectTask` |
+| POST | `/api/tasks/pending-review` | 登录 |  | `getPendingReviewTasks` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+| POST | `/api/unlock/status` | 登录 |  | `getUnlockStatus` |
+| POST | `/api/wishes/pending` | 登录 |  | `getPendingWishes` |
+
+### pages/home/app-library  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/home/app-library` | 登录 |  | `getAppLibrary` |
+| POST | `/api/home/shortcut/reset` | 登录 |  | `resetShortcutConfig` |
+| POST | `/api/home/shortcut/save` | 登录 |  | `saveShortcutConfig` |
+
+### pages/index-home/index  (28 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/list` | 公开 |  | `getActivityList` |
+| POST | `/api/admin/notices/all` | 登录 |  | `getNotices` |
+| POST | `/api/articles/featured` | 公开 |  | `getFeaturedArticles` |
+| POST | `/api/commission/cf/list` | 登录 |  | `getCfList` |
+| POST | `/api/commission/cf/summary` | 登录 |  | `getCfSummary` |
+| POST | `/api/energy/logs` | 登录 |  | `getEnergyLogs` |
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getEnergySandbox` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/family/member/switch` | 登录 |  | `switchToFamilyMember` |
+| POST | `/api/family/self-check/status` | 登录 |  | `getSelfCheckStatus` |
+| POST | `/api/guide-config/current` | 登录 |  | `getGuideConfig` |
+| POST | `/api/guide/parent-invite/accept` | 登录 |  | `acceptParentInvite` |
+| POST | `/api/guide/popup/consume` | 登录 |  | `consumeGuidePopup` |
+| POST | `/api/guide/popup/list` | 登录 |  | `getGuidePopupList` |
+| POST | `/api/health/challenge/list` | 登录 |  | `getChallengeList` |
+| POST | `/api/health/challenge/progress` | 登录 |  | `updateChallengeProgress` |
+| POST | `/api/health/challenge/respond` | 登录 |  | `respondChallenge` |
+| POST | `/api/home/app-library` | 登录 |  | `getAppLibrary` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/notification/list` | 登录 |  | `getNotificationList` |
+| POST | `/api/notification/read` | 登录 |  | `readNotification` |
+| POST | `/api/points/logs` | 登录 |  | `getPointsLogs` |
+| POST | `/api/survey/status` | 登录 |  | `getSurveyStatus` |
+| POST | `/api/tasks/history` | 登录 |  | `getTaskHistory` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+
+### pages/invite/join  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/invite/check-family` | 公开 |  | `checkUserFamily` |
+| POST | `/api/family/invite/validate` | 公开 |  | `validateInvitation` |
+| POST | `/api/family/invite/validate-family-code` | 公开 |  | `validateFamilyCode` |
+| POST | `/api/invite/bind` | 登录 |  | `bindReferral` |
+
+### pages/invite/join-form  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/invite/request-join-by-code` | 公开 |  | `requestJoinByCode` |
+| POST | `/api/user/update` | 登录 |  | `updateUserInfo` |
+
+### pages/login/scan-login  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/wechat-web/scan` | 公开 |  | `wechatWebScan` |
+
+### pages/match/street-match  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/admin/families/count` | 登录 |  | `countFamiliesByStreetIds` |
+| POST | `/api/admin/teachers/count` | 登录 |  | `countTeachersByStreetIds` |
+| POST | `/api/streets//:var/match`)
+}
+
+// 按区域统计
+export const getStreetStats = (level = 4) => {
+  return request('/api/streets/stats', 'POST', { level })
+}
+
+// 获取家庭详情(含地址信息)
+export const getFamilyDetail = (id) => {
+  return request(`/api/admin/families//:var`)
+}
+
+// 更新家庭地址
+export const updateFamilyAddress = (data) => {
+  return request(`/api/admin/families/update` | 公开 | ✓ | `matchByStreet` |
+
+### pages/meal/log  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/meal/log` | 登录 |  | `logMeal` |
+| POST | `/api/meal/logs` | 登录 |  | `getMealLogs` |
+| POST | `/api/meal/nutrition-summary` | 登录 |  | `getNutritionSummary` |
+
+### pages/meal/preference  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/nutrition/profile/get` | 登录 |  | `getNutritionProfile` |
+| POST | `/api/nutrition/profile/save` | 登录 |  | `saveNutritionProfile` |
+
+### pages/meal/recommend  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/meal/recommend` | 登录 |  | `getMealRecommend` |
+| POST | `/api/meal/replace` | 登录 |  | `replaceFood` |
+
+### pages/member-detail/components/member-detail-sections/action-section  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/list` | 公开 |  | `getActivityList` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasksByCategory` |
+| POST | `/api/wealth/checkin/stats` | 登录 |  | `getCheckinStats` |
+
+### pages/member-detail/components/member-detail-sections/body-section  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dimension/overview` | 登录 |  | `getDimensionOverview` |
+| POST | `/api/health/analysis` | 登录 |  | `getHealthAnalysis` |
+| POST | `/api/wealth/checkin/list` | 登录 |  | `getCheckinList` |
+
+### pages/member-detail/components/member-detail-sections/mind-section  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/contact/list` | 登录 |  | `getContactList` |
+| POST | `/api/family/relationship/health-alerts` | 登录 |  | `getHealthAlerts` |
+| POST | `/api/family/relationship/milestones` | 登录 |  | `getMilestones` |
+| POST | `/api/family/relationship/scores` | 登录 |  | `getRelationshipScores` |
+
+### pages/member-detail/components/member-detail-sections/wisdom-section  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/assessment/history` | 登录 |  | `getAssessmentHistory` |
+| POST | `/api/assessment/latest-result` | 登录 |  | `getAssessmentLatestResult` |
+
+### pages/member-detail/member-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/activity/list` | 公开 |  | `getActivityList` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+
+### pages/member-detail/report-detail  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/report/detail` | 登录 |  | `getReportDetail` |
+
+### pages/membership/benefits  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/membership/benefits` | 登录 |  | `getMembershipBenefits` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### pages/membership/index  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/butler/my-butler` | 公开 |  | `getMyButler` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/membership/benefits` | 登录 |  | `getMembershipBenefits` |
+| POST | `/api/membership/compare` | 登录 |  | `getMembershipCompare` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### pages/membership/pay  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/coupon/list` | 登录 |  | `getCouponList` |
+| POST | `/api/membership/orders` | 登录 |  | `createOrder` |
+| POST | `/api/membership/orders/continue` | 登录 |  | `nextOrder` |
+| POST | `/api/membership/plans` | 登录 |  | `getMembershipPlans` |
+
+### pages/membership/result  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/coupon/join-rules` | 登录 |  | `getJoinCouponRules` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/membership/orders/continue` | 登录 |  | `nextOrder` |
+
+### pages/membership/upgrade  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/coupon/join-rules` | 登录 |  | `getJoinCouponRules` |
+| POST | `/api/membership/compare` | 登录 |  | `getMembershipCompare` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/membership/plans` | 登录 |  | `getMembershipPlans` |
+| POST | `/api/membership/upgrade-records` | 登录 |  | `getUpgradeRecords` |
+
+### pages/mind-detail/articles  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/articles/categories` | 公开 |  | `getArticleCategories` |
+| POST | `/api/articles/list` | 公开 |  | `getArticleList` |
+
+### pages/mind-detail/components/PsychCrisisBanner  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/alert/dismiss` | 登录 |  | `dismissAlert` |
+
+### pages/mind-detail/emotion-report  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/emireport/latest` | 登录 |  | `getEmiReport` |
+
+### pages/mind-detail/family-dashboard  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/mind/fortune` | 登录 |  | `getFamilyFortune` |
+| POST | `/api/mind/fortune/month` | 登录 |  | `getMonthFortune` |
+| POST | `/api/mind/fortune/reports` | 登录 |  | `getFortuneReports` |
+| POST | `/api/mind/fortune/week` | 登录 |  | `getWeekFortune` |
+
+### pages/mind-detail/index  (14 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/contact/list` | 登录 |  | `getContactList` |
+| POST | `/api/content-sections/visible` | 登录 |  | `getVisibleSections` |
+| POST | `/api/dan-assessment/report/child` | 登录 |  | `getDanReportByChild` |
+| POST | `/api/dimension/radar-data` | 登录 |  | `getRadarData` |
+| POST | `/api/emireport/latest` | 登录 |  | `getEmiReport` |
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getEnergySandbox` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+| POST | `/api/family/member/kick` | 登录 |  | `kickFamilyMemberById` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/family/relationship/health-alerts` | 登录 |  | `getHealthAlerts` |
+| POST | `/api/family/relationship/milestones` | 登录 |  | `getMilestones` |
+| POST | `/api/health/indicators` | 登录 |  | `getLatestIndicators` |
+| POST | `/api/mind/fortune` | 登录 |  | `getFamilyFortune` |
+
+### pages/mind-detail/innate-portrait  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/mind/innate/reading` | 登录 |  | `getInnateReading` |
+
+### pages/mind-detail/innate-trajectory  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/mind/innate/trajectory` | 登录 |  | `getInnateTrajectory` |
+
+### pages/mind-detail/member-mind-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+
+### pages/mind-detail/training  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/game/stats` | 登录 |  | `getGameStats` |
+
+### pages/notification/index  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/notification/list` | 登录 |  | `getNotificationList` |
+| POST | `/api/notification/read` | 登录 |  | `readNotification` |
+
+### pages/nutritionist/apply  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/nutritionist/apply` | 公开 |  | `nutritionistApply` |
+
+### pages/orchestration/editor  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/admin/task-templates` | 登录 |  | `getNodeTemplateList` |
+| POST | `/api/orchestration/flow/detail` | 登录 |  | `getOrchestrationFlowDetail` |
+| POST | `/api/orchestration/flow/publish` | 登录 |  | `publishOrchestrationFlow` |
+| POST | `/api/orchestration/flow/save` | 登录 |  | `saveOrchestrationFlow` |
+
+### pages/orchestration/index  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/orchestration/flow/archive` | 登录 |  | `archiveOrchestrationFlow` |
+| POST | `/api/orchestration/flow/delete` | 登录 |  | `deleteOrchestrationFlow` |
+| POST | `/api/orchestration/flow/list` | 登录 |  | `getOrchestrationFlowList` |
+| POST | `/api/orchestration/flow/publish` | 登录 |  | `publishOrchestrationFlow` |
+
+### pages/orchestration/node-edit  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/parent/appointments  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/dan-assessment/appointment/cancel` | 登录 |  | `cancelAppointment` |
+| POST | `/api/dan-assessment/appointment/user` | 登录 |  | `getMyAppointments` |
+
+### pages/parent/child-detail  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/tasks/pending-review` | 登录 |  | `getPendingReviewTasks` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+| POST | `/api/wishes/pending` | 登录 |  | `getPendingWishes` |
+
+### pages/parent/plans/detail  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/plans/detail` | 登录 |  | `getGuidePlanDetail` |
+
+### pages/parent/plans/index  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/plans/family-list` | 登录 |  | `listFamilyPlans` |
+
+### pages/parent/wishes/index  (6 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/wishes//:var/approve-exchange` | 登录 | ✓ | `approveWishExchange` |
+| POST | `/api/wishes//:var/fulfill` | 登录 | ✓ | `markWishFulfilled` |
+| POST | `/api/wishes//:var/price` | 登录 | ✓ | `setWishPrice` |
+| POST | `/api/wishes//:var/reject` | 登录 | ✓ | `rejectWish` |
+| POST | `/api/wishes/list` | 登录 |  | `getWishes` |
+| POST | `/api/wishes/pending` | 登录 |  | `getPendingWishes` |
+
+### pages/pearl-reminders/index  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/pearl/interaction/add` | 登录 |  | `addPearlInteraction` |
+| POST | `/api/pearl/reminder/list` | 登录 |  | `getPearlReminders` |
+
+### pages/profile-extra/coupons  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/coupon/claim` | 登录 |  | `claimCoupon` |
+| POST | `/api/coupon/exchangeable` | 登录 |  | `getExchangeableCoupons` |
+| POST | `/api/coupon/my` | 登录 |  | `getMyCoupons` |
+| POST | `/api/family-platform/exchange-coupon` | 登录 |  | `exchangeCouponByCf` |
+
+### pages/profile-extra/family-members  (8 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/invite/generate` | 公开 |  | `generateFamilyInvite` |
+| POST | `/api/family/invite/pending-requests` | 公开 |  | `getPendingJoinRequests` |
+| POST | `/api/family/member/kick` | 登录 |  | `kickFamilyMemberById` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/family/member/switch` | 登录 |  | `switchToFamilyMember` |
+| POST | `/api/health/report/member-permission/members/'/:var, 'POST', {})
+
+/** 授权:让指定用户可查看某成员的报告(管理员) */
+export const grantReportMemberPermission = (targetMemberId, granteeUserId) =>
+  request('/api/health/report/member-permission/grant` | 登录 | ✓ | `getMemberGrantedUsers` |
+| POST | `/api/health/report/member-permission/revoke` | 登录 |  | `revokeReportMemberPermission` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+
+### pages/profile-extra/gates  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/unlock/status` | 登录 |  | `getUnlockStatus` |
+
+### pages/profile-extra/onboarding  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/onboarding/claim` | 登录 |  | `claimOnboardingReward` |
+| POST | `/api/onboarding/progress` | 登录 |  | `getOnboardingProgress` |
+
+### pages/profile-main/profile  (16 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/verify-password` | 公开 |  | `verifyPassword` |
+| POST | `/api/cart/count` | 登录 |  | `cartCount` |
+| POST | `/api/commission/my-referrer` | 登录 |  | `getMyReferrer` |
+| POST | `/api/commission/team/consumption` | 登录 |  | `getTeamConsumption` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getEnergySandbox` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health/challenge/list` | 登录 |  | `getChallengeList` |
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+| POST | `/api/invite/summary` | 登录 |  | `getReferralSummary` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/product/order/my/counts` | 公开 |  | `getOrderCounts` |
+| POST | `/api/share/qrcode` | 登录 |  | `getShareQrCode` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasksByCategory` |
+| POST | `/api/user/info` | 登录 |  | `getUserInfo` |
+| POST | `/api/user/profile-stats` | 登录 |  | `getProfileStats` |
+| POST | `/api/vendor/status` | 公开 |  | `vendorStatus` |
+
+### pages/profile/components/ProfileHeader  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/verify-password` | 公开 |  | `verifyPassword` |
+| POST | `/api/family/member/switch` | 登录 |  | `switchToFamilyMember` |
+
+### pages/profile/components/ProfileMenu  (6 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/set-password` | 公开 |  | `setPassword` |
+| POST | `/api/auth/verify-password` | 公开 |  | `verifyPassword` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/family/user/members/update-visibility` | 登录 |  | `updateMemberVisibility` |
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+| POST | `/api/vendor/status` | 公开 |  | `vendorStatus` |
+
+### pages/profile/components/ProfileStats  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/user/action-stats` | 登录 |  | `getUserActionStats` |
+
+### pages/profile/index  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+
+### pages/profile/message-history  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/commission/cf/list` | 登录 |  | `getCfList` |
+| POST | `/api/energy/logs` | 登录 |  | `getEnergyLogs` |
+| POST | `/api/notification/list` | 登录 |  | `getNotificationList` |
+| POST | `/api/notification/read` | 登录 |  | `readNotification` |
+| POST | `/api/points/logs` | 登录 |  | `getPointsLogs` |
+
+### pages/profile/portrait-edit  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/sandbox` | 登录 |  | `getEnergySandbox` |
+| POST | `/api/user/portrait/edit` | 登录 |  | `editPortrait` |
+| POST | `/api/user/portrait/get` | 登录 |  | `getPortrait` |
+
+### pages/profile/report-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+| POST | `/api/report-summary/detail/'/:var, 'POST', {})
+export const downloadReportSummary = (id) => request('/api/report-summary/download/'/:var, 'POST', {})
+
+// 服务角色统一申请
+export const submitServiceRoleApply = (data) => {
+    return request('/api/service-role/apply` | 登录 | ✓ | `getReportSummaryDetail` |
+
+### pages/profile/report-management  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/report-summary/list` | 登录 |  | `getReportSummaryList` |
+
+### pages/profile/service-role-apply  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/service-role/my-apply` | 登录 |  | `getMyServiceRoleApply` |
+| POST | `/api/service-role/upload-image` | 登录 |  | `uploadServiceRoleImage` |
+
+### pages/promotion/commission  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/commission/cf/list` | 登录 |  | `getCfList` |
+| POST | `/api/commission/cf/summary` | 登录 |  | `getCfSummary` |
+
+### pages/promotion/index  (7 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/commission/cf/summary` | 登录 |  | `getCfSummary` |
+| POST | `/api/earnings/admin/distribute` | 登录 |  | `distributeToMember` |
+| POST | `/api/earnings/admin/toggle-member` | 登录 |  | `toggleMemberBalance` |
+| POST | `/api/earnings/admin/withdraw` | 登录 |  | `withdrawFamilyEarnings` |
+| POST | `/api/earnings/family/summary` | 登录 |  | `getFamilyEarningsSummary` |
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+| POST | `/api/invite/summary` | 登录 |  | `getReferralSummary` |
+
+### pages/promotion/invite  (7 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/invite/bind` | 登录 |  | `bindReferral` |
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+| POST | `/api/invite/list` | 登录 |  | `getReferralList` |
+| POST | `/api/invite/milestone/claim` | 登录 |  | `claimInviteMilestone` |
+| POST | `/api/invite/milestone/list` | 登录 |  | `getInviteMilestones` |
+| POST | `/api/invite/qrcode` | 登录 |  | `getInviteQrCode` |
+| POST | `/api/invite/summary` | 登录 |  | `getReferralSummary` |
+
+### pages/promotion/leaderboard  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/leaderboard/my-rank` | 登录 |  | `getLeaderboardMyRank` |
+| POST | `/api/leaderboard/top` | 登录 |  | `getLeaderboardTop` |
+
+### pages/promotion/team  (8 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/commission/cf/rate` | 登录 |  | `getCfRate` |
+| POST | `/api/commission/my-referrer` | 登录 |  | `getMyReferrer` |
+| POST | `/api/commission/team/consumption` | 登录 |  | `getTeamConsumption` |
+| POST | `/api/commission/team/consumption-curve` | 登录 |  | `getTeamAllMembersConsumptionCurve` |
+| POST | `/api/commission/team/growth-curve` | 登录 |  | `getTeamGrowthCurve` |
+| POST | `/api/commission/team/l1-consumption-curve` | 登录 |  | `getTeamL1ConsumptionCurve` |
+| POST | `/api/commission/team/list` | 登录 |  | `getTeamList` |
+| POST | `/api/commission/team/tree` | 登录 |  | `getTeamTree` |
+
+### pages/promotion/withdraw  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/commission/summary` | 登录 |  | `getCommissionSummary` |
+| POST | `/api/withdrawal/apply` | 登录 |  | `applyWithdrawal` |
+| POST | `/api/withdrawal/history` | 登录 |  | `getWithdrawalHistory` |
+
+### pages/psych-assessment/index  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/child` | 登录 |  | `getCognitiveChildScores` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+
+### pages/psych-assessment/quiz  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cognitive/self-test` | 登录 |  | `submitCognitiveSelfTest` |
+
+### pages/reminder-config/index  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/task/reminder-config/get` | 登录 |  | `getReminderConfig` |
+| POST | `/api/task/reminder-config/save` | 登录 |  | `saveReminderConfig` |
+
+### pages/rewards/badge  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/badges/child/list` | 登录 |  | `getChildBadges` |
+| POST | `/api/badges/favorite` | 登录 |  | `toggleBadgeFavorite` |
+| POST | `/api/badges/list` | 登录 |  | `getActiveBadges` |
+| POST | `/api/badges/ranking/family` | 登录 |  | `getFamilyBadgeRanking` |
+| POST | `/api/badges/statistics/child` | 登录 |  | `getChildBadgeStats` |
+
+### pages/rewards/rewards  (9 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/parent/wishlist` | 登录 |  | `createParentWishlist` |
+| POST | `/api/parent/wishlist//:var/exchange` | 登录 | ✓ | `exchangeParentWishlist` |
+| POST | `/api/parent/wishlist/list` | 登录 |  | `getParentWishlist` |
+| POST | `/api/points/balance` | 登录 |  | `getPointsBalance` |
+| POST | `/api/rewards` | 登录 |  | `createReward` |
+| POST | `/api/rewards//:var/exchange` | 登录 | ✓ | `exchangeReward` |
+| POST | `/api/rewards/wishlist` | 登录 |  | `getWishlist` |
+| POST | `/api/user/info` | 登录 |  | `getUserInfo` |
+
+### pages/share/index  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/share/family-footprint` | 登录 |  | `getFamilyFootprint` |
+
+### pages/shop/cart/cart  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/membership/gift-membership-progress` | 登录 |  | `getGiftMembershipProgress` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### pages/shop/checkout/checkout  (12 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/coupon/apply` | 登录 |  | `applyCoupon` |
+| POST | `/api/coupon/checkout-list` | 登录 |  | `getCouponCheckoutList` |
+| POST | `/api/coupon/list` | 登录 |  | `getCouponList` |
+| POST | `/api/family-platform/balance` | 登录 |  | `getFamilyPlatformBalance` |
+| POST | `/api/family-platform/exchange-coupon` | 登录 |  | `exchangeCouponByCf` |
+| POST | `/api/membership/gift-membership-progress` | 登录 |  | `getGiftMembershipProgress` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/product/detail` | 公开 |  | `productDetail` |
+| POST | `/api/product/purchase_fields/required` | 公开 |  | `getProductRequiredFields` |
+| POST | `/api/shop/discount/calculate` | 公开 |  | `shopDiscountCalculate` |
+| POST | `/api/special-price/info` | 登录 |  | `getSpecialPriceInfo` |
+| POST | `/api/user/address/list` | 登录 |  | `addressList` |
+
+### pages/shop/consignee-edit/consignee-edit  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/consignee/detail` | 登录 |  | `consigneeDetail` |
+| POST | `/api/consignee/save` | 登录 |  | `consigneeSave` |
+
+### pages/shop/consignee-list/consignee-list  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/consignee/delete` | 登录 |  | `consigneeDelete` |
+| POST | `/api/consignee/list` | 登录 |  | `consigneeList` |
+
+### pages/shop/index/index  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/cart/count` | 登录 |  | `cartCount` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/product/list` | 公开 |  | `productList` |
+| POST | `/api/shop/category/tree` | 公开 |  | `goodsCategory` |
+
+### pages/shop/order-detail/order-detail  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/product/order/cancel` | 公开 |  | `productOrderCancel` |
+| POST | `/api/product/order/confirm` | 公开 |  | `productOrderConfirm` |
+| POST | `/api/product/order/detail` | 公开 |  | `productOrderDetail` |
+
+### pages/shop/order-list/order-list  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/product/order/cancel` | 公开 |  | `productOrderCancel` |
+| POST | `/api/product/order/confirm` | 公开 |  | `productOrderConfirm` |
+| POST | `/api/product/order/my` | 公开 |  | `productOrderMy` |
+| POST | `/api/product/order/my/counts` | 公开 |  | `productOrderCounts` |
+
+### pages/shop/payment/payment  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+
+### pages/shop/search/search  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/product/list` | 公开 |  | `productList` |
+
+### pages/stats/completion-rate  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/stats/child-completion` | 登录 |  | `getChildCompletionStats` |
+| POST | `/api/stats/family-completion` | 登录 |  | `getFamilyCompletionStats` |
+
+### pages/stats/index  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/stats/child/overview` | 登录 |  | `getChildOverview` |
+
+### pages/tasks/create-task  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/tasks/create` | 登录 |  | `createTask` |
+| POST | `/api/tasks/list` | 登录 |  | `getTaskListForPicker` |
+
+### pages/tasks/daily-tasks  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/growth-task/claim` | 登录 |  | `claimGrowthTaskReward` |
+| POST | `/api/growth-task/list` | 登录 |  | `getGrowthTaskList` |
+
+### pages/tasks/review  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/tasks//:var/review` | 登录 | ✓ | `approveTask` |
+| POST | `/api/tasks//:var/review` | 登录 | ✓ | `rejectTask` |
+| POST | `/api/tasks/history` | 登录 |  | `getTaskHistory` |
+| POST | `/api/tasks/pending-review` | 登录 |  | `getPendingReviewTasks` |
+
+### pages/tasks/tasks  (8 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/tasks//:var/complete` | 登录 | ✓ | `completeTask` |
+| POST | `/api/tasks/accept` | 登录 |  | `acceptTask` |
+| POST | `/api/tasks/create` | 登录 |  | `createTask` |
+| POST | `/api/tasks/my-pending` | 登录 |  | `getMyPendingTasks` |
+| POST | `/api/tasks/today` | 登录 |  | `getTodayTasks` |
+
+### pages/teacher/chat  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/messages/list` | 登录 |  | `getGuideMessages` |
+
+### pages/teacher/families  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/families` | 登录 |  | `getBoundFamilies` |
+
+### pages/teacher/messages  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/messages/list` | 登录 |  | `getGuideMessages` |
+
+### pages/teacher/orders  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/orders/list` | 登录 |  | `getGuideOrders` |
+| POST | `/api/guide/orders/stats` | 登录 |  | `getOrderStats` |
+
+### pages/teacher/plan-create  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/training-plans/create` | 登录 |  | `createTrainingPlan` |
+
+### pages/teacher/plan-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/families//:var/plans//:var/update` | 登录 | ✓ | `updateGuidePlanContent` |
+| POST | `/api/guide/families//:var/plans/pending` | 登录 | ✓ | `getGuidePendingPlans` |
+
+### pages/teacher/plan-list  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/training-plans/list` | 登录 |  | `getTrainingPlanList` |
+
+### pages/teacher/review-family  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/families//:var/children//:var/pending-review` | 登录 | ✓ | `getGuideChildPendingTasks` |
+| POST | `/api/guide/families//:var/members` | 登录 | ✓ | `getGuideFamilyMembers` |
+| POST | `/api/guide/families//:var/plans/pending` | 登录 | ✓ | `getGuidePendingPlans` |
+| POST | `/api/guide/families//:var/tasks//:var/review` | 登录 | ✓ | `reviewGuideTask` |
+| POST | `/api/tasks//:var/review` | 登录 | ✓ | `reviewTask` |
+
+### pages/teacher/review-workbench  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/families/my-families` | 登录 |  | `getGuideMyFamilies` |
+
+### pages/teacher/service-tasks  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/tasks//:var/complete` | 登录 | ✓ | `completeTask` |
+
+### pages/teacher/teacher-profile  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/parent-invite/generate` | 登录 |  | `generateParentInvite` |
+| POST | `/api/user/switch-role` | 登录 |  | `switchRole` |
+
+### pages/teacher/team  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/guide/invite-code/generate` | 公开 |  | `generateInviteCode` |
+| POST | `/api/guide/team/invite-code/generate` | 登录 |  | `generateTeamInviteCode` |
+| POST | `/api/guide/team/members` | 登录 |  | `getTeamMembers` |
+| POST | `/api/guide/team/stats` | 登录 |  | `getTeamStats` |
+
+### pages/user-edit/user-edit  (6 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/direct-register` | 公开 |  | `directRegister` |
+| POST | `/api/family/invite/request-join-by-code` | 公开 |  | `requestJoinByCode` |
+| POST | `/api/family/user/create-family` | 登录 |  | `createFamily` |
+| POST | `/api/membership/my` | 登录 |  | `getMyMembership` |
+| POST | `/api/user/info` | 登录 |  | `getUserInfo` |
+| POST | `/api/user/update` | 登录 |  | `updateUserInfo` |
+
+### pages/vendor/apply  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/vendor/apply` | 登录 |  | `vendorApply` |
+
+### pages/vendor/center  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/vendor/info` | 公开 |  | `vendorInfo` |
+| POST | `/api/vendor/status` | 公开 |  | `vendorStatus` |
+
+### pages/vendor/order-review/order-review  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/product/order/detail` | 公开 |  | `productOrderDetail` |
+| POST | `/api/product/order/review/update` | 公开 |  | `productOrderReviewUpdate` |
+
+### pages/vendor/orders/orders  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/product/order/confirm` | 公开 |  | `productOrderConfirm` |
+| POST | `/api/product/order/vendor` | 公开 |  | `productOrderVendor` |
+
+### pages/vendor/product-edit/product-edit  (3 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/product/create` | 公开 |  | `productCreate` |
+| POST | `/api/product/detail` | 公开 |  | `productDetail` |
+| POST | `/api/product/update` | 公开 |  | `productUpdate` |
+
+### pages/vendor/products/products  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/product/my` | 公开 |  | `productMy` |
+| POST | `/api/product/shelve` | 公开 |  | `productShelve` |
+
+### pages/vendor/team-customers/team-customers  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/admin/supply-team/customers` | 登录 |  | `getTeamCustomers` |
+
+### pages/vendor/team-system/team-system  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/admin/supply-hierarchy/my` | 登录 |  | `getVendorHierarchyInfo` |
+| POST | `/api/admin/supply-system/my-system` | 登录 |  | `getVendorSystemInfo` |
+| POST | `/api/admin/supply-team/customers` | 登录 |  | `getVendorTeamCustomers` |
+| POST | `/api/admin/supply-team/members` | 登录 |  | `getVendorTeamMembers` |
+
+### pages/wealth-cf/index  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| GET | `/api/cf/balance` | 登录 |  | `getCfBalance` |
+| GET | `/api/cf/family-coupons` | 登录 |  | `getFamilyCoupons` |
+| GET | `/api/cf/logs` | 登录 |  | `getCfLogs` |
+| POST | `/api/coupon/exchangeable` | 登录 |  | `getExchangeableCoupons` |
+| POST | `/api/family-platform/exchange-coupon` | 登录 |  | `exchangeCouponByCf` |
+
+### pages/wealth-detail/member-wealth-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+
+### pages/wealth-sub/checkin  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/wealth/checkin/create` | 登录 |  | `createCheckin` |
+| POST | `/api/wealth/checkin/delete` | 登录 |  | `deleteCheckin` |
+| POST | `/api/wealth/checkin/list` | 登录 |  | `getCheckinList` |
+| POST | `/api/wealth/checkin/stats` | 登录 |  | `getCheckinStats` |
+
+### pages/wealth-sub/insurance-add  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/wealth/insurance/create` | 公开 |  | `createInsurance` |
+| POST | `/api/wealth/insurance/detail` | 公开 |  | `getInsuranceDetail` |
+| POST | `/api/wealth/insurance/update` | 公开 |  | `updateInsurance` |
+| POST | `/api/wealth/insurance/upload` | 公开 |  | `uploadPolicy` |
+
+### pages/wealth-sub/insurance-list  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/wealth/insurance/delete` | 公开 |  | `deleteInsurance` |
+| POST | `/api/wealth/insurance/list` | 公开 |  | `getInsuranceList` |
+
+### pages/wealth-sub/insurance-planning  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/insurance/planning` | 登录 |  | `getInsurancePlanning` |
+
+### pages/wealth/index  (12 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/badges/statistics/child` | 登录 |  | `getChildBadgeStats` |
+| POST | `/api/commission/summary` | 登录 |  | `getCommissionSummary` |
+| POST | `/api/daily-task/overview` | 登录 |  | `getDailyTaskOverview` |
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+| POST | `/api/energy/wealth-detail` | 登录 |  | `getWealthDetail` |
+| POST | `/api/family/member/kick` | 登录 |  | `kickFamilyMemberById` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/invite/summary` | 登录 |  | `getReferralSummary` |
+| POST | `/api/product/list` | 公开 |  | `productList` |
+| POST | `/api/wealth/insurance/list` | 公开 |  | `getInsuranceList` |
+
+### pages/wisdom-detail/cognitive-report  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/assessment/latest-result` | 登录 |  | `getAssessmentLatestResult` |
+| POST | `/api/cognitive/norms` | 登录 |  | `getCognitiveNorms` |
+| POST | `/api/cognitive/recommendations` | 登录 |  | `getCognitiveRecommendations` |
+| POST | `/api/cognitive/recommendations/create-task` | 登录 |  | `createTaskFromRecommendation` |
+| POST | `/api/cognitive/trend` | 登录 |  | `getCognitiveTrend` |
+
+### pages/wisdom-detail/index  (8 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/assessment/latest-result` | 登录 |  | `getAssessmentLatestResult` |
+| POST | `/api/content-sections/visible` | 登录 |  | `getVisibleSections` |
+| POST | `/api/dan-assessment/report/child` | 登录 |  | `getDanReportByChild` |
+| POST | `/api/dimension/radar-data` | 登录 |  | `getRadarData` |
+| POST | `/api/family/member/kick` | 登录 |  | `kickFamilyMemberById` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/health/indicators` | 登录 |  | `getLatestIndicators` |
+| POST | `/api/wisdom/gut-cognition` | 登录 |  | `getGutCognitionIndicators` |
+
+### pages/wisdom-detail/member-wisdom-detail  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/energy/overview` | 登录 |  | `getEnergyOverview` |
+| POST | `/api/energy/sandbox` | 登录 |  | `getFamilyEnergySandbox` |
+
+### pages/wishes/create  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/wishes/create` | 登录 |  | `createWish` |
+
+### pages/wishes/detail  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/points/balance` | 登录 |  | `getPointsBalance` |
+| POST | `/api/wishes//:var` | 登录 | ✓ | `cancelWish` |
+| POST | `/api/wishes//:var` | 登录 | ✓ | `getWishById` |
+| POST | `/api/wishes//:var/confirm` | 登录 | ✓ | `confirmWishReceived` |
+| POST | `/api/wishes//:var/exchange` | 登录 | ✓ | `requestWishExchange` |
+
+### pages/wishes/index  (7 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/home/app/enter` | 登录 |  | `reportAppEnter` |
+| POST | `/api/points/balance` | 登录 |  | `getPointsBalance` |
+| POST | `/api/wishes//:var` | 登录 | ✓ | `cancelWish` |
+| POST | `/api/wishes//:var/confirm` | 登录 | ✓ | `confirmWishReceived` |
+| POST | `/api/wishes//:var/exchange` | 登录 | ✓ | `requestWishExchange` |
+| POST | `/api/wishes/create` | 登录 |  | `createWish` |
+| POST | `/api/wishes/list` | 登录 |  | `getWishes` |
+
+### store/health-alert  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/alert/dismiss` | 登录 |  | `dismissAlert` |
+| POST | `/api/health/alert/list` | 登录 |  | `getActiveAlerts` |
+
+### store/health-score  (2 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/health/score/info` | 登录 |  | `getHealthScoreInfo` |
+| POST | `/api/health/timeline/list` | 登录 |  | `getHealthTimeline` |
+
+### store/index  (4 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/family/user/switch-back-verify` | 登录 |  | `switchBackVerify` |
+| POST | `/api/user/switch-back-to-parent` | 登录 |  | `switchBackToParent` |
+| POST | `/api/user/switch-role` | 登录 |  | `switchRole` |
+| POST | `/api/user/switch-to-child` | 登录 |  | `switchToChild` |
+
+### store/modules/tianpan  (5 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/tianpan/annual-energy` | 公开 |  | `tianpanAnnualEnergy` |
+| POST | `/api/tianpan/daily-fortune` | 公开 |  | `tianpanDailyFortune` |
+| POST | `/api/tianpan/dashboard` | 公开 |  | `tianpanDashboard` |
+| POST | `/api/tianpan/member/'/:var, 'POST', data)
+}
+
+export const tianpanCompatibility = (data) => {
+  return request('/api/tianpan/compatibility` | 公开 | ✓ | `tianpanMemberDetail` |
+| POST | `/api/tianpan/related-items` | 公开 |  | `tianpanRelatedItems` |
+
+### utils/api  (38 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/admin/activity/list` | 公开 |  | `adminListMyActivities` |
+| POST | `/api/admin/task-templates` | 登录 |  | `getNodeTemplateList` |
+| POST | `/api/admin/task/reminder-config/get?userId='/:var, 'POST', {})
+}
+
+export function saveReminderConfigByUser(data) {
+  return request('/api/admin/task/reminder-config/save` | 登录 | ✓ | `getReminderConfigByUser` |
+| POST | `/api/auth/silent-login` | 公开 |  | `silentLogin` |
+| POST | `/api/badges/child/list` | 登录 |  | `getChildBadges` |
+| POST | `/api/butler/available-list` | 公开 |  | `getAvailableButlers` |
+| POST | `/api/butler/my-butler` | 公开 |  | `getMyButler` |
+| POST | `/api/butler/select` | 公开 |  | `selectButler` |
+| POST | `/api/dan-assessment/order/pay` | 登录 |  | `payAssessmentOrder` |
+| POST | `/api/family/invite/approve-request` | 公开 |  | `approveJoinRequest` |
+| POST | `/api/family/invite/my-request` | 公开 |  | `getMyJoinRequest` |
+| POST | `/api/family/invite/pending-requests` | 公开 |  | `getPendingJoinRequests` |
+| POST | `/api/family/invite/reject-request` | 公开 |  | `rejectJoinRequest` |
+| POST | `/api/family/member/list` | 登录 |  | `getFamilyMemberList` |
+| POST | `/api/family/user/create-family` | 登录 |  | `createFamily` |
+| POST | `/api/internal/virtual-pay/error-report` | 登录 |  | `reportVirtualPayError` |
+| POST | `/api/invite/bind` | 登录 |  | `bindReferral` |
+| POST | `/api/invite/code` | 登录 |  | `getReferralCode` |
+| POST | `/api/orchestration/execution/detail` | 登录 |  | `getOrchestrationExecutionDetail` |
+| POST | `/api/orchestration/execution/start` | 登录 |  | `startOrchestrationExecution` |
+| POST | `/api/orchestration/execution/terminate` | 登录 |  | `terminateOrchestrationExecution` |
+| POST | `/api/orchestration/flow/archive` | 登录 |  | `archiveOrchestrationFlow` |
+| POST | `/api/orchestration/flow/delete` | 登录 |  | `deleteOrchestrationFlow` |
+| POST | `/api/orchestration/flow/detail` | 登录 |  | `getOrchestrationFlowDetail` |
+| POST | `/api/orchestration/flow/list` | 登录 |  | `getOrchestrationFlowList` |
+| POST | `/api/orchestration/flow/publish` | 登录 |  | `publishOrchestrationFlow` |
+| POST | `/api/orchestration/flow/save` | 登录 |  | `saveOrchestrationFlow` |
+| POST | `/api/product/list` | 公开 |  | `productList` |
+| POST | `/api/profile/history` | 登录 |  | `getProfileTrend` |
+| POST | `/api/profile/my` | 登录 |  | `getMyProfile` |
+| POST | `/api/purchase/challenge/progress` | 登录 |  | `getChallengeProgress` |
+| POST | `/api/recommend/list` | 登录 |  | `getRecommendList` |
+| POST | `/api/stats/child/overview` | 登录 |  | `getChildOverview` |
+| POST | `/api/tasks/history` | 登录 |  | `getTaskHistory` |
+| POST | `/api/user/portrait/edit` | 登录 |  | `editPortrait` |
+| POST | `/api/user/portrait/generate` | 登录 |  | `generatePortrait` |
+| POST | `/api/user/portrait/get` | 登录 |  | `getPortrait` |
+| POST | `/api/user/portrait/regenerate` | 登录 |  | `regeneratePortrait` |
+
+### utils/profile-backfill  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/user/profile/backfill` | 登录 |  | `backfillProfile` |
+
+### utils/sso  (1 个接口)
+
+| 方法 | 路径 | 鉴权 | 参数 | 来源函数 |
+|------|------|:----:|:----:|----------|
+| POST | `/api/auth/sso-ticket` | 公开 |  | `createSsoTicket` |

+ 1001 - 0
interface_test_report.tsv

@@ -0,0 +1,1001 @@
+page	fn	method	path	http	biz	cat
+App	autoLogin	POST	/api/auth/auto-login	200	410	BIZ_FAIL
+App	ssoLogin	POST	/api/auth/sso-login	200	500	BIZ_FAIL
+App	verifyToken	POST	/api/auth/verify	200	200	BIZ_OK
+App	checkUserFamily	POST	/api/family/invite/check-family	200	200	BIZ_OK
+__tests__/api/api.indicator.test	getIndicatorChangeRanking	POST	/api/indicator/change-ranking	200	500	BIZ_FAIL
+__tests__/api/api.indicator.test	getIndicatorCorrelationList	POST	/api/indicator/correlation/list	200	500	BIZ_FAIL
+__tests__/api/api.indicator.test	getIndicatorQuickLookup	POST	/api/indicator/quick-lookup	200	500	BIZ_FAIL
+__tests__/api/api.indicator.test	getIndicatorTrend	POST	/api/indicator/trend	200	500	BIZ_FAIL
+__tests__/api/api.test	aiGetConversations	POST	/api/ai/chat/conversations	200	200	BIZ_OK
+__tests__/api/api.test	aiSendMessage	POST	/api/ai/chat/send	200	500	BIZ_FAIL
+__tests__/api/api.test	getArticleCategories	POST	/api/articles/categories	200	200	BIZ_OK
+__tests__/api/api.test	getDailyTip	POST	/api/articles/daily-tip	200	200	BIZ_OK
+__tests__/api/api.test	getArticleDetail	POST	/api/articles/detail	200	403	BIZ_FAIL
+__tests__/api/api.test	getArticleList	POST	/api/articles/list	200	200	BIZ_OK
+__tests__/api/api.test	getRelatedArticles	POST	/api/articles/related	200	500	BIZ_FAIL
+__tests__/api/api.test	autoLogin	POST	/api/auth/auto-login	200	410	BIZ_FAIL
+__tests__/api/api.test	checkPhone	POST	/api/auth/check-phone	200	500	BIZ_FAIL
+__tests__/api/api.test	directRegister	POST	/api/auth/direct-register	200	500	BIZ_FAIL
+__tests__/api/api.test	phoneLogin	POST	/api/auth/phone-login	200	500	BIZ_FAIL
+__tests__/api/api.test	sendCode	POST	/api/auth/send-code	200	500	BIZ_FAIL
+__tests__/api/api.test	setPassword	POST	/api/auth/set-password	200	400	BIZ_FAIL
+__tests__/api/api.test	silentLogin	POST	/api/auth/silent-login	200	500	BIZ_FAIL
+__tests__/api/api.test	verifyToken	POST	/api/auth/verify	200	200	BIZ_OK
+__tests__/api/api.test	verifyPassword	POST	/api/auth/verify-password	200	200	BIZ_OK
+__tests__/api/api.test	wechatLogin	POST	/api/auth/wechat-login	200	200	BIZ_OK
+__tests__/api/api.test	wechatPhoneLogin	POST	/api/auth/wechat-phone-login	200	500	BIZ_FAIL
+__tests__/api/api.test	getChildBadges	POST	/api/badges/child/list	200	200	BIZ_OK
+__tests__/api/api.test	toggleBadgeFavorite	POST	/api/badges/favorite	200	200	BIZ_OK
+__tests__/api/api.test	getActiveBadges	POST	/api/badges/list	200	200	BIZ_OK
+__tests__/api/api.test	getCommissionSummary	POST	/api/commission/summary	-1	None	CONN_ERR
+__tests__/api/api.test	createContact	POST	/api/contact/create	200	400	BIZ_FAIL
+__tests__/api/api.test	deleteContact	POST	/api/contact/delete	200	500	BIZ_FAIL
+__tests__/api/api.test	importPhoneContact	POST	/api/contact/import-phone	200	400	BIZ_FAIL
+__tests__/api/api.test	getContactList	POST	/api/contact/list	200	200	BIZ_OK
+__tests__/api/api.test	getChildAssessmentResults	POST	/api/dan-assessment/child-results	200	200	BIZ_OK
+__tests__/api/api.test	getMyAssessmentResults	POST	/api/dan-assessment/my-results	200	200	BIZ_OK
+__tests__/api/api.test	payAssessmentOrder	POST	/api/dan-assessment/order/pay	200	500	BIZ_FAIL
+__tests__/api/api.test	recordAssessmentResult	POST	/api/dan-assessment/result/record	200	400	BIZ_FAIL
+__tests__/api/api.test	getEnergyLogs	POST	/api/energy/logs	200	200	BIZ_OK
+__tests__/api/api.test	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+__tests__/api/api.test	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+__tests__/api/api.test	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+__tests__/api/api.test	createChild	POST	/api/family/user/children	200	400	BIZ_FAIL
+__tests__/api/api.test	updateChild	POST	/api/family/user/children/update	200	200	BIZ_OK
+__tests__/api/api.test	createFamily	POST	/api/family/user/create-family	200	200	BIZ_OK
+__tests__/api/api.test	kickFamilyMember	POST	/api/family/user/kick	200	500	BIZ_FAIL
+__tests__/api/api.test	updateMemberVisibility	POST	/api/family/user/members/update-visibility	200	500	BIZ_FAIL
+__tests__/api/api.test	getGameHistory	POST	/api/game/history	200	200	BIZ_OK
+__tests__/api/api.test	getGameLeaderboard	POST	/api/game/leaderboard	200	200	BIZ_OK
+__tests__/api/api.test	createGrowthRecord	POST	/api/growth/record/create	200	500	BIZ_FAIL
+__tests__/api/api.test	createGrowthRecord	POST	/api/growth/record/create-with-order	200	500	BIZ_FAIL
+__tests__/api/api.test	getGrowthRecordList	POST	/api/growth/record/list	200	500	BIZ_FAIL
+__tests__/api/api.test	generateBindInvite	POST	/api/guide/bind/invite	200	200	BIZ_OK
+__tests__/api/api.test	getBoundFamilies	POST	/api/guide/families	404	None	NOT_FOUND
+__tests__/api/api.test	getGuideMessages	POST	/api/guide/messages/list	200	500	BIZ_FAIL
+__tests__/api/api.test	getGuideOrders	POST	/api/guide/orders/list	200	403	BIZ_FAIL
+__tests__/api/api.test	getGuidePackages	POST	/api/guide/packages/my	404	None	NOT_FOUND
+__tests__/api/api.test	registerGuide	POST	/api/guide/register	200	500	BIZ_FAIL
+__tests__/api/api.test	getTeamMembers	POST	/api/guide/team/members	200	200	BIZ_OK
+__tests__/api/api.test	healthCheckinList	POST	/api/health/checkin/list	200	200	BIZ_OK
+__tests__/api/api.test	getHealthIndicatorList	POST	/api/health/indicator/list	200	500	BIZ_FAIL
+__tests__/api/api.test	createHealthReport	POST	/api/health/report/create	200	4001	BIZ_FAIL
+__tests__/api/api.test	getReportDetail	POST	/api/health/report/detail	200	500	BIZ_FAIL
+__tests__/api/api.test	getLatestHealthReport	POST	/api/health/report/latest	200	200	BIZ_OK
+__tests__/api/api.test	getReportList	POST	/api/health/report/list	200	200	BIZ_OK
+__tests__/api/api.test	createReportSurvey	POST	/api/health/survey/create	200	500	BIZ_FAIL
+__tests__/api/api.test	submitReportSurvey	POST	/api/health/survey/submit	200	500	BIZ_FAIL
+__tests__/api/api.test	generateInviteCard	POST	/api/invite-card/generate	200	500	BIZ_FAIL
+__tests__/api/api.test	verifyInviteCard	POST	/api/invite-card/verify	200	500	BIZ_FAIL
+__tests__/api/api.test	bindReferral	POST	/api/invite/bind	200	500	BIZ_FAIL
+__tests__/api/api.test	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+__tests__/api/api.test	getMembershipLevels	POST	/api/membership/levels	200	200	BIZ_OK
+__tests__/api/api.test	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+__tests__/api/api.test	createOrder	POST	/api/membership/orders	200	500	BIZ_FAIL
+__tests__/api/api.test	getMiniGameByCode	POST	/api/mini-game/1	200	500	BIZ_FAIL
+__tests__/api/api.test	completeMiniGame	POST	/api/mini-game/complete	200	400	BIZ_FAIL
+__tests__/api/api.test	getMiniGameList	POST	/api/mini-game/list	200	200	BIZ_OK
+__tests__/api/api.test	publishPackage	POST	/api/packages/1/publish	200	200	BIZ_OK
+__tests__/api/api.test	getPointsBalance	POST	/api/points/balance	200	200	BIZ_OK
+__tests__/api/api.test	getPointsLogs	POST	/api/points/logs	200	200	BIZ_OK
+__tests__/api/api.test	productCreate	POST	/api/product/create	200	500	BIZ_FAIL
+__tests__/api/api.test	productDetail	POST	/api/product/detail	200	500	BIZ_FAIL
+__tests__/api/api.test	productList	POST	/api/product/list	200	200	BIZ_OK
+__tests__/api/api.test	productOrderCreate	POST	/api/product/order/create	200	500	BIZ_FAIL
+__tests__/api/api.test	createReward	POST	/api/rewards	404	None	NOT_FOUND
+__tests__/api/api.test	exchangeReward	POST	/api/rewards/1/exchange	200	200	BIZ_OK
+__tests__/api/api.test	getWishlist	POST	/api/rewards/wishlist	200	200	BIZ_OK
+__tests__/api/api.test	getChildCompletionStats	POST	/api/stats/child-completion	200	200	BIZ_OK
+__tests__/api/api.test	getChildOverview	POST	/api/stats/child/overview	200	200	BIZ_OK
+__tests__/api/api.test	getSurveyStatus	POST	/api/survey/status	200	200	BIZ_OK
+__tests__/api/api.test	deleteTask	POST	/api/tasks/1	200	200	BIZ_OK
+__tests__/api/api.test	completeTask	POST	/api/tasks/1/complete	200	500	BIZ_FAIL
+__tests__/api/api.test	approveTask	POST	/api/tasks/1/review	200	200	BIZ_OK
+__tests__/api/api.test	rejectTask	POST	/api/tasks/1/review	200	200	BIZ_OK
+__tests__/api/api.test	reviewTask	POST	/api/tasks/1/review	200	200	BIZ_OK
+__tests__/api/api.test	batchCompleteTasks	POST	/api/tasks/batch-complete	200	500	BIZ_FAIL
+__tests__/api/api.test	createTask	POST	/api/tasks/create	200	400	BIZ_FAIL
+__tests__/api/api.test	getTaskHistory	POST	/api/tasks/history	200	200	BIZ_OK
+__tests__/api/api.test	getPendingReviewTasks	POST	/api/tasks/pending-review	200	200	BIZ_OK
+__tests__/api/api.test	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+__tests__/api/api.test	getTodayTasksByCategory	POST	/api/tasks/today	200	200	BIZ_OK
+__tests__/api/api.test	getTodayParentTasks	POST	/api/tasks/today-parent	200	200	BIZ_OK
+__tests__/api/api.test	getUserInfo	POST	/api/user/info	200	200	BIZ_OK
+__tests__/api/api.test	joinFamily	POST	/api/user/join-family	404	None	NOT_FOUND
+__tests__/api/api.test	switchBackToParent	POST	/api/user/switch-back-to-parent	404	None	NOT_FOUND
+__tests__/api/api.test	switchMode	POST	/api/user/switch-mode	404	None	NOT_FOUND
+__tests__/api/api.test	switchToChild	POST	/api/user/switch-to-child	404	None	NOT_FOUND
+__tests__/api/api.test	updateUserInfo	POST	/api/user/update	200	200	BIZ_OK
+__tests__/api/api.test	vendorApply	POST	/api/vendor/apply	200	200	BIZ_OK
+__tests__/api/api.test	vendorInfo	POST	/api/vendor/info	200	500	BIZ_FAIL
+__tests__/api/api.test	vendorStatus	POST	/api/vendor/status	200	200	BIZ_OK
+__tests__/api/api.test	getCheckinList	POST	/api/wealth/checkin/list	200	200	BIZ_OK
+__tests__/api/api.test	getInsuranceList	POST	/api/wealth/insurance/list	200	200	BIZ_OK
+__tests__/api/api.test	approveWishExchange	POST	/api/wishes/1/approve-exchange	200	500	BIZ_FAIL
+__tests__/api/api.test	setWishPrice	POST	/api/wishes/1/price	404	None	NOT_FOUND
+__tests__/api/api.test	createWish	POST	/api/wishes/create	200	500	BIZ_FAIL
+__tests__/api/api.test	getWishes	POST	/api/wishes/list	200	500	BIZ_FAIL
+__tests__/api/api.test	getPendingWishes	POST	/api/wishes/pending	200	200	BIZ_OK
+__tests__/api/api.test	applyWithdrawal	POST	/api/withdrawal/apply	200	500	BIZ_FAIL
+__tests__/store/store.test	switchRole	POST	/api/user/switch-role	404	None	NOT_FOUND
+components/DimensionActivities	getActivityList	POST	/api/activity/list	200	200	BIZ_OK
+components/DimensionActivities	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+components/DimensionProducts	getDimensionProducts	POST	/api/recommend/dimension-products	200	200	BIZ_OK
+components/DimensionTasks	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+components/MemberSelector	kickFamilyMemberById	POST	/api/family/member/kick	200	500	BIZ_FAIL
+components/MemberSelector	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+components/MemberSelector	getPairwiseRelationships	POST	/api/family/relationship/pairwise	200	500	BIZ_FAIL
+components/MemberSelector	createFamily	POST	/api/family/user/create-family	200	200	BIZ_OK
+components/OnboardingGuide	getGuideConfig	POST	/api/guide-config/current	200	500	BIZ_FAIL
+components/OnboardingProgressBar	getOnboardingProgress	POST	/api/onboarding/progress	200	200	BIZ_OK
+components/RelatedContent	getContentRelated	POST	/api/content/related-items	200	500	BIZ_FAIL
+components/daily-task-card	getDailyTaskOverview	POST	/api/daily-task/overview	200	200	BIZ_OK
+components/login-sheet	wechatPhoneLogin	POST	/api/auth/wechat-phone-login	200	500	BIZ_FAIL
+components/share-mixin	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+pages/achievement/index	getChildBadges	POST	/api/badges/child/list	200	200	BIZ_OK
+pages/action-detail/components/PearlDiagram	addPearlInteraction	POST	/api/pearl/interaction/add	200	500	BIZ_FAIL
+pages/action-detail/components/PearlDiagram	updatePearlPriority	POST	/api/pearl/item/update-priority	200	500	BIZ_FAIL
+pages/action-detail/contact-detail	deleteContact	POST	/api/contact/delete	200	500	BIZ_FAIL
+pages/action-detail/contact-detail	getContactDetail	POST	/api/contact/detail	200	500	BIZ_FAIL
+pages/action-detail/contact-detail	recordContactInteraction	POST	/api/contact/interaction	200	500	BIZ_FAIL
+pages/action-detail/contact-detail	updateContact	POST	/api/contact/update	200	500	BIZ_FAIL
+pages/action-detail/index	getAbilityMap	POST	/api/ability/map	200	200	BIZ_OK
+pages/action-detail/index	getVisibleSections	POST	/api/content-sections/visible	200	500	BIZ_FAIL
+pages/action-detail/index	getRadarData	POST	/api/dimension/radar-data	200	200	BIZ_OK
+pages/action-detail/index	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/action-detail/index	getEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/action-detail/index	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/action-detail/index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/action-detail/index	getOctopusAnalysisSummary	POST	/api/octopus/analysis/summary	200	200	BIZ_OK
+pages/action-detail/index	getOctopusEffectKeyPersons	POST	/api/octopus/effect/key-persons	200	500	BIZ_FAIL
+pages/action-detail/index	getOctopusEffects	POST	/api/octopus/effect/list	200	200	BIZ_OK
+pages/action-detail/index	deletePearlResource	POST	/api/pearl/item/delete	200	500	BIZ_FAIL
+pages/action-detail/index	getPearlReminders	POST	/api/pearl/reminder/list	200	200	BIZ_OK
+pages/action-detail/index	getPearlResources	POST	/api/pearl/resources	200	200	BIZ_OK
+pages/action-detail/interaction-log	addInteraction	POST	/api/family/interaction/add	200	500	BIZ_FAIL
+pages/action-detail/interaction-log	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/action-detail/interaction-log	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/action-detail/member-action-detail	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/action-detail/member-action-detail	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/action-detail/octopus-add-effect	addOctopusEffect	POST	/api/octopus/effect/add	200	200	BIZ_OK
+pages/action-detail/octopus-add-effect	bindOctopusKeyPersonSystemUser	POST	/api/octopus/key-person/bind-system-user	200	500	BIZ_FAIL
+pages/action-detail/octopus-add-effect	getOctopusKeyPersons	POST	/api/octopus/key-person/list	200	200	BIZ_OK
+pages/action-detail/octopus-add-effect	matchOctopusKeyPersonByPhone	POST	/api/octopus/key-person/match-by-phone	200	500	BIZ_FAIL
+pages/action-detail/octopus-add-key-person	addOctopusKeyPerson	POST	/api/octopus/key-person/add	200	500	BIZ_FAIL
+pages/action-detail/octopus-add-key-person	getOctopusKeyPersons	POST	/api/octopus/key-person/list	200	200	BIZ_OK
+pages/action-detail/octopus-effects-list	deleteOctopusEffect	POST	/api/octopus/effect/delete	200	500	BIZ_FAIL
+pages/action-detail/octopus-effects-list	getOctopusEffects	POST	/api/octopus/effect/list	200	200	BIZ_OK
+pages/action-detail/pearl-add-resource	getContactList	POST	/api/contact/list	200	200	BIZ_OK
+pages/action-detail/pearl-add-resource	getConnectionTypes	POST	/api/pearl/connection-types	200	200	BIZ_OK
+pages/action-detail/pearl-add-resource	addPearlResource	POST	/api/pearl/item/add	200	500	BIZ_FAIL
+pages/action-detail/relationship-questionnaire	generateQuestionnaire	POST	/api/family/questionnaire/generate	200	500	BIZ_FAIL
+pages/action-detail/relationship-questionnaire	submitQuestionnaire	POST	/api/family/questionnaire/submit	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	cancelActivityRegistration	POST	/api/activity/cancel-registration	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	activityCheckin	POST	/api/activity/checkin	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	getActivityDetail	POST	/api/activity/detail	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	getMyActivityFeedback	POST	/api/activity/feedback/my	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	submitActivityFeedback	POST	/api/activity/feedback/submit	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	createActivityOrder	POST	/api/activity/order/create	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	getActivityRegistrationRoster	POST	/api/activity/registration-roster	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/activity/activity-detail/activity-detail	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/activity/activity-detail/activity-detail	getPosterTemplates	POST	/api/poster-template/list	200	200	BIZ_OK
+pages/activity/activity-detail/activity-detail	getShareQrCode	POST	/api/share/qrcode	200	500	BIZ_FAIL
+pages/activity/activity-detail/activity-detail	backfillProfile	POST	/api/user/profile/backfill	200	500	BIZ_FAIL
+pages/activity/create	adminCreateActivity	POST	/api/activity/create	200	400	BIZ_FAIL
+pages/activity/create	getActivityDetail	POST	/api/activity/detail	200	500	BIZ_FAIL
+pages/activity/create	adminPublishActivity	POST	/api/activity/publish	200	500	BIZ_FAIL
+pages/activity/create	submitActivityForReview	POST	/api/activity/submit-review	200	500	BIZ_FAIL
+pages/activity/create	adminUpdateActivity	POST	/api/activity/update	200	500	BIZ_FAIL
+pages/activity/create	getPosterTemplates	POST	/api/poster-template/list	200	200	BIZ_OK
+pages/activity/index	cancelActivityRegistration	POST	/api/activity/cancel-registration	200	500	BIZ_FAIL
+pages/activity/index	activityCheckin	POST	/api/activity/checkin	200	500	BIZ_FAIL
+pages/activity/index	adminEndActivity	POST	/api/activity/end	200	500	BIZ_FAIL
+pages/activity/index	getActivityList	POST	/api/activity/list	200	200	BIZ_OK
+pages/activity/index	getMyActivityRegistrations	POST	/api/activity/my-registrations	200	200	BIZ_OK
+pages/activity/index	adminPublishActivity	POST	/api/activity/publish	200	500	BIZ_FAIL
+pages/activity/index	submitActivityForReview	POST	/api/activity/submit-review	200	500	BIZ_FAIL
+pages/activity/index	adminListMyActivities	POST	/api/admin/activity/list	200	200	BIZ_OK
+pages/activity/index	adminWithdrawActivity	POST	/api/admin/activity/withdraw	200	500	BIZ_FAIL
+pages/activity/index	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/activity/index	vendorStatus	POST	/api/vendor/status	200	200	BIZ_OK
+pages/activity/order-pay/order-pay	handleActivityOrderSuccess	POST	/api/activity/order/handlePaymentSuccess	200	500	BIZ_FAIL
+pages/activity/order-pay/order-pay	payActivityOrder	POST	/api/activity/order/pay	200	500	BIZ_FAIL
+pages/ai/chat	aiSendHealthButlerMessage	POST	/api/ai/butler/send	200	500	BIZ_FAIL
+pages/ai/chat	aiGetConversations	POST	/api/ai/chat/conversations	200	200	BIZ_OK
+pages/ai/chat	aiGetMessages	POST	/api/ai/chat/messages	200	500	BIZ_FAIL
+pages/ai/chat	aiSendHealthCoachMessage	POST	/api/ai/health-coach/send	200	500	BIZ_FAIL
+pages/ai/chat	aiSendNutritionMessage	POST	/api/ai/nutrition/send	200	500	BIZ_FAIL
+pages/ai/chat	sttTranscribe	POST	/api/ai/transcribe	200	400	BIZ_FAIL
+pages/ai/chat	getAllQuotaStatus	POST	/api/basic-quota/status/all	200	200	BIZ_OK
+pages/ai/chat	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/ai/chat	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/article-center/article-detail	getArticleAudio	POST	/api/articles/audio	200	500	BIZ_FAIL
+pages/article-center/article-detail	completeArticleRead	POST	/api/articles/complete-read	200	200	BIZ_OK
+pages/article-center/article-detail	getArticleDetail	POST	/api/articles/detail	200	403	BIZ_FAIL
+pages/article-center/article-detail	generateQuiz	POST	/api/articles/quiz/generate	200	500	BIZ_FAIL
+pages/article-center/article-detail	submitQuiz	POST	/api/articles/quiz/submit	200	500	BIZ_FAIL
+pages/article-center/article-detail	reportReadingTime	POST	/api/articles/report-reading-time	200	500	BIZ_FAIL
+pages/article-center/article-detail	getShareQrCode	POST	/api/share/qrcode	200	500	BIZ_FAIL
+pages/article-center/article-detail	completeTask	POST	/api/tasks/1/complete	200	500	BIZ_FAIL
+pages/article-center/article-edit	publishArticle	POST	/api/articles/publish	200	500	BIZ_FAIL
+pages/article-center/index	getFeaturedArticles	POST	/api/articles/featured	200	200	BIZ_OK
+pages/article-center/index	getArticleList	POST	/api/articles/list	200	200	BIZ_OK
+pages/article-center/my-posts	getMyPosts	POST	/api/articles/my-posts	200	200	BIZ_OK
+pages/assessment-plan/detail	getMyAssessmentPlans	POST	/api/dan-assessment/result/plans/list	200	200	BIZ_OK
+pages/assessment-plan/list	getMyAssessmentPlans	POST	/api/dan-assessment/result/plans/list	200	200	BIZ_OK
+pages/assessment/apply	createAssessmentAppointmentWithQuota	POST	/api/assessment/appointment/create	200	500	BIZ_FAIL
+pages/assessment/apply	getAssessmentQuotas	POST	/api/assessment/quota/my-list	200	200	BIZ_OK
+pages/assessment/apply	validateInviteCode	POST	/api/guide/invite-code/validate	200	400	BIZ_FAIL
+pages/assessment/apply	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/assessment/apply	getAvailableGuides	POST	/api/package/available-guides	200	400	BIZ_FAIL
+pages/assessment/purchase	createAssessmentOrder	POST	/api/dan-assessment/order/create	200	400	BIZ_FAIL
+pages/assessment/purchase	getAssessmentOrderDetail	POST	/api/dan-assessment/order/detail	200	400	BIZ_FAIL
+pages/assessment/purchase	validateInviteCode	POST	/api/guide/invite-code/validate	200	400	BIZ_FAIL
+pages/assessment/purchase	getAvailableGuides	POST	/api/package/available-guides	200	400	BIZ_FAIL
+pages/assessment/quota	getAssessmentQuotas	POST	/api/assessment/quota/my-list	200	200	BIZ_OK
+pages/assessment/results	getChildAssessmentResults	POST	/api/dan-assessment/child-results	200	200	BIZ_OK
+pages/assessment/results	getMyAssessmentResults	POST	/api/dan-assessment/my-results	200	200	BIZ_OK
+pages/assessment/upload-report	uploadAssessmentReport	POST	/api/dan-assessment/result/upload	200	400	BIZ_FAIL
+pages/body-detail/dimension-detail	getDimensionHistory	POST	/api/dimension/history	200	500	BIZ_FAIL
+pages/body-detail/dimension-detail	getDimensionOverview	POST	/api/dimension/overview	200	200	BIZ_OK
+pages/body-detail/dimension-questionnaire	submitAnswers	POST	/api/articles/submit-answers	200	500	BIZ_FAIL
+pages/body-detail/dimension-questionnaire	submitDimensionQuestionnaire	POST	/api/dimension/questionnaire	200	500	BIZ_FAIL
+pages/body-detail/health-dimensions	getDimensionOverview	POST	/api/dimension/overview	200	200	BIZ_OK
+pages/body-detail/health-dimensions	uploadDimensionScore	POST	/api/dimension/upload	200	500	BIZ_FAIL
+pages/body-detail/health-report	getDeficiencyAnalysis	POST	/api/health/nutrition/deficiency	200	500	BIZ_FAIL
+pages/body-detail/index	getVisibleSections	POST	/api/content-sections/visible	200	500	BIZ_FAIL
+pages/body-detail/index	getDimensionOverview	POST	/api/dimension/overview	200	200	BIZ_OK
+pages/body-detail/index	getRadarData	POST	/api/dimension/radar-data	200	200	BIZ_OK
+pages/body-detail/index	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/body-detail/index	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/body-detail/index	kickFamilyMemberById	POST	/api/family/member/kick	200	500	BIZ_FAIL
+pages/body-detail/index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/body-detail/index	getGutFloraIndicators	POST	/api/health/gut-flora	200	200	BIZ_OK
+pages/body-detail/index	getLatestIndicators	POST	/api/health/indicators	200	500	BIZ_FAIL
+pages/body-detail/index	getBodyAbnormalIndicators	POST	/api/health/report/body-abnormal	200	200	BIZ_OK
+pages/body-detail/member-body-detail	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/body-detail/member-body-detail	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/butler/apply	butlerApply	POST	/api/butler/apply	200	200	BIZ_OK
+pages/butler/select	getAvailableButlers	POST	/api/butler/available-list	200	200	BIZ_OK
+pages/butler/select	getMyButler	POST	/api/butler/my-butler	200	200	BIZ_OK
+pages/butler/select	selectButler	POST	/api/butler/select	200	500	BIZ_FAIL
+pages/child/rewards	verifyPassword	POST	/api/auth/verify-password	200	200	BIZ_OK
+pages/child/rewards	getPointsBalance	POST	/api/points/balance	200	200	BIZ_OK
+pages/child/rewards	getWishlist	POST	/api/rewards/wishlist	200	200	BIZ_OK
+pages/child/rewards	switchBackToParent	POST	/api/user/switch-back-to-parent	404	None	NOT_FOUND
+pages/child/tasks	verifyPassword	POST	/api/auth/verify-password	200	200	BIZ_OK
+pages/child/tasks	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+pages/child/tasks	switchBackToParent	POST	/api/user/switch-back-to-parent	404	None	NOT_FOUND
+pages/cognitive-hall	getCognitiveChildScores	POST	/api/cognitive/child	200	200	BIZ_OK
+pages/cognitive-hall	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/cognitive-test/language-test	submitCognitiveSelfTest	POST	/api/cognitive/self-test	200	500	BIZ_FAIL
+pages/cognitive-test/logic-test	submitCognitiveSelfTest	POST	/api/cognitive/self-test	200	500	BIZ_FAIL
+pages/cognitive-test/memory-test	submitCognitiveSelfTest	POST	/api/cognitive/self-test	200	500	BIZ_FAIL
+pages/cognitive-test/perception-test	submitCognitiveSelfTest	POST	/api/cognitive/self-test	200	500	BIZ_FAIL
+pages/cognitive-test/spatial-test	submitCognitiveSelfTest	POST	/api/cognitive/self-test	200	500	BIZ_FAIL
+pages/cognitive-test/speed-test	submitCognitiveSelfTest	POST	/api/cognitive/self-test	200	500	BIZ_FAIL
+pages/dan-assessment/comparison	compareDanReports	POST	/api/dan-report/compare	200	500	BIZ_FAIL
+pages/dan-assessment/comparison	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/diet/index	addDietIngredient	POST	/api/diet/ingredients/add	200	500	BIZ_FAIL
+pages/diet/index	refreshDietIngredients	POST	/api/diet/ingredients/recommend	200	500	BIZ_FAIL
+pages/diet/index	removeDietIngredient	POST	/api/diet/ingredients/remove	200	500	BIZ_FAIL
+pages/diet/index	searchDietFoods	POST	/api/diet/ingredients/search	200	200	BIZ_OK
+pages/diet/index	getDietIngredients	POST	/api/diet/ingredients/suggest	200	500	BIZ_FAIL
+pages/diet/index	getMealConfig	POST	/api/diet/meals/config	200	200	BIZ_OK
+pages/diet/index	generateDietRecommendation	POST	/api/diet/recommendation/generate	200	500	BIZ_FAIL
+pages/diet/index	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/diet/meal-config	getMealConfig	POST	/api/diet/meals/config	200	200	BIZ_OK
+pages/diet/meal-config	saveMealConfig	POST	/api/diet/meals/config/save	200	400	BIZ_FAIL
+pages/diet/preferences	getDietPreferences	POST	/api/diet/preferences/current-member	200	200	BIZ_OK
+pages/diet/preferences	saveDietPreferences	POST	/api/diet/preferences/save	200	200	BIZ_OK
+pages/diet/recommendation	completeDietRecommendation	POST	/api/diet/recommendation/complete	200	200	BIZ_OK
+pages/diet/recommendation	generateDietRecommendation	POST	/api/diet/recommendation/generate	200	500	BIZ_FAIL
+pages/diet/recommendation	regenerateDietRecommendation	POST	/api/diet/recommendation/regenerate	200	200	BIZ_OK
+pages/diet/recommendation	getDietRecommendation	POST	/api/diet/recommendation/today	200	500	BIZ_FAIL
+pages/diet/record-detail	getDietDailyRecords	POST	/api/diet/record/daily	200	200	BIZ_OK
+pages/diet/records	getCautionFamilyMembers	POST	/api/food/recommendation/members	200	200	BIZ_OK
+pages/diet/records	getMealAlerts	POST	/api/health/meal/alerts	200	200	BIZ_OK
+pages/diet/records	getMealDaily	POST	/api/health/meal/daily	200	200	BIZ_OK
+pages/diet/records	getMealWeekly	POST	/api/health/meal/weekly	200	200	BIZ_OK
+pages/discover-detail/product-detail/product-detail	cartAdd	POST	/api/cart/add	200	500	BIZ_FAIL
+pages/discover-detail/product-detail/product-detail	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/discover-detail/product-detail/product-detail	productDetail	POST	/api/product/detail	200	500	BIZ_FAIL
+pages/discover-detail/product-detail/product-detail	productOrderPay	POST	/api/product/order/pay	200	500	BIZ_FAIL
+pages/discover-detail/product-detail/product-detail	productSpecMap	POST	/api/product/spec/map	200	200	BIZ_OK
+pages/discover-detail/product-detail/product-detail	getShareQrCode	POST	/api/share/qrcode	200	500	BIZ_FAIL
+pages/discover-detail/product-detail/product-detail	getSpecialPriceInfo	POST	/api/special-price/info	200	200	BIZ_OK
+pages/discover/circle-feed	addCircleComment	POST	/api/circle/comment/add	200	500	BIZ_FAIL
+pages/discover/circle-feed	getCircleComments	POST	/api/circle/comment/list	200	500	BIZ_FAIL
+pages/discover/circle-feed	getCircleFeed	POST	/api/circle/feed	200	500	BIZ_FAIL
+pages/discover/circle-feed	getCircleMembers	POST	/api/circle/members	200	500	BIZ_FAIL
+pages/discover/circle-feed	createCirclePost	POST	/api/circle/post/create	200	500	BIZ_FAIL
+pages/discover/circle-feed	deleteCirclePost	POST	/api/circle/post/delete	200	500	BIZ_FAIL
+pages/discover/circle-feed	toggleCircleLike	POST	/api/circle/post/like	200	500	BIZ_FAIL
+pages/discover/circles	approveCircleMember	POST	/api/circle/approve	200	500	BIZ_FAIL
+pages/discover/circles	discoverCircles	POST	/api/circle/discover	200	200	BIZ_OK
+pages/discover/circles	joinGeneralCircle	POST	/api/circle/join	200	500	BIZ_FAIL
+pages/discover/circles	leaveGeneralCircle	POST	/api/circle/leave	200	500	BIZ_FAIL
+pages/discover/circles	getMyCircles	POST	/api/circle/my-circles	200	500	BIZ_FAIL
+pages/discover/circles	getPendingCircleMembers	POST	/api/circle/pending-members	200	500	BIZ_FAIL
+pages/discover/circles	updateCircle	POST	/api/circle/update	200	500	BIZ_FAIL
+pages/discover/circles	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/discover/create-circle	createGeneralCircle	POST	/api/circle/create	200	500	BIZ_FAIL
+pages/discover/index	getFeaturedArticles	POST	/api/articles/featured	200	200	BIZ_OK
+pages/discover/index	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/discover/index	productList	POST	/api/product/list	200	200	BIZ_OK
+pages/energy/detail	getEnergyLogs	POST	/api/energy/logs	200	200	BIZ_OK
+pages/energy/index	getEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/energy/index	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/energy/index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/family/add-member	checkPhone	POST	/api/auth/check-phone	200	500	BIZ_FAIL
+pages/family/add-member	recordConsent	POST	/api/consent/record	200	500	BIZ_FAIL
+pages/family/add-member	addFamilyMember	POST	/api/family/member/add	200	500	BIZ_FAIL
+pages/family/add-member	updateFamilyMember	POST	/api/family/member/update	200	500	BIZ_FAIL
+pages/family/manual-score-entry	submitManualScore	POST	/api/family/manual-score/submit	200	500	BIZ_FAIL
+pages/family/manual-score-entry	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/family/mbti-entry	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/family/mbti-profile	getMbtiProfile	POST	/api/family/mbti/profile	200	500	BIZ_FAIL
+pages/family/mbti-result	getMbtiLatest	POST	/api/family/mbti/latest	200	500	BIZ_FAIL
+pages/family/mbti-test	getMbtiQuestions	POST	/api/family/mbti/questions	200	500	BIZ_FAIL
+pages/family/mbti-test	submitMbti	POST	/api/family/mbti/submit	200	500	BIZ_FAIL
+pages/family/self-check	submitSelfCheck	POST	/api/family/self-check/submit	200	500	BIZ_FAIL
+pages/family/self-check-ai	submitSelfCheck	POST	/api/family/self-check/submit	200	500	BIZ_FAIL
+pages/family/self-check-entry	ignoreSelfCheck	POST	/api/family/self-check/ignore	200	200	BIZ_OK
+pages/family/self-check-entry	getSelfCheckStatus	POST	/api/family/self-check/status	200	200	BIZ_OK
+pages/family/self-check-entry	getSelfCheckTrendAnalysis	POST	/api/family/self-check/trend-analysis	200	200	BIZ_OK
+pages/family/self-check-result	generateSelfCheckPlan	POST	/api/family/self-check/generate-plan	200	500	BIZ_FAIL
+pages/family/self-check-result	getSelfCheckHistory	POST	/api/family/self-check/history	200	200	BIZ_OK
+pages/family/self-check-result	getSelfCheckLatest	POST	/api/family/self-check/latest	200	200	BIZ_OK
+pages/family/self-check-result	microActionComplete	POST	/api/micro-action/complete	200	500	BIZ_FAIL
+pages/family/self-check-result	microActionToday	POST	/api/micro-action/today	-1	None	CONN_ERR
+pages/games/1a2b	completeMiniGame	POST	/api/mini-game/complete	200	400	BIZ_FAIL
+pages/games/list	reportAppEnter	POST	/api/home/app/enter	-1	None	CONN_ERR
+pages/games/list	getMiniGameList	POST	/api/mini-game/list	-1	None	CONN_ERR
+pages/games/records	getGameHistory	POST	/api/game/history	200	200	BIZ_OK
+pages/games/schulte	completeMiniGame	POST	/api/mini-game/complete	200	400	BIZ_FAIL
+pages/games/stats	getGameBestScores	POST	/api/game/best	200	200	BIZ_OK
+pages/games/stats	getGameLeaderboard	POST	/api/game/leaderboard	200	200	BIZ_OK
+pages/games/stats	getGameStats	POST	/api/game/stats	200	200	BIZ_OK
+pages/games/sudoku	completeMiniGame	POST	/api/mini-game/complete	200	400	BIZ_FAIL
+pages/growth-main/index	getFoodCautionList	POST	/api/food/recommendation/caution	200	200	BIZ_OK
+pages/growth-main/index	getGrowthRecommendations	POST	/api/growth/recommendations	200	200	BIZ_OK
+pages/growth-main/index	healthCheckinList	POST	/api/health/checkin/list	200	200	BIZ_OK
+pages/growth-main/index	getExerciseRecords	POST	/api/health/exercise/list	200	200	BIZ_OK
+pages/growth-main/index	getHealthMealList	POST	/api/health/meal/list	200	200	BIZ_OK
+pages/growth-main/index	getSleepRecords	POST	/api/health/sleep/list	200	200	BIZ_OK
+pages/growth-main/index	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/growth-main/index	getEmotionCheckinList	POST	/api/mind/checkin/list	200	200	BIZ_OK
+pages/growth-main/index	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+pages/growth-main/index	getCheckinList	POST	/api/wealth/checkin/list	200	200	BIZ_OK
+pages/growth/caution-detail	getFoodCautionList	POST	/api/food/recommendation/caution	200	200	BIZ_OK
+pages/growth/caution-detail	getCautionFamilyMembers	POST	/api/food/recommendation/members	200	200	BIZ_OK
+pages/growth/caution-detail	getFoodCautionTrend	POST	/api/food/recommendation/trend	200	200	BIZ_OK
+pages/growth/caution-detail	getKnowledgeSection	POST	/api/health/knowledge/v3/section	200	200	BIZ_OK
+pages/growth/challenge-progress	getChallengeProgress	POST	/api/purchase/challenge/progress	200	200	BIZ_OK
+pages/growth/create	createGrowthRecord	POST	/api/growth/record/create	200	500	BIZ_FAIL
+pages/growth/create	createGrowthRecord	POST	/api/growth/record/create-with-order	200	500	BIZ_FAIL
+pages/growth/diet-checkin	sttTranscribe	POST	/api/ai/transcribe	200	400	BIZ_FAIL
+pages/growth/diet-checkin	getAllQuotaStatus	POST	/api/basic-quota/status/all	200	200	BIZ_OK
+pages/growth/exercise-checkin	sttTranscribe	POST	/api/ai/transcribe	200	400	BIZ_FAIL
+pages/growth/supplement	createGrowthSupplement	POST	/api/growth/record/supplement	200	500	BIZ_FAIL
+pages/growth/supplement	uploadAndParseReport	POST	/api/growth/record/upload-and-parse	200	400	BIZ_FAIL
+pages/growth/upload	createGrowthRecordFromUpload	POST	/api/growth/record/create-from-upload	200	500	BIZ_FAIL
+pages/growth/upload	uploadAndParseReport	POST	/api/growth/record/upload-and-parse	200	400	BIZ_FAIL
+pages/growth/upload	productList	POST	/api/product/list	200	200	BIZ_OK
+pages/guide/activities/detail	createActivity	POST	/api/guide/activities/create	200	200	BIZ_OK
+pages/guide/activities/detail	getGuideActivityDetail	POST	/api/guide/activities/detail	200	500	BIZ_FAIL
+pages/guide/activities/detail	publishActivity	POST	/api/guide/activities/publish	200	500	BIZ_FAIL
+pages/guide/activities/detail	updateActivity	POST	/api/guide/activities/update	200	500	BIZ_FAIL
+pages/guide/activities/index	cancelActivity	POST	/api/guide/activities/cancel	200	500	BIZ_FAIL
+pages/guide/activities/index	deleteActivity	POST	/api/guide/activities/delete	200	500	BIZ_FAIL
+pages/guide/activities/index	getGuideActivityList	POST	/api/guide/activities/list	200	200	BIZ_OK
+pages/guide/activities/index	publishActivity	POST	/api/guide/activities/publish	200	500	BIZ_FAIL
+pages/guide/bind/invite	generateQrCodeFromText	POST	/api/common/qrcode	200	500	BIZ_FAIL
+pages/guide/bind/invite	confirmBind	POST	/api/guide/bind/confirm	404	None	NOT_FOUND
+pages/guide/bind/invite	generateBindInvite	POST	/api/guide/bind/invite	200	200	BIZ_OK
+pages/guide/hierarchy/index	getAllChildGuides	POST	/api/guide/all-child-guides	200	200	BIZ_OK
+pages/guide/hierarchy/index	getChildGuides	POST	/api/guide/child-guides	200	200	BIZ_OK
+pages/guide/hierarchy/index	getParentGuide	POST	/api/guide/parent-guide	200	200	BIZ_OK
+pages/guide/packages/create	createPackage	POST	/api/packages	404	None	NOT_FOUND
+pages/guide/packages/detail	addPackageItem	POST	/api/packages/1/items	200	400	BIZ_FAIL
+pages/guide/packages/index	publishPackage	POST	/api/packages/1/publish	200	200	BIZ_OK
+pages/guide/packages/index	submitPackageForReview	POST	/api/packages/1/submit	200	200	BIZ_OK
+pages/guide/register/index	validateInviteCode	POST	/api/guide/invite-code/validate	200	400	BIZ_FAIL
+pages/guide/register/index	registerGuide	POST	/api/guide/register	200	500	BIZ_FAIL
+pages/health-main/index	getFeaturedArticles	POST	/api/articles/featured	200	200	BIZ_OK
+pages/health-main/index	getCognitiveChildScores	POST	/api/cognitive/child	200	200	BIZ_OK
+pages/health-main/index	getCognitiveFamilyScores	POST	/api/cognitive/family	200	200	BIZ_OK
+pages/health-main/index	getDimensionOverview	POST	/api/dimension/overview	200	200	BIZ_OK
+pages/health-main/index	getEmiReport	POST	/api/emireport/latest	200	200	BIZ_OK
+pages/health-main/index	getWealthDetail	POST	/api/energy/wealth-detail	200	500	BIZ_FAIL
+pages/health-main/index	getRelationshipScores	POST	/api/family/relationship/scores	200	200	BIZ_OK
+pages/health-main/index	getHealthPlanList	POST	/api/health/plan/list	200	200	BIZ_OK
+pages/health-main/index	getReportList	POST	/api/health/report/list	200	200	BIZ_OK
+pages/health-main/index	getSurveyStatus	POST	/api/survey/status	200	200	BIZ_OK
+pages/health/bodyfat-confirm	saveBodyFatMetrics	POST	/api/health/report/bodyfat-save	404	None	NOT_FOUND
+pages/health/challenge-manage	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/challenge-manage	createChallenge	POST	/api/health/challenge/create	200	500	BIZ_FAIL
+pages/health/challenge-manage	getChallengeHistory	POST	/api/health/challenge/history	200	200	BIZ_OK
+pages/health/challenge-manage	getChallengeList	POST	/api/health/challenge/list	200	200	BIZ_OK
+pages/health/challenge-manage	respondChallenge	POST	/api/health/challenge/respond	200	500	BIZ_FAIL
+pages/health/challenge-manage	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/health/components/MemberChipPicker	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/components/feedback-popup	submitFeedback	POST	/api/health/feedback/submit	200	500	BIZ_FAIL
+pages/health/doa-index	getDoaOverview	POST	/api/doa/overview	200	200	BIZ_OK
+pages/health/doa-stage-create	createDoaStage	POST	/api/doa/stage/create	200	500	BIZ_FAIL
+pages/health/doa-stage-create	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/doa-stage-detail	cancelDoaStage	POST	/api/doa/stage/cancel	200	500	BIZ_FAIL
+pages/health/doa-stage-detail	getDoaStageDetail	POST	/api/doa/stage/detail	200	500	BIZ_FAIL
+pages/health/doa-week-edit	getDoaStageDetail	POST	/api/doa/stage/detail	200	500	BIZ_FAIL
+pages/health/doa-week-edit	submitDoaWeekPlan	POST	/api/doa/week/plan	200	500	BIZ_FAIL
+pages/health/doa-week-edit	submitDoaWeekReview	POST	/api/doa/week/review	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	addFamilyMember	POST	/api/family/member/add	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/gut-flora-detail	getFoodCautionList	POST	/api/food/recommendation/caution	200	200	BIZ_OK
+pages/health/gut-flora-detail	getHealthFoods	POST	/api/health/foods	200	200	BIZ_OK
+pages/health/gut-flora-detail	queryKnowledgeBase	POST	/api/health/knowledge/query	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	queryIndicatorKnowledge	POST	/api/health/knowledge/v3/indicator/query	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	confirmReportPreview	POST	/api/health/report/confirm	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	getReportDetail	POST	/api/health/report/detail	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	discardReportDraft	POST	/api/health/report/discard	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	editHealthReport	POST	/api/health/report/edit	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	parseReportDraft	POST	/api/health/report/parse	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	getIndicatorChangeRanking	POST	/api/indicator/change-ranking	200	500	BIZ_FAIL
+pages/health/gut-flora-detail	getGutFloraAnalysis	POST	/api/nutrition/beijing/analysis	200	500	BIZ_FAIL
+pages/health/gut-flora-foods-detail	getCautionFamilyMembers	POST	/api/food/recommendation/members	200	200	BIZ_OK
+pages/health/gut-flora-foods-detail	getFoodCautionTrend	POST	/api/food/recommendation/trend	200	200	BIZ_OK
+pages/health/gut-flora-foods-detail	getHealthFoods	POST	/api/health/foods	200	200	BIZ_OK
+pages/health/gut-flora-foods-detail	queryFoodKnowledge	POST	/api/health/knowledge/v3/food/query	200	500	BIZ_FAIL
+pages/health/gut-flora-foods-detail	editHealthReport	POST	/api/health/report/edit	200	500	BIZ_FAIL
+pages/health/gut-flora-risks-detail	queryKnowledgeBase	POST	/api/health/knowledge/query	200	500	BIZ_FAIL
+pages/health/gut-flora-risks-detail	queryDiseaseKnowledge	POST	/api/health/knowledge/unified/disease/query	200	500	BIZ_FAIL
+pages/health/gut-flora-risks-detail	queryIndicatorKnowledge	POST	/api/health/knowledge/v3/indicator/query	200	500	BIZ_FAIL
+pages/health/gut-flora-risks-detail	getReportDetail	POST	/api/health/report/detail	200	500	BIZ_FAIL
+pages/health/gut-flora-risks-detail	editHealthReport	POST	/api/health/report/edit	200	500	BIZ_FAIL
+pages/health/gut-flora-species-detail	queryKnowledgeBase	POST	/api/health/knowledge/query	200	500	BIZ_FAIL
+pages/health/gut-flora-species-detail	queryBacteriaKnowledge	POST	/api/health/knowledge/v3/bacteria/query	200	500	BIZ_FAIL
+pages/health/gut-flora-species-detail	getReportDetail	POST	/api/health/report/detail	200	500	BIZ_FAIL
+pages/health/gut-flora-species-detail	editHealthReport	POST	/api/health/report/edit	200	500	BIZ_FAIL
+pages/health/health-plan-summary	getDietPreferences	POST	/api/diet/preferences/current-member	200	200	BIZ_OK
+pages/health/health-plan-summary	saveDietPreferences	POST	/api/diet/preferences/save	200	200	BIZ_OK
+pages/health/health-plan-summary	getHealthStatus	POST	/api/health-status/get	200	200	BIZ_OK
+pages/health/health-plan-summary	saveHealthStatus	POST	/api/health-status/save	200	500	BIZ_FAIL
+pages/health/health-plan-summary	saveHealthSignature	POST	/api/health-status/signature	200	500	BIZ_FAIL
+pages/health/health-plan-summary	confirmPlan	POST	/api/health/plan/confirm	200	500	BIZ_FAIL
+pages/health/health-plan-summary	getHealthPlanDetail	POST	/api/health/plan/detail	200	500	BIZ_FAIL
+pages/health/health-plan-summary	generateHealthPlan	POST	/api/health/plan/generate	200	4001	BIZ_FAIL
+pages/health/health-plan-summary	regenerateSection	POST	/api/health/plan/regenerate-section	200	500	BIZ_FAIL
+pages/health/health-plan-summary	saveHealthPlan	POST	/api/health/plan/save	200	500	BIZ_FAIL
+pages/health/health-plan-summary	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/health/health-status-form	getHealthStatus	POST	/api/health-status/get	200	200	BIZ_OK
+pages/health/health-status-form	saveHealthStatus	POST	/api/health-status/save	200	500	BIZ_FAIL
+pages/health/health-survey	getDietPreferences	POST	/api/diet/preferences/current-member	200	200	BIZ_OK
+pages/health/health-survey	saveDietPreferences	POST	/api/diet/preferences/save	200	200	BIZ_OK
+pages/health/health-survey	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/health-survey	getHealthStatus	POST	/api/health-status/get	200	200	BIZ_OK
+pages/health/health-survey	saveHealthStatus	POST	/api/health-status/save	200	500	BIZ_FAIL
+pages/health/health-survey	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/health/indicator-curve	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/indicator-curve	getIndicatorChangeRanking	POST	/api/indicator/change-ranking	200	500	BIZ_FAIL
+pages/health/indicator-curve	getIndicatorTrend	POST	/api/indicator/trend	200	500	BIZ_FAIL
+pages/health/indicator-quicklook	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/indicator-quicklook	getIndicatorQuickLookup	POST	/api/indicator/quick-lookup	200	500	BIZ_FAIL
+pages/health/my-feedback	getMyReportFeedbacks	POST	/api/health/feedback/list	200	200	BIZ_OK
+pages/health/nutrition-profile	getDeficiencyAnalysis	POST	/api/health/nutrition/deficiency	200	500	BIZ_FAIL
+pages/health/nutrition-profile	getChildNutritionProfile	POST	/api/health/nutrition/profile	200	500	BIZ_FAIL
+pages/health/physical-exam-detail	getReportDetail	POST	/api/health/report/detail	200	500	BIZ_FAIL
+pages/health/plan-list	deleteHealthPlan	POST	/api/health/plan/delete	200	500	BIZ_FAIL
+pages/health/plan-list	getHealthPlanList	POST	/api/health/plan/list	200	200	BIZ_OK
+pages/health/report-confirm	addFamilyMember	POST	/api/family/member/add	200	500	BIZ_FAIL
+pages/health/report-confirm	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/report-confirm	parseReportDraft	POST	/api/health/report/parse	200	500	BIZ_FAIL
+pages/health/report-detail	addFamilyMember	POST	/api/family/member/add	200	500	BIZ_FAIL
+pages/health/report-detail	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/report-detail	editHealthReport	POST	/api/health/report/edit	200	500	BIZ_FAIL
+pages/health/report-detail	parseReportDraft	POST	/api/health/report/parse	200	500	BIZ_FAIL
+pages/health/report-detail	getReportPayload	POST	/api/health/report/payload	200	500	BIZ_FAIL
+pages/health/report-list	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/report-list	getCollectingReports	POST	/api/health/report/collecting-list	200	200	BIZ_OK
+pages/health/report-list	deleteReport	POST	/api/health/report/delete	200	500	BIZ_FAIL
+pages/health/report-list	getReportList	POST	/api/health/report/list	200	200	BIZ_OK
+pages/health/report-list	reassignReport	POST	/api/health/report/reassign	200	500	BIZ_FAIL
+pages/health/report-list	approveReportTransfer	POST	/api/health/report/transfer/approve	200	500	BIZ_FAIL
+pages/health/report-list	denyReportTransfer	POST	/api/health/report/transfer/deny	200	500	BIZ_FAIL
+pages/health/report-list	getReportTransferList	POST	/api/health/report/transfer/list	200	200	BIZ_OK
+pages/health/report-survey	createReportSurvey	POST	/api/health/survey/create	200	500	BIZ_FAIL
+pages/health/report-survey	submitReportSurvey	POST	/api/health/survey/submit	200	500	BIZ_FAIL
+pages/health/report-survey	getSurveyStatus	POST	/api/survey/status	200	200	BIZ_OK
+pages/health/report-upload	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/health/report-upload	getReportCollectStatus	POST	/api/health/report/collect/status	200	500	BIZ_FAIL
+pages/health/report-upload	requestReportTransfer	POST	/api/health/report/transfer/request	200	500	BIZ_FAIL
+pages/health/report-upload	uploadReportOnly	POST	/api/health/report/upload-only	200	400	BIZ_FAIL
+pages/health/survey-history	getSurveyHistory	POST	/api/survey/history	200	200	BIZ_OK
+pages/health/survey-history	getActiveTemplates	POST	/api/survey/template/active	200	200	BIZ_OK
+pages/health/survey-questionnaire	submitSurvey	POST	/api/survey/submit	200	400	BIZ_FAIL
+pages/health/survey-questionnaire	getActiveTemplates	POST	/api/survey/template/active	200	200	BIZ_OK
+pages/health/teacher-service	getAvailableTeachers	POST	/api/health-plan/available-teachers	404	None	NOT_FOUND
+pages/home-pages/child-index	getActivityList	POST	/api/activity/list	200	200	BIZ_OK
+pages/home-pages/child-index	getEnergyLogs	POST	/api/energy/logs	200	200	BIZ_OK
+pages/home-pages/child-index	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/home-pages/child-index	getEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/home-pages/child-index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/home-pages/child-index	getGuideConfig	POST	/api/guide-config/current	200	500	BIZ_FAIL
+pages/home-pages/child-index	consumeGuidePopup	POST	/api/guide/popup/consume	200	500	BIZ_FAIL
+pages/home-pages/child-index	getGuidePopupList	POST	/api/guide/popup/list	200	200	BIZ_OK
+pages/home-pages/child-index	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+pages/home-pages/child-index	getUnlockStatus	POST	/api/unlock/status	200	200	BIZ_OK
+pages/home-pages/child-index	switchMode	POST	/api/user/switch-mode	404	None	NOT_FOUND
+pages/home-pages/components/AdBanner	getHomeBanners	POST	/api/home-banner/list	200	200	BIZ_OK
+pages/home-pages/components/ContactImport	importPhoneContact	POST	/api/contact/import-phone	200	400	BIZ_FAIL
+pages/home-pages/components/DailySummary	markFeedbackRead	POST	/api/feedback/read	200	500	BIZ_FAIL
+pages/home-pages/components/DailySummary	getTodayFeedback	POST	/api/feedback/today	200	200	BIZ_OK
+pages/home-pages/components/MicroActionCard	microActionComplete	POST	/api/micro-action/complete	200	500	BIZ_FAIL
+pages/home-pages/components/MicroActionCard	microActionToday	POST	/api/micro-action/today	200	200	BIZ_OK
+pages/home-pages/member-home-detail	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/home-pages/parent-index	getActivityList	POST	/api/activity/list	200	200	BIZ_OK
+pages/home-pages/parent-index	getFeaturedArticles	POST	/api/articles/featured	200	200	BIZ_OK
+pages/home-pages/parent-index	getContactList	POST	/api/contact/list	200	200	BIZ_OK
+pages/home-pages/parent-index	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/home-pages/parent-index	getEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/home-pages/parent-index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/home-pages/parent-index	switchToFamilyMember	POST	/api/family/member/switch	200	500	BIZ_FAIL
+pages/home-pages/parent-index	getSelfCheckStatus	POST	/api/family/self-check/status	200	200	BIZ_OK
+pages/home-pages/parent-index	dismissAlert	POST	/api/health/alert/dismiss	200	500	BIZ_FAIL
+pages/home-pages/parent-index	getActiveAlerts	POST	/api/health/alert/list	200	200	BIZ_OK
+pages/home-pages/parent-index	getChallengeList	POST	/api/health/challenge/list	200	200	BIZ_OK
+pages/home-pages/parent-index	getCircleList	POST	/api/health/circle/list	200	200	BIZ_OK
+pages/home-pages/parent-index	getCircleRanking	POST	/api/health/circle/ranking	200	200	BIZ_OK
+pages/home-pages/parent-index	getFamilyRanking	POST	/api/health/family/ranking	200	200	BIZ_OK
+pages/home-pages/parent-index	getInviteQrCode	POST	/api/invite/qrcode	200	200	BIZ_OK
+pages/home-pages/parent-index	getParentDashboard	POST	/api/parent/dashboard	200	200	BIZ_OK
+pages/home-pages/parent-index	getChildCompletionStats	POST	/api/stats/child-completion	200	200	BIZ_OK
+pages/home-pages/parent-index	approveTask	POST	/api/tasks/1/review	200	200	BIZ_OK
+pages/home-pages/parent-index	rejectTask	POST	/api/tasks/1/review	200	200	BIZ_OK
+pages/home-pages/parent-index	getPendingReviewTasks	POST	/api/tasks/pending-review	200	200	BIZ_OK
+pages/home-pages/parent-index	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+pages/home-pages/parent-index	getUnlockStatus	POST	/api/unlock/status	200	200	BIZ_OK
+pages/home-pages/parent-index	getPendingWishes	POST	/api/wishes/pending	200	200	BIZ_OK
+pages/home/app-library	getAppLibrary	POST	/api/home/app-library	200	200	BIZ_OK
+pages/home/app-library	resetShortcutConfig	POST	/api/home/shortcut/reset	200	200	BIZ_OK
+pages/home/app-library	saveShortcutConfig	POST	/api/home/shortcut/save	200	200	BIZ_OK
+pages/index-home/index	getActivityList	POST	/api/activity/list	200	200	BIZ_OK
+pages/index-home/index	getNotices	POST	/api/admin/notices/all	200	200	BIZ_OK
+pages/index-home/index	getFeaturedArticles	POST	/api/articles/featured	200	200	BIZ_OK
+pages/index-home/index	getCfList	POST	/api/commission/cf/list	200	200	BIZ_OK
+pages/index-home/index	getCfSummary	POST	/api/commission/cf/summary	200	200	BIZ_OK
+pages/index-home/index	getEnergyLogs	POST	/api/energy/logs	200	200	BIZ_OK
+pages/index-home/index	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/index-home/index	getEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/index-home/index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/index-home/index	switchToFamilyMember	POST	/api/family/member/switch	200	500	BIZ_FAIL
+pages/index-home/index	getSelfCheckStatus	POST	/api/family/self-check/status	200	200	BIZ_OK
+pages/index-home/index	getGuideConfig	POST	/api/guide-config/current	200	500	BIZ_FAIL
+pages/index-home/index	acceptParentInvite	POST	/api/guide/parent-invite/accept	200	500	BIZ_FAIL
+pages/index-home/index	consumeGuidePopup	POST	/api/guide/popup/consume	200	500	BIZ_FAIL
+pages/index-home/index	getGuidePopupList	POST	/api/guide/popup/list	200	200	BIZ_OK
+pages/index-home/index	getChallengeList	POST	/api/health/challenge/list	200	200	BIZ_OK
+pages/index-home/index	updateChallengeProgress	POST	/api/health/challenge/progress	200	500	BIZ_FAIL
+pages/index-home/index	respondChallenge	POST	/api/health/challenge/respond	200	500	BIZ_FAIL
+pages/index-home/index	getAppLibrary	POST	/api/home/app-library	200	200	BIZ_OK
+pages/index-home/index	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/index-home/index	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+pages/index-home/index	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/index-home/index	getNotificationList	POST	/api/notification/list	200	200	BIZ_OK
+pages/index-home/index	readNotification	POST	/api/notification/read	200	200	BIZ_OK
+pages/index-home/index	getPointsLogs	POST	/api/points/logs	200	200	BIZ_OK
+pages/index-home/index	getSurveyStatus	POST	/api/survey/status	200	200	BIZ_OK
+pages/index-home/index	getTaskHistory	POST	/api/tasks/history	200	200	BIZ_OK
+pages/index-home/index	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+pages/invite/join	checkUserFamily	POST	/api/family/invite/check-family	200	200	BIZ_OK
+pages/invite/join	validateInvitation	POST	/api/family/invite/validate	200	500	BIZ_FAIL
+pages/invite/join	validateFamilyCode	POST	/api/family/invite/validate-family-code	200	500	BIZ_FAIL
+pages/invite/join	bindReferral	POST	/api/invite/bind	200	500	BIZ_FAIL
+pages/invite/join-form	requestJoinByCode	POST	/api/family/invite/request-join-by-code	200	500	BIZ_FAIL
+pages/invite/join-form	updateUserInfo	POST	/api/user/update	200	200	BIZ_OK
+pages/login/scan-login	wechatWebScan	POST	/api/auth/wechat-web/scan	200	500	BIZ_FAIL
+pages/match/street-match	countFamiliesByStreetIds	POST	/api/admin/families/count	200	500	BIZ_FAIL
+pages/match/street-match	countTeachersByStreetIds	POST	/api/admin/teachers/count	200	200	BIZ_OK
+pages/meal/log	logMeal	POST	/api/meal/log	200	400	BIZ_FAIL
+pages/meal/log	getMealLogs	POST	/api/meal/logs	200	200	BIZ_OK
+pages/meal/log	getNutritionSummary	POST	/api/meal/nutrition-summary	200	200	BIZ_OK
+pages/meal/preference	getNutritionProfile	POST	/api/nutrition/profile/get	200	200	BIZ_OK
+pages/meal/preference	saveNutritionProfile	POST	/api/nutrition/profile/save	200	200	BIZ_OK
+pages/meal/recommend	getMealRecommend	POST	/api/meal/recommend	200	500	BIZ_FAIL
+pages/meal/recommend	replaceFood	POST	/api/meal/replace	200	500	BIZ_FAIL
+pages/member-detail/components/member-detail-sections/action-section	getActivityList	POST	/api/activity/list	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/action-section	getTodayTasksByCategory	POST	/api/tasks/today	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/action-section	getCheckinStats	POST	/api/wealth/checkin/stats	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/body-section	getDimensionOverview	POST	/api/dimension/overview	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/body-section	getHealthAnalysis	POST	/api/health/analysis	200	500	BIZ_FAIL
+pages/member-detail/components/member-detail-sections/body-section	getCheckinList	POST	/api/wealth/checkin/list	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/mind-section	getContactList	POST	/api/contact/list	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/mind-section	getHealthAlerts	POST	/api/family/relationship/health-alerts	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/mind-section	getMilestones	POST	/api/family/relationship/milestones	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/mind-section	getRelationshipScores	POST	/api/family/relationship/scores	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/wisdom-section	getAssessmentHistory	POST	/api/assessment/history	200	200	BIZ_OK
+pages/member-detail/components/member-detail-sections/wisdom-section	getAssessmentLatestResult	POST	/api/assessment/latest-result	200	200	BIZ_OK
+pages/member-detail/member-detail	getActivityList	POST	/api/activity/list	200	200	BIZ_OK
+pages/member-detail/member-detail	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/member-detail/report-detail	getReportDetail	POST	/api/health/report/detail	200	500	BIZ_FAIL
+pages/membership/benefits	getMembershipBenefits	POST	/api/membership/benefits	200	200	BIZ_OK
+pages/membership/benefits	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/membership/index	getMyButler	POST	/api/butler/my-butler	200	200	BIZ_OK
+pages/membership/index	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/membership/index	getMembershipBenefits	POST	/api/membership/benefits	200	200	BIZ_OK
+pages/membership/index	getMembershipCompare	POST	/api/membership/compare	200	500	BIZ_FAIL
+pages/membership/index	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/membership/pay	getCouponList	POST	/api/coupon/list	200	200	BIZ_OK
+pages/membership/pay	createOrder	POST	/api/membership/orders	200	500	BIZ_FAIL
+pages/membership/pay	nextOrder	POST	/api/membership/orders/continue	200	400	BIZ_FAIL
+pages/membership/pay	getMembershipPlans	POST	/api/membership/plans	200	200	BIZ_OK
+pages/membership/result	getJoinCouponRules	POST	/api/coupon/join-rules	200	200	BIZ_OK
+pages/membership/result	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/membership/result	nextOrder	POST	/api/membership/orders/continue	200	400	BIZ_FAIL
+pages/membership/upgrade	getJoinCouponRules	POST	/api/coupon/join-rules	200	200	BIZ_OK
+pages/membership/upgrade	getMembershipCompare	POST	/api/membership/compare	200	500	BIZ_FAIL
+pages/membership/upgrade	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/membership/upgrade	getMembershipPlans	POST	/api/membership/plans	200	200	BIZ_OK
+pages/membership/upgrade	getUpgradeRecords	POST	/api/membership/upgrade-records	200	200	BIZ_OK
+pages/mind-detail/articles	getArticleCategories	POST	/api/articles/categories	200	200	BIZ_OK
+pages/mind-detail/articles	getArticleList	POST	/api/articles/list	200	200	BIZ_OK
+pages/mind-detail/components/PsychCrisisBanner	dismissAlert	POST	/api/health/alert/dismiss	200	500	BIZ_FAIL
+pages/mind-detail/emotion-report	getEmiReport	POST	/api/emireport/latest	200	200	BIZ_OK
+pages/mind-detail/family-dashboard	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/mind-detail/family-dashboard	getFamilyFortune	POST	/api/mind/fortune	200	200	BIZ_OK
+pages/mind-detail/family-dashboard	getMonthFortune	POST	/api/mind/fortune/month	200	200	BIZ_OK
+pages/mind-detail/family-dashboard	getFortuneReports	POST	/api/mind/fortune/reports	200	200	BIZ_OK
+pages/mind-detail/family-dashboard	getWeekFortune	POST	/api/mind/fortune/week	200	200	BIZ_OK
+pages/mind-detail/index	getContactList	POST	/api/contact/list	200	200	BIZ_OK
+pages/mind-detail/index	getVisibleSections	POST	/api/content-sections/visible	200	500	BIZ_FAIL
+pages/mind-detail/index	getDanReportByChild	POST	/api/dan-assessment/report/child	200	500	BIZ_FAIL
+pages/mind-detail/index	getRadarData	POST	/api/dimension/radar-data	200	200	BIZ_OK
+pages/mind-detail/index	getEmiReport	POST	/api/emireport/latest	200	200	BIZ_OK
+pages/mind-detail/index	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/mind-detail/index	getEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/mind-detail/index	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/mind-detail/index	kickFamilyMemberById	POST	/api/family/member/kick	200	500	BIZ_FAIL
+pages/mind-detail/index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/mind-detail/index	getHealthAlerts	POST	/api/family/relationship/health-alerts	200	200	BIZ_OK
+pages/mind-detail/index	getMilestones	POST	/api/family/relationship/milestones	200	200	BIZ_OK
+pages/mind-detail/index	getLatestIndicators	POST	/api/health/indicators	200	500	BIZ_FAIL
+pages/mind-detail/index	getFamilyFortune	POST	/api/mind/fortune	200	200	BIZ_OK
+pages/mind-detail/innate-portrait	getInnateReading	POST	/api/mind/innate/reading	200	500	BIZ_FAIL
+pages/mind-detail/innate-trajectory	getInnateTrajectory	POST	/api/mind/innate/trajectory	200	500	BIZ_FAIL
+pages/mind-detail/member-mind-detail	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/mind-detail/member-mind-detail	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/mind-detail/training	getGameStats	POST	/api/game/stats	200	200	BIZ_OK
+pages/notification/index	getNotificationList	POST	/api/notification/list	200	200	BIZ_OK
+pages/notification/index	readNotification	POST	/api/notification/read	200	200	BIZ_OK
+pages/nutritionist/apply	nutritionistApply	POST	/api/nutritionist/apply	200	200	BIZ_OK
+pages/orchestration/editor	getNodeTemplateList	POST	/api/admin/task-templates	200	403	BIZ_FAIL
+pages/orchestration/editor	getOrchestrationFlowDetail	POST	/api/orchestration/flow/detail	200	500	BIZ_FAIL
+pages/orchestration/editor	publishOrchestrationFlow	POST	/api/orchestration/flow/publish	200	500	BIZ_FAIL
+pages/orchestration/editor	saveOrchestrationFlow	POST	/api/orchestration/flow/save	200	500	BIZ_FAIL
+pages/orchestration/index	archiveOrchestrationFlow	POST	/api/orchestration/flow/archive	200	500	BIZ_FAIL
+pages/orchestration/index	deleteOrchestrationFlow	POST	/api/orchestration/flow/delete	200	500	BIZ_FAIL
+pages/orchestration/index	getOrchestrationFlowList	POST	/api/orchestration/flow/list	200	200	BIZ_OK
+pages/orchestration/index	publishOrchestrationFlow	POST	/api/orchestration/flow/publish	200	500	BIZ_FAIL
+pages/orchestration/node-edit	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/parent/appointments	cancelAppointment	POST	/api/dan-assessment/appointment/cancel	200	500	BIZ_FAIL
+pages/parent/appointments	getMyAppointments	POST	/api/dan-assessment/appointment/user	200	500	BIZ_FAIL
+pages/parent/child-detail	getPendingReviewTasks	POST	/api/tasks/pending-review	200	200	BIZ_OK
+pages/parent/child-detail	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+pages/parent/child-detail	getPendingWishes	POST	/api/wishes/pending	200	200	BIZ_OK
+pages/parent/plans/detail	getGuidePlanDetail	POST	/api/guide/plans/detail	200	500	BIZ_FAIL
+pages/parent/plans/index	listFamilyPlans	POST	/api/guide/plans/family-list	200	500	BIZ_FAIL
+pages/parent/wishes/index	approveWishExchange	POST	/api/wishes/1/approve-exchange	200	500	BIZ_FAIL
+pages/parent/wishes/index	markWishFulfilled	POST	/api/wishes/1/fulfill	200	500	BIZ_FAIL
+pages/parent/wishes/index	setWishPrice	POST	/api/wishes/1/price	404	None	NOT_FOUND
+pages/parent/wishes/index	rejectWish	POST	/api/wishes/1/reject	200	500	BIZ_FAIL
+pages/parent/wishes/index	getWishes	POST	/api/wishes/list	200	500	BIZ_FAIL
+pages/parent/wishes/index	getPendingWishes	POST	/api/wishes/pending	200	200	BIZ_OK
+pages/pearl-reminders/index	addPearlInteraction	POST	/api/pearl/interaction/add	200	500	BIZ_FAIL
+pages/pearl-reminders/index	getPearlReminders	POST	/api/pearl/reminder/list	200	200	BIZ_OK
+pages/profile-extra/coupons	claimCoupon	POST	/api/coupon/claim	200	500	BIZ_FAIL
+pages/profile-extra/coupons	getExchangeableCoupons	POST	/api/coupon/exchangeable	200	200	BIZ_OK
+pages/profile-extra/coupons	getMyCoupons	POST	/api/coupon/my	200	200	BIZ_OK
+pages/profile-extra/coupons	exchangeCouponByCf	POST	/api/family-platform/exchange-coupon	200	500	BIZ_FAIL
+pages/profile-extra/family-members	generateFamilyInvite	POST	/api/family/invite/generate	200	200	BIZ_OK
+pages/profile-extra/family-members	getPendingJoinRequests	POST	/api/family/invite/pending-requests	200	200	BIZ_OK
+pages/profile-extra/family-members	kickFamilyMemberById	POST	/api/family/member/kick	200	500	BIZ_FAIL
+pages/profile-extra/family-members	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/profile-extra/family-members	switchToFamilyMember	POST	/api/family/member/switch	200	500	BIZ_FAIL
+pages/profile-extra/family-members	revokeReportMemberPermission	POST	/api/health/report/member-permission/revoke	200	500	BIZ_FAIL
+pages/profile-extra/family-members	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/profile-extra/gates	getUnlockStatus	POST	/api/unlock/status	200	200	BIZ_OK
+pages/profile-extra/onboarding	claimOnboardingReward	POST	/api/onboarding/claim	200	200	BIZ_OK
+pages/profile-extra/onboarding	getOnboardingProgress	POST	/api/onboarding/progress	200	200	BIZ_OK
+pages/profile-main/profile	verifyPassword	POST	/api/auth/verify-password	200	200	BIZ_OK
+pages/profile-main/profile	cartCount	POST	/api/cart/count	200	200	BIZ_OK
+pages/profile-main/profile	getMyReferrer	POST	/api/commission/my-referrer	200	200	BIZ_OK
+pages/profile-main/profile	getTeamConsumption	POST	/api/commission/team/consumption	200	200	BIZ_OK
+pages/profile-main/profile	getEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/profile-main/profile	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/profile-main/profile	getChallengeList	POST	/api/health/challenge/list	200	200	BIZ_OK
+pages/profile-main/profile	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+pages/profile-main/profile	getReferralSummary	POST	/api/invite/summary	200	200	BIZ_OK
+pages/profile-main/profile	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/profile-main/profile	getOrderCounts	POST	/api/product/order/my/counts	200	200	BIZ_OK
+pages/profile-main/profile	getShareQrCode	POST	/api/share/qrcode	200	500	BIZ_FAIL
+pages/profile-main/profile	getTodayTasksByCategory	POST	/api/tasks/today	200	200	BIZ_OK
+pages/profile-main/profile	getUserInfo	POST	/api/user/info	200	200	BIZ_OK
+pages/profile-main/profile	getProfileStats	POST	/api/user/profile-stats	200	200	BIZ_OK
+pages/profile-main/profile	vendorStatus	POST	/api/vendor/status	200	200	BIZ_OK
+pages/profile/components/ProfileHeader	verifyPassword	POST	/api/auth/verify-password	200	200	BIZ_OK
+pages/profile/components/ProfileHeader	switchToFamilyMember	POST	/api/family/member/switch	200	500	BIZ_FAIL
+pages/profile/components/ProfileMenu	setPassword	POST	/api/auth/set-password	200	400	BIZ_FAIL
+pages/profile/components/ProfileMenu	verifyPassword	POST	/api/auth/verify-password	200	200	BIZ_OK
+pages/profile/components/ProfileMenu	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/profile/components/ProfileMenu	updateMemberVisibility	POST	/api/family/user/members/update-visibility	200	500	BIZ_FAIL
+pages/profile/components/ProfileMenu	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+pages/profile/components/ProfileMenu	vendorStatus	POST	/api/vendor/status	200	200	BIZ_OK
+pages/profile/components/ProfileStats	getUserActionStats	POST	/api/user/action-stats	200	200	BIZ_OK
+pages/profile/index	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+pages/profile/message-history	getCfList	POST	/api/commission/cf/list	200	200	BIZ_OK
+pages/profile/message-history	getEnergyLogs	POST	/api/energy/logs	200	200	BIZ_OK
+pages/profile/message-history	getNotificationList	POST	/api/notification/list	200	200	BIZ_OK
+pages/profile/message-history	readNotification	POST	/api/notification/read	200	200	BIZ_OK
+pages/profile/message-history	getPointsLogs	POST	/api/points/logs	200	200	BIZ_OK
+pages/profile/portrait-edit	getEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/profile/portrait-edit	editPortrait	POST	/api/user/portrait/edit	200	500	BIZ_FAIL
+pages/profile/portrait-edit	getPortrait	POST	/api/user/portrait/get	200	200	BIZ_OK
+pages/profile/report-detail	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+pages/profile/report-management	getReportSummaryList	POST	/api/report-summary/list	200	200	BIZ_OK
+pages/profile/service-role-apply	getMyServiceRoleApply	POST	/api/service-role/my-apply	200	200	BIZ_OK
+pages/profile/service-role-apply	uploadServiceRoleImage	POST	/api/service-role/upload-image	200	400	BIZ_FAIL
+pages/promotion/commission	getCfList	POST	/api/commission/cf/list	200	200	BIZ_OK
+pages/promotion/commission	getCfSummary	POST	/api/commission/cf/summary	200	200	BIZ_OK
+pages/promotion/index	getCfSummary	POST	/api/commission/cf/summary	200	200	BIZ_OK
+pages/promotion/index	distributeToMember	POST	/api/earnings/admin/distribute	200	500	BIZ_FAIL
+pages/promotion/index	toggleMemberBalance	POST	/api/earnings/admin/toggle-member	200	500	BIZ_FAIL
+pages/promotion/index	withdrawFamilyEarnings	POST	/api/earnings/admin/withdraw	200	500	BIZ_FAIL
+pages/promotion/index	getFamilyEarningsSummary	POST	/api/earnings/family/summary	200	200	BIZ_OK
+pages/promotion/index	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+pages/promotion/index	getReferralSummary	POST	/api/invite/summary	200	200	BIZ_OK
+pages/promotion/invite	bindReferral	POST	/api/invite/bind	200	500	BIZ_FAIL
+pages/promotion/invite	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+pages/promotion/invite	getReferralList	POST	/api/invite/list	200	200	BIZ_OK
+pages/promotion/invite	claimInviteMilestone	POST	/api/invite/milestone/claim	200	500	BIZ_FAIL
+pages/promotion/invite	getInviteMilestones	POST	/api/invite/milestone/list	200	200	BIZ_OK
+pages/promotion/invite	getInviteQrCode	POST	/api/invite/qrcode	200	200	BIZ_OK
+pages/promotion/invite	getReferralSummary	POST	/api/invite/summary	200	200	BIZ_OK
+pages/promotion/leaderboard	getLeaderboardMyRank	POST	/api/leaderboard/my-rank	200	200	BIZ_OK
+pages/promotion/leaderboard	getLeaderboardTop	POST	/api/leaderboard/top	200	200	BIZ_OK
+pages/promotion/team	getCfRate	POST	/api/commission/cf/rate	200	200	BIZ_OK
+pages/promotion/team	getMyReferrer	POST	/api/commission/my-referrer	200	200	BIZ_OK
+pages/promotion/team	getTeamConsumption	POST	/api/commission/team/consumption	200	200	BIZ_OK
+pages/promotion/team	getTeamAllMembersConsumptionCurve	POST	/api/commission/team/consumption-curve	200	200	BIZ_OK
+pages/promotion/team	getTeamGrowthCurve	POST	/api/commission/team/growth-curve	200	200	BIZ_OK
+pages/promotion/team	getTeamL1ConsumptionCurve	POST	/api/commission/team/l1-consumption-curve	200	200	BIZ_OK
+pages/promotion/team	getTeamList	POST	/api/commission/team/list	200	200	BIZ_OK
+pages/promotion/team	getTeamTree	POST	/api/commission/team/tree	200	200	BIZ_OK
+pages/promotion/withdraw	getCommissionSummary	POST	/api/commission/summary	200	200	BIZ_OK
+pages/promotion/withdraw	applyWithdrawal	POST	/api/withdrawal/apply	200	500	BIZ_FAIL
+pages/promotion/withdraw	getWithdrawalHistory	POST	/api/withdrawal/history	200	200	BIZ_OK
+pages/psych-assessment/index	getCognitiveChildScores	POST	/api/cognitive/child	200	200	BIZ_OK
+pages/psych-assessment/index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/psych-assessment/quiz	submitCognitiveSelfTest	POST	/api/cognitive/self-test	200	500	BIZ_FAIL
+pages/reminder-config/index	getReminderConfig	POST	/api/task/reminder-config/get	200	200	BIZ_OK
+pages/reminder-config/index	saveReminderConfig	POST	/api/task/reminder-config/save	200	500	BIZ_FAIL
+pages/rewards/badge	getChildBadges	POST	/api/badges/child/list	200	200	BIZ_OK
+pages/rewards/badge	toggleBadgeFavorite	POST	/api/badges/favorite	200	200	BIZ_OK
+pages/rewards/badge	getActiveBadges	POST	/api/badges/list	200	200	BIZ_OK
+pages/rewards/badge	getFamilyBadgeRanking	POST	/api/badges/ranking/family	200	200	BIZ_OK
+pages/rewards/badge	getChildBadgeStats	POST	/api/badges/statistics/child	200	200	BIZ_OK
+pages/rewards/rewards	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/rewards/rewards	createParentWishlist	POST	/api/parent/wishlist	200	400	BIZ_FAIL
+pages/rewards/rewards	exchangeParentWishlist	POST	/api/parent/wishlist/1/exchange	200	500	BIZ_FAIL
+pages/rewards/rewards	getParentWishlist	POST	/api/parent/wishlist/list	200	200	BIZ_OK
+pages/rewards/rewards	getPointsBalance	POST	/api/points/balance	200	200	BIZ_OK
+pages/rewards/rewards	createReward	POST	/api/rewards	404	None	NOT_FOUND
+pages/rewards/rewards	exchangeReward	POST	/api/rewards/1/exchange	200	200	BIZ_OK
+pages/rewards/rewards	getWishlist	POST	/api/rewards/wishlist	200	200	BIZ_OK
+pages/rewards/rewards	getUserInfo	POST	/api/user/info	200	200	BIZ_OK
+pages/share/index	getFamilyFootprint	POST	/api/share/family-footprint	200	200	BIZ_OK
+pages/shop/cart/cart	getGiftMembershipProgress	POST	/api/membership/gift-membership-progress	200	500	BIZ_FAIL
+pages/shop/cart/cart	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/shop/checkout/checkout	applyCoupon	POST	/api/coupon/apply	200	500	BIZ_FAIL
+pages/shop/checkout/checkout	getCouponCheckoutList	POST	/api/coupon/checkout-list	200	200	BIZ_OK
+pages/shop/checkout/checkout	getCouponList	POST	/api/coupon/list	200	200	BIZ_OK
+pages/shop/checkout/checkout	getFamilyPlatformBalance	POST	/api/family-platform/balance	200	200	BIZ_OK
+pages/shop/checkout/checkout	exchangeCouponByCf	POST	/api/family-platform/exchange-coupon	200	500	BIZ_FAIL
+pages/shop/checkout/checkout	getGiftMembershipProgress	POST	/api/membership/gift-membership-progress	200	500	BIZ_FAIL
+pages/shop/checkout/checkout	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/shop/checkout/checkout	productDetail	POST	/api/product/detail	200	500	BIZ_FAIL
+pages/shop/checkout/checkout	getProductRequiredFields	POST	/api/product/purchase_fields/required	200	500	BIZ_FAIL
+pages/shop/checkout/checkout	shopDiscountCalculate	POST	/api/shop/discount/calculate	200	200	BIZ_OK
+pages/shop/checkout/checkout	getSpecialPriceInfo	POST	/api/special-price/info	200	200	BIZ_OK
+pages/shop/checkout/checkout	addressList	POST	/api/user/address/list	200	200	BIZ_OK
+pages/shop/consignee-edit/consignee-edit	consigneeDetail	POST	/api/consignee/detail	200	500	BIZ_FAIL
+pages/shop/consignee-edit/consignee-edit	consigneeSave	POST	/api/consignee/save	200	500	BIZ_FAIL
+pages/shop/consignee-list/consignee-list	consigneeDelete	POST	/api/consignee/delete	200	500	BIZ_FAIL
+pages/shop/consignee-list/consignee-list	consigneeList	POST	/api/consignee/list	200	200	BIZ_OK
+pages/shop/index/index	cartCount	POST	/api/cart/count	200	200	BIZ_OK
+pages/shop/index/index	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/shop/index/index	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/shop/index/index	productList	POST	/api/product/list	200	200	BIZ_OK
+pages/shop/index/index	goodsCategory	POST	/api/shop/category/tree	200	200	BIZ_OK
+pages/shop/order-detail/order-detail	productOrderCancel	POST	/api/product/order/cancel	200	500	BIZ_FAIL
+pages/shop/order-detail/order-detail	productOrderConfirm	POST	/api/product/order/confirm	200	500	BIZ_FAIL
+pages/shop/order-detail/order-detail	productOrderDetail	POST	/api/product/order/detail	200	500	BIZ_FAIL
+pages/shop/order-list/order-list	productOrderCancel	POST	/api/product/order/cancel	200	500	BIZ_FAIL
+pages/shop/order-list/order-list	productOrderConfirm	POST	/api/product/order/confirm	200	500	BIZ_FAIL
+pages/shop/order-list/order-list	productOrderMy	POST	/api/product/order/my	200	200	BIZ_OK
+pages/shop/order-list/order-list	productOrderCounts	POST	/api/product/order/my/counts	200	200	BIZ_OK
+pages/shop/payment/payment	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/shop/search/search	productList	POST	/api/product/list	200	200	BIZ_OK
+pages/stats/completion-rate	getChildCompletionStats	POST	/api/stats/child-completion	200	200	BIZ_OK
+pages/stats/completion-rate	getFamilyCompletionStats	POST	/api/stats/family-completion	200	200	BIZ_OK
+pages/stats/index	getChildOverview	POST	/api/stats/child/overview	200	200	BIZ_OK
+pages/tasks/create-task	createTask	POST	/api/tasks/create	200	400	BIZ_FAIL
+pages/tasks/create-task	getTaskListForPicker	POST	/api/tasks/list	200	200	BIZ_OK
+pages/tasks/daily-tasks	claimGrowthTaskReward	POST	/api/growth-task/claim	200	200	BIZ_OK
+pages/tasks/daily-tasks	getGrowthTaskList	POST	/api/growth-task/list	200	200	BIZ_OK
+pages/tasks/review	approveTask	POST	/api/tasks/1/review	200	200	BIZ_OK
+pages/tasks/review	rejectTask	POST	/api/tasks/1/review	200	200	BIZ_OK
+pages/tasks/review	getTaskHistory	POST	/api/tasks/history	200	200	BIZ_OK
+pages/tasks/review	getPendingReviewTasks	POST	/api/tasks/pending-review	200	200	BIZ_OK
+pages/tasks/tasks	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/tasks/tasks	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/tasks/tasks	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/tasks/tasks	completeTask	POST	/api/tasks/1/complete	200	500	BIZ_FAIL
+pages/tasks/tasks	acceptTask	POST	/api/tasks/accept	200	500	BIZ_FAIL
+pages/tasks/tasks	createTask	POST	/api/tasks/create	200	400	BIZ_FAIL
+pages/tasks/tasks	getMyPendingTasks	POST	/api/tasks/my-pending	200	200	BIZ_OK
+pages/tasks/tasks	getTodayTasks	POST	/api/tasks/today	200	200	BIZ_OK
+pages/teacher/chat	getGuideMessages	POST	/api/guide/messages/list	200	500	BIZ_FAIL
+pages/teacher/families	getBoundFamilies	POST	/api/guide/families	404	None	NOT_FOUND
+pages/teacher/messages	getGuideMessages	POST	/api/guide/messages/list	200	500	BIZ_FAIL
+pages/teacher/orders	getGuideOrders	POST	/api/guide/orders/list	200	403	BIZ_FAIL
+pages/teacher/orders	getOrderStats	POST	/api/guide/orders/stats	200	403	BIZ_FAIL
+pages/teacher/plan-create	createTrainingPlan	POST	/api/guide/training-plans/create	200	200	BIZ_OK
+pages/teacher/plan-detail	updateGuidePlanContent	POST	/api/guide/families/1/plans/1/update	200	403	BIZ_FAIL
+pages/teacher/plan-detail	getGuidePendingPlans	POST	/api/guide/families/1/plans/pending	200	403	BIZ_FAIL
+pages/teacher/plan-list	getTrainingPlanList	POST	/api/guide/training-plans/list	200	200	BIZ_OK
+pages/teacher/review-family	getGuideChildPendingTasks	POST	/api/guide/families/1/children/1/pending-review	200	500	BIZ_FAIL
+pages/teacher/review-family	getGuideFamilyMembers	POST	/api/guide/families/1/members	200	403	BIZ_FAIL
+pages/teacher/review-family	getGuidePendingPlans	POST	/api/guide/families/1/plans/pending	200	403	BIZ_FAIL
+pages/teacher/review-family	reviewGuideTask	POST	/api/guide/families/1/tasks/1/review	200	500	BIZ_FAIL
+pages/teacher/review-family	reviewTask	POST	/api/tasks/1/review	200	200	BIZ_OK
+pages/teacher/review-workbench	getGuideMyFamilies	POST	/api/guide/families/my-families	200	403	BIZ_FAIL
+pages/teacher/service-tasks	completeTask	POST	/api/tasks/1/complete	200	500	BIZ_FAIL
+pages/teacher/teacher-profile	generateParentInvite	POST	/api/guide/parent-invite/generate	200	200	BIZ_OK
+pages/teacher/teacher-profile	switchRole	POST	/api/user/switch-role	404	None	NOT_FOUND
+pages/teacher/team	generateInviteCode	POST	/api/guide/invite-code/generate	200	200	BIZ_OK
+pages/teacher/team	generateTeamInviteCode	POST	/api/guide/team/invite-code/generate	200	200	BIZ_OK
+pages/teacher/team	getTeamMembers	POST	/api/guide/team/members	200	200	BIZ_OK
+pages/teacher/team	getTeamStats	POST	/api/guide/team/stats	200	200	BIZ_OK
+pages/user-edit/user-edit	directRegister	POST	/api/auth/direct-register	200	500	BIZ_FAIL
+pages/user-edit/user-edit	requestJoinByCode	POST	/api/family/invite/request-join-by-code	200	500	BIZ_FAIL
+pages/user-edit/user-edit	createFamily	POST	/api/family/user/create-family	200	200	BIZ_OK
+pages/user-edit/user-edit	getMyMembership	POST	/api/membership/my	200	200	BIZ_OK
+pages/user-edit/user-edit	getUserInfo	POST	/api/user/info	200	200	BIZ_OK
+pages/user-edit/user-edit	updateUserInfo	POST	/api/user/update	200	200	BIZ_OK
+pages/vendor/apply	vendorApply	POST	/api/vendor/apply	200	200	BIZ_OK
+pages/vendor/center	vendorInfo	POST	/api/vendor/info	200	500	BIZ_FAIL
+pages/vendor/center	vendorStatus	POST	/api/vendor/status	200	200	BIZ_OK
+pages/vendor/order-review/order-review	productOrderDetail	POST	/api/product/order/detail	200	500	BIZ_FAIL
+pages/vendor/order-review/order-review	productOrderReviewUpdate	POST	/api/product/order/review/update	200	500	BIZ_FAIL
+pages/vendor/orders/orders	productOrderConfirm	POST	/api/product/order/confirm	200	500	BIZ_FAIL
+pages/vendor/orders/orders	productOrderVendor	POST	/api/product/order/vendor	200	200	BIZ_OK
+pages/vendor/product-edit/product-edit	productCreate	POST	/api/product/create	200	500	BIZ_FAIL
+pages/vendor/product-edit/product-edit	productDetail	POST	/api/product/detail	200	500	BIZ_FAIL
+pages/vendor/product-edit/product-edit	productUpdate	POST	/api/product/update	200	500	BIZ_FAIL
+pages/vendor/products/products	productMy	POST	/api/product/my	200	200	BIZ_OK
+pages/vendor/products/products	productShelve	POST	/api/product/shelve	200	500	BIZ_FAIL
+pages/vendor/team-customers/team-customers	getTeamCustomers	POST	/api/admin/supply-team/customers	200	200	BIZ_OK
+pages/vendor/team-system/team-system	getVendorHierarchyInfo	POST	/api/admin/supply-hierarchy/my	200	500	BIZ_FAIL
+pages/vendor/team-system/team-system	getVendorSystemInfo	POST	/api/admin/supply-system/my-system	200	500	BIZ_FAIL
+pages/vendor/team-system/team-system	getVendorTeamCustomers	POST	/api/admin/supply-team/customers	200	200	BIZ_OK
+pages/vendor/team-system/team-system	getVendorTeamMembers	POST	/api/admin/supply-team/members	200	200	BIZ_OK
+pages/wealth-cf/index	getCfBalance	GET	/api/cf/balance	200	200	BIZ_OK
+pages/wealth-cf/index	getFamilyCoupons	GET	/api/cf/family-coupons	200	200	BIZ_OK
+pages/wealth-cf/index	getCfLogs	GET	/api/cf/logs	200	200	BIZ_OK
+pages/wealth-cf/index	getExchangeableCoupons	POST	/api/coupon/exchangeable	200	200	BIZ_OK
+pages/wealth-cf/index	exchangeCouponByCf	POST	/api/family-platform/exchange-coupon	200	500	BIZ_FAIL
+pages/wealth-detail/member-wealth-detail	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/wealth-detail/member-wealth-detail	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/wealth-sub/checkin	createCheckin	POST	/api/wealth/checkin/create	200	500	BIZ_FAIL
+pages/wealth-sub/checkin	deleteCheckin	POST	/api/wealth/checkin/delete	200	500	BIZ_FAIL
+pages/wealth-sub/checkin	getCheckinList	POST	/api/wealth/checkin/list	200	200	BIZ_OK
+pages/wealth-sub/checkin	getCheckinStats	POST	/api/wealth/checkin/stats	200	200	BIZ_OK
+pages/wealth-sub/insurance-add	createInsurance	POST	/api/wealth/insurance/create	200	400	BIZ_FAIL
+pages/wealth-sub/insurance-add	getInsuranceDetail	POST	/api/wealth/insurance/detail	200	500	BIZ_FAIL
+pages/wealth-sub/insurance-add	updateInsurance	POST	/api/wealth/insurance/update	200	200	BIZ_OK
+pages/wealth-sub/insurance-add	uploadPolicy	POST	/api/wealth/insurance/upload	200	400	BIZ_FAIL
+pages/wealth-sub/insurance-list	deleteInsurance	POST	/api/wealth/insurance/delete	200	500	BIZ_FAIL
+pages/wealth-sub/insurance-list	getInsuranceList	POST	/api/wealth/insurance/list	200	200	BIZ_OK
+pages/wealth-sub/insurance-planning	getInsurancePlanning	POST	/api/insurance/planning	200	500	BIZ_FAIL
+pages/wealth/index	getChildBadgeStats	POST	/api/badges/statistics/child	200	200	BIZ_OK
+pages/wealth/index	getCommissionSummary	POST	/api/commission/summary	200	200	BIZ_OK
+pages/wealth/index	getDailyTaskOverview	POST	/api/daily-task/overview	200	200	BIZ_OK
+pages/wealth/index	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/wealth/index	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/wealth/index	getWealthDetail	POST	/api/energy/wealth-detail	200	500	BIZ_FAIL
+pages/wealth/index	kickFamilyMemberById	POST	/api/family/member/kick	200	500	BIZ_FAIL
+pages/wealth/index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/wealth/index	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/wealth/index	getReferralSummary	POST	/api/invite/summary	200	200	BIZ_OK
+pages/wealth/index	productList	POST	/api/product/list	200	200	BIZ_OK
+pages/wealth/index	getInsuranceList	POST	/api/wealth/insurance/list	200	200	BIZ_OK
+pages/wisdom-detail/cognitive-report	getAssessmentLatestResult	POST	/api/assessment/latest-result	200	200	BIZ_OK
+pages/wisdom-detail/cognitive-report	getCognitiveNorms	POST	/api/cognitive/norms	200	500	BIZ_FAIL
+pages/wisdom-detail/cognitive-report	getCognitiveRecommendations	POST	/api/cognitive/recommendations	200	500	BIZ_FAIL
+pages/wisdom-detail/cognitive-report	createTaskFromRecommendation	POST	/api/cognitive/recommendations/create-task	200	500	BIZ_FAIL
+pages/wisdom-detail/cognitive-report	getCognitiveTrend	POST	/api/cognitive/trend	200	200	BIZ_OK
+pages/wisdom-detail/index	getAssessmentLatestResult	POST	/api/assessment/latest-result	200	200	BIZ_OK
+pages/wisdom-detail/index	getVisibleSections	POST	/api/content-sections/visible	200	500	BIZ_FAIL
+pages/wisdom-detail/index	getDanReportByChild	POST	/api/dan-assessment/report/child	200	500	BIZ_FAIL
+pages/wisdom-detail/index	getRadarData	POST	/api/dimension/radar-data	200	200	BIZ_OK
+pages/wisdom-detail/index	kickFamilyMemberById	POST	/api/family/member/kick	200	500	BIZ_FAIL
+pages/wisdom-detail/index	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+pages/wisdom-detail/index	getLatestIndicators	POST	/api/health/indicators	200	500	BIZ_FAIL
+pages/wisdom-detail/index	getGutCognitionIndicators	POST	/api/wisdom/gut-cognition	200	200	BIZ_OK
+pages/wisdom-detail/member-wisdom-detail	getEnergyOverview	POST	/api/energy/overview	200	200	BIZ_OK
+pages/wisdom-detail/member-wisdom-detail	getFamilyEnergySandbox	POST	/api/energy/sandbox	200	200	BIZ_OK
+pages/wishes/create	createWish	POST	/api/wishes/create	200	500	BIZ_FAIL
+pages/wishes/detail	getPointsBalance	POST	/api/points/balance	200	200	BIZ_OK
+pages/wishes/detail	cancelWish	POST	/api/wishes/1	200	200	BIZ_OK
+pages/wishes/detail	getWishById	POST	/api/wishes/1	200	200	BIZ_OK
+pages/wishes/detail	confirmWishReceived	POST	/api/wishes/1/confirm	200	500	BIZ_FAIL
+pages/wishes/detail	requestWishExchange	POST	/api/wishes/1/exchange	200	500	BIZ_FAIL
+pages/wishes/index	reportAppEnter	POST	/api/home/app/enter	200	500	BIZ_FAIL
+pages/wishes/index	getPointsBalance	POST	/api/points/balance	200	200	BIZ_OK
+pages/wishes/index	cancelWish	POST	/api/wishes/1	200	200	BIZ_OK
+pages/wishes/index	confirmWishReceived	POST	/api/wishes/1/confirm	200	500	BIZ_FAIL
+pages/wishes/index	requestWishExchange	POST	/api/wishes/1/exchange	200	500	BIZ_FAIL
+pages/wishes/index	createWish	POST	/api/wishes/create	200	500	BIZ_FAIL
+pages/wishes/index	getWishes	POST	/api/wishes/list	200	500	BIZ_FAIL
+store/health-alert	dismissAlert	POST	/api/health/alert/dismiss	200	500	BIZ_FAIL
+store/health-alert	getActiveAlerts	POST	/api/health/alert/list	200	200	BIZ_OK
+store/health-score	getHealthScoreInfo	POST	/api/health/score/info	200	200	BIZ_OK
+store/health-score	getHealthTimeline	POST	/api/health/timeline/list	-1	None	CONN_ERR
+store/index	switchBackVerify	POST	/api/family/user/switch-back-verify	200	500	BIZ_FAIL
+store/index	switchBackToParent	POST	/api/user/switch-back-to-parent	404	None	NOT_FOUND
+store/index	switchRole	POST	/api/user/switch-role	404	None	NOT_FOUND
+store/index	switchToChild	POST	/api/user/switch-to-child	404	None	NOT_FOUND
+store/modules/tianpan	tianpanAnnualEnergy	POST	/api/tianpan/annual-energy	200	500	BIZ_FAIL
+store/modules/tianpan	tianpanDailyFortune	POST	/api/tianpan/daily-fortune	200	200	BIZ_OK
+store/modules/tianpan	tianpanDashboard	POST	/api/tianpan/dashboard	200	500	BIZ_FAIL
+store/modules/tianpan	tianpanRelatedItems	POST	/api/tianpan/related-items	200	200	BIZ_OK
+utils/api	adminListMyActivities	POST	/api/admin/activity/list	200	200	BIZ_OK
+utils/api	getNodeTemplateList	POST	/api/admin/task-templates	200	403	BIZ_FAIL
+utils/api	silentLogin	POST	/api/auth/silent-login	200	500	BIZ_FAIL
+utils/api	getChildBadges	POST	/api/badges/child/list	200	200	BIZ_OK
+utils/api	getAvailableButlers	POST	/api/butler/available-list	200	200	BIZ_OK
+utils/api	getMyButler	POST	/api/butler/my-butler	200	200	BIZ_OK
+utils/api	selectButler	POST	/api/butler/select	200	500	BIZ_FAIL
+utils/api	payAssessmentOrder	POST	/api/dan-assessment/order/pay	200	500	BIZ_FAIL
+utils/api	approveJoinRequest	POST	/api/family/invite/approve-request	200	500	BIZ_FAIL
+utils/api	getMyJoinRequest	POST	/api/family/invite/my-request	200	200	BIZ_OK
+utils/api	getPendingJoinRequests	POST	/api/family/invite/pending-requests	200	200	BIZ_OK
+utils/api	rejectJoinRequest	POST	/api/family/invite/reject-request	200	500	BIZ_FAIL
+utils/api	getFamilyMemberList	POST	/api/family/member/list	200	200	BIZ_OK
+utils/api	createFamily	POST	/api/family/user/create-family	200	200	BIZ_OK
+utils/api	reportVirtualPayError	POST	/api/internal/virtual-pay/error-report	200	200	BIZ_OK
+utils/api	bindReferral	POST	/api/invite/bind	200	500	BIZ_FAIL
+utils/api	getReferralCode	POST	/api/invite/code	200	200	BIZ_OK
+utils/api	getOrchestrationExecutionDetail	POST	/api/orchestration/execution/detail	200	500	BIZ_FAIL
+utils/api	startOrchestrationExecution	POST	/api/orchestration/execution/start	200	500	BIZ_FAIL
+utils/api	terminateOrchestrationExecution	POST	/api/orchestration/execution/terminate	200	500	BIZ_FAIL
+utils/api	archiveOrchestrationFlow	POST	/api/orchestration/flow/archive	200	500	BIZ_FAIL
+utils/api	deleteOrchestrationFlow	POST	/api/orchestration/flow/delete	200	500	BIZ_FAIL
+utils/api	getOrchestrationFlowDetail	POST	/api/orchestration/flow/detail	200	500	BIZ_FAIL
+utils/api	getOrchestrationFlowList	POST	/api/orchestration/flow/list	200	200	BIZ_OK
+utils/api	publishOrchestrationFlow	POST	/api/orchestration/flow/publish	200	500	BIZ_FAIL
+utils/api	saveOrchestrationFlow	POST	/api/orchestration/flow/save	200	500	BIZ_FAIL
+utils/api	productList	POST	/api/product/list	200	200	BIZ_OK
+utils/api	getProfileTrend	POST	/api/profile/history	200	200	BIZ_OK
+utils/api	getMyProfile	POST	/api/profile/my	200	200	BIZ_OK
+utils/api	getChallengeProgress	POST	/api/purchase/challenge/progress	200	200	BIZ_OK
+utils/api	getRecommendList	POST	/api/recommend/list	200	200	BIZ_OK
+utils/api	getChildOverview	POST	/api/stats/child/overview	200	200	BIZ_OK
+utils/api	getTaskHistory	POST	/api/tasks/history	200	200	BIZ_OK
+utils/api	editPortrait	POST	/api/user/portrait/edit	200	500	BIZ_FAIL
+utils/api	generatePortrait	POST	/api/user/portrait/generate	-1	None	CONN_ERR
+utils/api	getPortrait	POST	/api/user/portrait/get	200	200	BIZ_OK
+utils/api	regeneratePortrait	POST	/api/user/portrait/regenerate	-1	None	CONN_ERR
+utils/profile-backfill	backfillProfile	POST	/api/user/profile/backfill	200	500	BIZ_FAIL
+utils/sso	createSsoTicket	POST	/api/auth/sso-ticket	200	500	BIZ_FAIL

+ 1187 - 0
ops_interface_smoke.py

@@ -0,0 +1,1187 @@
+# -*- coding: utf-8 -*-
+"""
+CFC 小程序端「操作接口」冒烟脚本 — 由页面功能自动派生(共 1016 个接口用例)。
+
+用法:
+    # 公开接口冒烟(无需登录)
+    python ops_interface_smoke.py --base http://<可达地址>
+
+    # 带登录态接口测试
+    export CFC_TOKEN="eyJ..."
+    python ops_interface_smoke.py --base http://<可达地址> --authed
+
+    # 路径参数占位符(默认 '1',可换成真实 ID)
+    python ops_interface_smoke.py --base ... --param-val 真实ID
+
+说明:
+    * 仅做「连通性 + 返回结构」断言(HTTP 可达、JSON 可解析、含 code/data)。
+    * 业务正确性(字段值、状态机)需结合真实数据人工/用例补充。
+    * 鉴权流程(wechat-login 等)依赖微信 code,无法纯脚本自动化,见脚本底部 AUTH_NOTE。
+"""
+
+import argparse, json, os, sys, time
+import urllib.request, urllib.error
+
+# 纯标准库实现,无需 pip install requests。
+
+
+# 自动生成的用例: (page, method, path, auth, param, fn)
+CASES = [
+    ('App', 'POST', '/api/auth/auto-login', False, False, 'autoLogin'),
+    ('App', 'POST', '/api/auth/sso-login', False, False, 'ssoLogin'),
+    ('App', 'POST', '/api/auth/verify', False, False, 'verifyToken'),
+    ('App', 'POST', '/api/family/invite/check-family', False, False, 'checkUserFamily'),
+    ('__tests__/api/api.indicator.test', 'POST', '/api/indicator/change-ranking', True, False, 'getIndicatorChangeRanking'),
+    ('__tests__/api/api.indicator.test', 'POST', '/api/indicator/correlation/list', True, False, 'getIndicatorCorrelationList'),
+    ('__tests__/api/api.indicator.test', 'POST', '/api/indicator/quick-lookup', True, False, 'getIndicatorQuickLookup'),
+    ('__tests__/api/api.indicator.test', 'POST', '/api/indicator/trend', True, False, 'getIndicatorTrend'),
+    ('__tests__/api/api.test', 'POST', '/api/ai/chat/conversations', True, False, 'aiGetConversations'),
+    ('__tests__/api/api.test', 'POST', '/api/ai/chat/send', True, False, 'aiSendMessage'),
+    ('__tests__/api/api.test', 'POST', '/api/articles/categories', False, False, 'getArticleCategories'),
+    ('__tests__/api/api.test', 'POST', '/api/articles/daily-tip', False, False, 'getDailyTip'),
+    ('__tests__/api/api.test', 'POST', '/api/articles/detail', False, False, 'getArticleDetail'),
+    ('__tests__/api/api.test', 'POST', '/api/articles/list', False, False, 'getArticleList'),
+    ('__tests__/api/api.test', 'POST', '/api/articles/related', False, False, 'getRelatedArticles'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/auto-login', False, False, 'autoLogin'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/check-phone', False, False, 'checkPhone'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/direct-register', False, False, 'directRegister'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/phone-login', False, False, 'phoneLogin'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/send-code', False, False, 'sendCode'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/set-password', False, False, 'setPassword'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/silent-login', False, False, 'silentLogin'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/verify', False, False, 'verifyToken'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/verify-password', False, False, 'verifyPassword'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/wechat-login', False, False, 'wechatLogin'),
+    ('__tests__/api/api.test', 'POST', '/api/auth/wechat-phone-login', False, False, 'wechatPhoneLogin'),
+    ('__tests__/api/api.test', 'POST', '/api/badges/child/list', True, False, 'getChildBadges'),
+    ('__tests__/api/api.test', 'POST', '/api/badges/favorite', True, False, 'toggleBadgeFavorite'),
+    ('__tests__/api/api.test', 'POST', '/api/badges/list', True, False, 'getActiveBadges'),
+    ('__tests__/api/api.test', 'POST', '/api/commission/summary', True, False, 'getCommissionSummary'),
+    ('__tests__/api/api.test', 'POST', '/api/contact/create', True, False, 'createContact'),
+    ('__tests__/api/api.test', 'POST', '/api/contact/delete', True, False, 'deleteContact'),
+    ('__tests__/api/api.test', 'POST', '/api/contact/import-phone', True, False, 'importPhoneContact'),
+    ('__tests__/api/api.test', 'POST', '/api/contact/list', True, False, 'getContactList'),
+    ('__tests__/api/api.test', 'POST', '/api/dan-assessment/child-results', True, False, 'getChildAssessmentResults'),
+    ('__tests__/api/api.test', 'POST', '/api/dan-assessment/my-results', True, False, 'getMyAssessmentResults'),
+    ('__tests__/api/api.test', 'POST', '/api/dan-assessment/order/pay', True, False, 'payAssessmentOrder'),
+    ('__tests__/api/api.test', 'POST', '/api/dan-assessment/result/record', False, False, 'recordAssessmentResult'),
+    ('__tests__/api/api.test', 'POST', '/api/energy/logs', True, False, 'getEnergyLogs'),
+    ('__tests__/api/api.test', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('__tests__/api/api.test', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('__tests__/api/api.test', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('__tests__/api/api.test', 'POST', '/api/family/user/children', True, False, 'createChild'),
+    ('__tests__/api/api.test', 'POST', '/api/family/user/children/update', True, False, 'updateChild'),
+    ('__tests__/api/api.test', 'POST', '/api/family/user/create-family', True, False, 'createFamily'),
+    ('__tests__/api/api.test', 'POST', '/api/family/user/kick', True, False, 'kickFamilyMember'),
+    ('__tests__/api/api.test', 'POST', '/api/family/user/members/update-visibility', True, False, 'updateMemberVisibility'),
+    ('__tests__/api/api.test', 'POST', '/api/game/history', True, False, 'getGameHistory'),
+    ('__tests__/api/api.test', 'POST', '/api/game/leaderboard', True, False, 'getGameLeaderboard'),
+    ('__tests__/api/api.test', 'POST', '/api/growth/record/create', True, False, 'createGrowthRecord'),
+    ('__tests__/api/api.test', 'POST', '/api/growth/record/create-with-order', True, False, 'createGrowthRecord'),
+    ('__tests__/api/api.test', 'POST', '/api/growth/record/list', True, False, 'getGrowthRecordList'),
+    ('__tests__/api/api.test', 'POST', '/api/guide/bind/invite', True, False, 'generateBindInvite'),
+    ('__tests__/api/api.test', 'POST', '/api/guide/families', True, False, 'getBoundFamilies'),
+    ('__tests__/api/api.test', 'POST', '/api/guide/messages/list', True, False, 'getGuideMessages'),
+    ('__tests__/api/api.test', 'POST', '/api/guide/orders/list', True, False, 'getGuideOrders'),
+    ('__tests__/api/api.test', 'POST', '/api/guide/packages/my', True, False, 'getGuidePackages'),
+    ('__tests__/api/api.test', 'POST', '/api/guide/register', False, False, 'registerGuide'),
+    ('__tests__/api/api.test', 'POST', '/api/guide/team/members', True, False, 'getTeamMembers'),
+    ('__tests__/api/api.test', 'POST', '/api/health/checkin/list', True, False, 'healthCheckinList'),
+    ('__tests__/api/api.test', 'POST', '/api/health/indicator/list', True, False, 'getHealthIndicatorList'),
+    ('__tests__/api/api.test', 'POST', '/api/health/report/create', True, False, 'createHealthReport'),
+    ('__tests__/api/api.test', 'POST', '/api/health/report/detail', True, False, 'getReportDetail'),
+    ('__tests__/api/api.test', 'POST', '/api/health/report/latest', True, False, 'getLatestHealthReport'),
+    ('__tests__/api/api.test', 'POST', '/api/health/report/list', True, False, 'getReportList'),
+    ('__tests__/api/api.test', 'POST', '/api/health/survey/create', True, False, 'createReportSurvey'),
+    ('__tests__/api/api.test', 'POST', '/api/health/survey/submit', True, False, 'submitReportSurvey'),
+    ('__tests__/api/api.test', 'POST', '/api/invite-card/generate', False, False, 'generateInviteCard'),
+    ('__tests__/api/api.test', 'POST', '/api/invite-card/verify', False, False, 'verifyInviteCard'),
+    ('__tests__/api/api.test', 'POST', '/api/invite/bind', True, False, 'bindReferral'),
+    ('__tests__/api/api.test', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('__tests__/api/api.test', 'POST', '/api/membership/levels', True, False, 'getMembershipLevels'),
+    ('__tests__/api/api.test', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('__tests__/api/api.test', 'POST', '/api/membership/orders', True, False, 'createOrder'),
+    ('__tests__/api/api.test', 'POST', '/api/mini-game//:var', True, True, 'getMiniGameByCode'),
+    ('__tests__/api/api.test', 'POST', '/api/mini-game/complete', True, False, 'completeMiniGame'),
+    ('__tests__/api/api.test', 'POST', '/api/mini-game/list', True, False, 'getMiniGameList'),
+    ('__tests__/api/api.test', 'POST', '/api/packages//:var/publish', True, True, 'publishPackage'),
+    ('__tests__/api/api.test', 'POST', '/api/points/balance', True, False, 'getPointsBalance'),
+    ('__tests__/api/api.test', 'POST', '/api/points/logs', True, False, 'getPointsLogs'),
+    ('__tests__/api/api.test', 'POST', '/api/product/create', False, False, 'productCreate'),
+    ('__tests__/api/api.test', 'POST', '/api/product/detail', False, False, 'productDetail'),
+    ('__tests__/api/api.test', 'POST', '/api/product/list', False, False, 'productList'),
+    ('__tests__/api/api.test', 'POST', '/api/product/order/create', False, False, 'productOrderCreate'),
+    ('__tests__/api/api.test', 'POST', '/api/rewards', True, False, 'createReward'),
+    ('__tests__/api/api.test', 'POST', '/api/rewards//:var/exchange', True, True, 'exchangeReward'),
+    ('__tests__/api/api.test', 'POST', '/api/rewards/wishlist', True, False, 'getWishlist'),
+    ('__tests__/api/api.test', 'POST', '/api/stats/child-completion', True, False, 'getChildCompletionStats'),
+    ('__tests__/api/api.test', 'POST', '/api/stats/child/overview', True, False, 'getChildOverview'),
+    ('__tests__/api/api.test', 'POST', '/api/survey/status', True, False, 'getSurveyStatus'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks//:var', True, True, 'deleteTask'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks//:var/complete', True, True, 'completeTask'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks//:var/review', True, True, 'approveTask'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks//:var/review', True, True, 'rejectTask'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks//:var/review', True, True, 'reviewTask'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks/batch-complete', True, False, 'batchCompleteTasks'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks/create', True, False, 'createTask'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks/history', True, False, 'getTaskHistory'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks/pending-review', True, False, 'getPendingReviewTasks'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks/today', True, False, 'getTodayTasksByCategory'),
+    ('__tests__/api/api.test', 'POST', '/api/tasks/today-parent', True, False, 'getTodayParentTasks'),
+    ('__tests__/api/api.test', 'POST', '/api/user/info', True, False, 'getUserInfo'),
+    ('__tests__/api/api.test', 'POST', '/api/user/join-family', True, False, 'joinFamily'),
+    ('__tests__/api/api.test', 'POST', '/api/user/switch-back-to-parent', True, False, 'switchBackToParent'),
+    ('__tests__/api/api.test', 'POST', '/api/user/switch-mode', True, False, 'switchMode'),
+    ('__tests__/api/api.test', 'POST', '/api/user/switch-to-child', True, False, 'switchToChild'),
+    ('__tests__/api/api.test', 'POST', '/api/user/update', True, False, 'updateUserInfo'),
+    ('__tests__/api/api.test', 'POST', '/api/vendor/apply', True, False, 'vendorApply'),
+    ('__tests__/api/api.test', 'POST', '/api/vendor/info', False, False, 'vendorInfo'),
+    ('__tests__/api/api.test', 'POST', '/api/vendor/status', False, False, 'vendorStatus'),
+    ('__tests__/api/api.test', 'POST', '/api/wealth/checkin/list', True, False, 'getCheckinList'),
+    ('__tests__/api/api.test', 'POST', '/api/wealth/insurance/list', False, False, 'getInsuranceList'),
+    ('__tests__/api/api.test', 'POST', '/api/wishes//:var/approve-exchange', True, True, 'approveWishExchange'),
+    ('__tests__/api/api.test', 'POST', '/api/wishes//:var/price', True, True, 'setWishPrice'),
+    ('__tests__/api/api.test', 'POST', '/api/wishes/create', True, False, 'createWish'),
+    ('__tests__/api/api.test', 'POST', '/api/wishes/list', True, False, 'getWishes'),
+    ('__tests__/api/api.test', 'POST', '/api/wishes/pending', True, False, 'getPendingWishes'),
+    ('__tests__/api/api.test', 'POST', '/api/withdrawal/apply', True, False, 'applyWithdrawal'),
+    ('__tests__/store/store.test', 'POST', '/api/user/switch-role', True, False, 'switchRole'),
+    ('components/DimensionActivities', 'POST', '/api/activity/list', False, False, 'getActivityList'),
+    ('components/DimensionActivities', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('components/DimensionProducts', 'POST', '/api/recommend/dimension-products', True, False, 'getDimensionProducts'),
+    ('components/DimensionTasks', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('components/MemberSelector', 'POST', '/api/family/member/kick', True, False, 'kickFamilyMemberById'),
+    ('components/MemberSelector', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('components/MemberSelector', 'POST', '/api/family/relationship/pairwise', True, False, 'getPairwiseRelationships'),
+    ('components/MemberSelector', 'POST', '/api/family/user/create-family', True, False, 'createFamily'),
+    ('components/OnboardingGuide', 'POST', '/api/guide-config/current', True, False, 'getGuideConfig'),
+    ('components/OnboardingProgressBar', 'POST', '/api/onboarding/progress', True, False, 'getOnboardingProgress'),
+    ('components/RelatedContent', 'POST', '/api/content/related-items', True, False, 'getContentRelated'),
+    ('components/daily-task-card', 'POST', '/api/daily-task/overview', True, False, 'getDailyTaskOverview'),
+    ('components/login-sheet', 'POST', '/api/auth/wechat-phone-login', False, False, 'wechatPhoneLogin'),
+    ('components/share-mixin', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('pages/achievement/index', 'POST', '/api/badges/child/list', True, False, 'getChildBadges'),
+    ('pages/action-detail/components/PearlDiagram', 'POST', '/api/pearl/interaction/add', True, False, 'addPearlInteraction'),
+    ('pages/action-detail/components/PearlDiagram', 'POST', '/api/pearl/item/update-priority', True, False, 'updatePearlPriority'),
+    ('pages/action-detail/contact-detail', 'POST', '/api/contact/delete', True, False, 'deleteContact'),
+    ('pages/action-detail/contact-detail', 'POST', '/api/contact/detail', True, False, 'getContactDetail'),
+    ('pages/action-detail/contact-detail', 'POST', '/api/contact/interaction', True, False, 'recordContactInteraction'),
+    ('pages/action-detail/contact-detail', 'POST', '/api/contact/update', True, False, 'updateContact'),
+    ('pages/action-detail/index', 'POST', '/api/ability/map', True, False, 'getAbilityMap'),
+    ('pages/action-detail/index', 'POST', '/api/content-sections/visible', True, False, 'getVisibleSections'),
+    ('pages/action-detail/index', 'POST', '/api/dimension/radar-data', True, False, 'getRadarData'),
+    ('pages/action-detail/index', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/action-detail/index', 'POST', '/api/energy/sandbox', True, False, 'getEnergySandbox'),
+    ('pages/action-detail/index', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/action-detail/index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/action-detail/index', 'POST', '/api/octopus/analysis/summary', True, False, 'getOctopusAnalysisSummary'),
+    ('pages/action-detail/index', 'POST', '/api/octopus/effect/key-persons', True, False, 'getOctopusEffectKeyPersons'),
+    ('pages/action-detail/index', 'POST', '/api/octopus/effect/list', True, False, 'getOctopusEffects'),
+    ('pages/action-detail/index', 'POST', '/api/pearl/item/delete', True, False, 'deletePearlResource'),
+    ('pages/action-detail/index', 'POST', '/api/pearl/reminder/list', True, False, 'getPearlReminders'),
+    ('pages/action-detail/index', 'POST', '/api/pearl/resources', True, False, 'getPearlResources'),
+    ('pages/action-detail/interaction-log', 'POST', '/api/family/interaction/add', True, False, 'addInteraction'),
+    ('pages/action-detail/interaction-log', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/action-detail/interaction-log', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/action-detail/member-action-detail', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/action-detail/member-action-detail', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/action-detail/octopus-add-effect', 'POST', '/api/octopus/effect/add', True, False, 'addOctopusEffect'),
+    ('pages/action-detail/octopus-add-effect', 'POST', '/api/octopus/key-person/bind-system-user', True, False, 'bindOctopusKeyPersonSystemUser'),
+    ('pages/action-detail/octopus-add-effect', 'POST', '/api/octopus/key-person/list', True, False, 'getOctopusKeyPersons'),
+    ('pages/action-detail/octopus-add-effect', 'POST', '/api/octopus/key-person/match-by-phone', True, False, 'matchOctopusKeyPersonByPhone'),
+    ('pages/action-detail/octopus-add-key-person', 'POST', '/api/octopus/key-person/add', True, False, 'addOctopusKeyPerson'),
+    ('pages/action-detail/octopus-add-key-person', 'POST', '/api/octopus/key-person/list', True, False, 'getOctopusKeyPersons'),
+    ('pages/action-detail/octopus-effects-list', 'POST', '/api/octopus/effect/delete', True, False, 'deleteOctopusEffect'),
+    ('pages/action-detail/octopus-effects-list', 'POST', '/api/octopus/effect/list', True, False, 'getOctopusEffects'),
+    ('pages/action-detail/pearl-add-resource', 'POST', '/api/contact/list', True, False, 'getContactList'),
+    ('pages/action-detail/pearl-add-resource', 'POST', '/api/pearl/connection-types', True, False, 'getConnectionTypes'),
+    ('pages/action-detail/pearl-add-resource', 'POST', '/api/pearl/item/add', True, False, 'addPearlResource'),
+    ('pages/action-detail/relationship-questionnaire', 'POST', '/api/family/questionnaire/generate', True, False, 'generateQuestionnaire'),
+    ('pages/action-detail/relationship-questionnaire', 'POST', '/api/family/questionnaire/submit', True, False, 'submitQuestionnaire'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/activity/cancel-registration', False, False, 'cancelActivityRegistration'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/activity/checkin', False, False, 'activityCheckin'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/activity/detail', False, False, 'getActivityDetail'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/activity/feedback/my', False, False, 'getMyActivityFeedback'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/activity/feedback/submit', False, False, 'submitActivityFeedback'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/activity/order/create', False, False, 'createActivityOrder'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/activity/registration-roster', False, False, 'getActivityRegistrationRoster'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/poster-template/list', True, False, 'getPosterTemplates'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/share/qrcode', True, False, 'getShareQrCode'),
+    ('pages/activity/activity-detail/activity-detail', 'POST', '/api/user/profile/backfill', True, False, 'backfillProfile'),
+    ('pages/activity/create', 'POST', '/api/activity/create', False, False, 'adminCreateActivity'),
+    ('pages/activity/create', 'POST', '/api/activity/detail', False, False, 'getActivityDetail'),
+    ('pages/activity/create', 'POST', '/api/activity/publish', False, False, 'adminPublishActivity'),
+    ('pages/activity/create', 'POST', '/api/activity/submit-review', False, False, 'submitActivityForReview'),
+    ('pages/activity/create', 'POST', '/api/activity/update', False, False, 'adminUpdateActivity'),
+    ('pages/activity/create', 'POST', '/api/poster-template/list', True, False, 'getPosterTemplates'),
+    ('pages/activity/index', 'POST', '/api/activity/cancel-registration', False, False, 'cancelActivityRegistration'),
+    ('pages/activity/index', 'POST', '/api/activity/checkin', False, False, 'activityCheckin'),
+    ('pages/activity/index', 'POST', '/api/activity/end', False, False, 'adminEndActivity'),
+    ('pages/activity/index', 'POST', '/api/activity/list', False, False, 'getActivityList'),
+    ('pages/activity/index', 'POST', '/api/activity/my-registrations', False, False, 'getMyActivityRegistrations'),
+    ('pages/activity/index', 'POST', '/api/activity/publish', False, False, 'adminPublishActivity'),
+    ('pages/activity/index', 'POST', '/api/activity/submit-review', False, False, 'submitActivityForReview'),
+    ('pages/activity/index', 'POST', '/api/admin/activity/list', False, False, 'adminListMyActivities'),
+    ('pages/activity/index', 'POST', '/api/admin/activity/withdraw', False, False, 'adminWithdrawActivity'),
+    ('pages/activity/index', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/activity/index', 'POST', '/api/vendor/status', False, False, 'vendorStatus'),
+    ('pages/activity/order-pay/order-pay', 'POST', '/api/activity/order/handlePaymentSuccess', False, False, 'handleActivityOrderSuccess'),
+    ('pages/activity/order-pay/order-pay', 'POST', '/api/activity/order/pay', False, False, 'payActivityOrder'),
+    ('pages/ai/chat', 'POST', '/api/ai/butler/send', False, False, 'aiSendHealthButlerMessage'),
+    ('pages/ai/chat', 'POST', '/api/ai/chat/conversations', True, False, 'aiGetConversations'),
+    ('pages/ai/chat', 'POST', '/api/ai/chat/messages', True, False, 'aiGetMessages'),
+    ('pages/ai/chat', 'POST', '/api/ai/health-coach/send', True, False, 'aiSendHealthCoachMessage'),
+    ('pages/ai/chat', 'POST', '/api/ai/nutrition/send', True, False, 'aiSendNutritionMessage'),
+    ('pages/ai/chat', 'POST', '/api/ai/transcribe', True, False, 'sttTranscribe'),
+    ('pages/ai/chat', 'POST', '/api/basic-quota/status/all', True, False, 'getAllQuotaStatus'),
+    ('pages/ai/chat', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/ai/chat', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/article-center/article-detail', 'POST', '/api/articles/audio', False, False, 'getArticleAudio'),
+    ('pages/article-center/article-detail', 'POST', '/api/articles/complete-read', False, False, 'completeArticleRead'),
+    ('pages/article-center/article-detail', 'POST', '/api/articles/detail', False, False, 'getArticleDetail'),
+    ('pages/article-center/article-detail', 'POST', '/api/articles/quiz/generate', False, False, 'generateQuiz'),
+    ('pages/article-center/article-detail', 'POST', '/api/articles/quiz/submit', False, False, 'submitQuiz'),
+    ('pages/article-center/article-detail', 'POST', '/api/articles/report-reading-time', False, False, 'reportReadingTime'),
+    ('pages/article-center/article-detail', 'POST', '/api/share/qrcode', True, False, 'getShareQrCode'),
+    ('pages/article-center/article-detail', 'POST', '/api/tasks//:var/complete', True, True, 'completeTask'),
+    ('pages/article-center/article-edit', 'POST', '/api/articles/publish', False, False, 'publishArticle'),
+    ('pages/article-center/index', 'POST', '/api/articles/featured', False, False, 'getFeaturedArticles'),
+    ('pages/article-center/index', 'POST', '/api/articles/list', False, False, 'getArticleList'),
+    ('pages/article-center/my-posts', 'POST', '/api/articles/my-posts', False, False, 'getMyPosts'),
+    ('pages/assessment-plan/detail', 'POST', '/api/dan-assessment/result/plans/list', False, False, 'getMyAssessmentPlans'),
+    ('pages/assessment-plan/list', 'POST', '/api/dan-assessment/result/plans/list', False, False, 'getMyAssessmentPlans'),
+    ('pages/assessment/apply', 'POST', '/api/assessment/appointment/create', True, False, 'createAssessmentAppointmentWithQuota'),
+    ('pages/assessment/apply', 'POST', '/api/assessment/quota/my-list', True, False, 'getAssessmentQuotas'),
+    ('pages/assessment/apply', 'POST', '/api/guide/invite-code/validate', False, False, 'validateInviteCode'),
+    ('pages/assessment/apply', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/assessment/apply', 'POST', '/api/package/available-guides', True, False, 'getAvailableGuides'),
+    ('pages/assessment/purchase', 'POST', '/api/dan-assessment/order/create', True, False, 'createAssessmentOrder'),
+    ('pages/assessment/purchase', 'POST', '/api/dan-assessment/order/detail', True, False, 'getAssessmentOrderDetail'),
+    ('pages/assessment/purchase', 'POST', '/api/guide/invite-code/validate', False, False, 'validateInviteCode'),
+    ('pages/assessment/purchase', 'POST', '/api/package/available-guides', True, False, 'getAvailableGuides'),
+    ('pages/assessment/quota', 'POST', '/api/assessment/quota/my-list', True, False, 'getAssessmentQuotas'),
+    ('pages/assessment/results', 'POST', '/api/dan-assessment/child-results', True, False, 'getChildAssessmentResults'),
+    ('pages/assessment/results', 'POST', '/api/dan-assessment/my-results', True, False, 'getMyAssessmentResults'),
+    ('pages/assessment/upload-report', 'POST', '/api/dan-assessment/result/upload', False, False, 'uploadAssessmentReport'),
+    ('pages/body-detail/dimension-detail', 'POST', '/api/dimension/history', True, False, 'getDimensionHistory'),
+    ('pages/body-detail/dimension-detail', 'POST', '/api/dimension/overview', True, False, 'getDimensionOverview'),
+    ('pages/body-detail/dimension-questionnaire', 'POST', '/api/articles/submit-answers', False, False, 'submitAnswers'),
+    ('pages/body-detail/dimension-questionnaire', 'POST', '/api/dimension/questionnaire', True, False, 'submitDimensionQuestionnaire'),
+    ('pages/body-detail/health-dimensions', 'POST', '/api/dimension/overview', True, False, 'getDimensionOverview'),
+    ('pages/body-detail/health-dimensions', 'POST', '/api/dimension/upload', True, False, 'uploadDimensionScore'),
+    ('pages/body-detail/health-report', 'POST', '/api/health/nutrition/deficiency', True, False, 'getDeficiencyAnalysis'),
+    ('pages/body-detail/index', 'POST', '/api/content-sections/visible', True, False, 'getVisibleSections'),
+    ('pages/body-detail/index', 'POST', '/api/dimension/overview', True, False, 'getDimensionOverview'),
+    ('pages/body-detail/index', 'POST', '/api/dimension/radar-data', True, False, 'getRadarData'),
+    ('pages/body-detail/index', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/body-detail/index', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/body-detail/index', 'POST', '/api/family/member/kick', True, False, 'kickFamilyMemberById'),
+    ('pages/body-detail/index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/body-detail/index', 'POST', '/api/health/gut-flora', True, False, 'getGutFloraIndicators'),
+    ('pages/body-detail/index', 'POST', '/api/health/indicators', True, False, 'getLatestIndicators'),
+    ('pages/body-detail/index', 'POST', '/api/health/report/body-abnormal', True, False, 'getBodyAbnormalIndicators'),
+    ('pages/body-detail/member-body-detail', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/body-detail/member-body-detail', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/butler/apply', 'POST', '/api/butler/apply', False, False, 'butlerApply'),
+    ('pages/butler/select', 'POST', '/api/butler/available-list', False, False, 'getAvailableButlers'),
+    ('pages/butler/select', 'POST', '/api/butler/my-butler', False, False, 'getMyButler'),
+    ('pages/butler/select', 'POST', '/api/butler/select', False, False, 'selectButler'),
+    ('pages/child/rewards', 'POST', '/api/auth/verify-password', False, False, 'verifyPassword'),
+    ('pages/child/rewards', 'POST', '/api/points/balance', True, False, 'getPointsBalance'),
+    ('pages/child/rewards', 'POST', '/api/rewards/wishlist', True, False, 'getWishlist'),
+    ('pages/child/rewards', 'POST', '/api/user/switch-back-to-parent', True, False, 'switchBackToParent'),
+    ('pages/child/tasks', 'POST', '/api/auth/verify-password', False, False, 'verifyPassword'),
+    ('pages/child/tasks', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('pages/child/tasks', 'POST', '/api/user/switch-back-to-parent', True, False, 'switchBackToParent'),
+    ('pages/cognitive-hall', 'POST', '/api/cognitive/child', True, False, 'getCognitiveChildScores'),
+    ('pages/cognitive-hall', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/cognitive-test/language-test', 'POST', '/api/cognitive/self-test', True, False, 'submitCognitiveSelfTest'),
+    ('pages/cognitive-test/logic-test', 'POST', '/api/cognitive/self-test', True, False, 'submitCognitiveSelfTest'),
+    ('pages/cognitive-test/memory-test', 'POST', '/api/cognitive/self-test', True, False, 'submitCognitiveSelfTest'),
+    ('pages/cognitive-test/perception-test', 'POST', '/api/cognitive/self-test', True, False, 'submitCognitiveSelfTest'),
+    ('pages/cognitive-test/spatial-test', 'POST', '/api/cognitive/self-test', True, False, 'submitCognitiveSelfTest'),
+    ('pages/cognitive-test/speed-test', 'POST', '/api/cognitive/self-test', True, False, 'submitCognitiveSelfTest'),
+    ('pages/dan-assessment/comparison', 'POST', '/api/dan-report/compare', True, False, 'compareDanReports'),
+    ('pages/dan-assessment/comparison', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/diet/index', 'POST', '/api/diet/ingredients/add', True, False, 'addDietIngredient'),
+    ('pages/diet/index', 'POST', '/api/diet/ingredients/recommend', True, False, 'refreshDietIngredients'),
+    ('pages/diet/index', 'POST', '/api/diet/ingredients/remove', True, False, 'removeDietIngredient'),
+    ('pages/diet/index', 'POST', '/api/diet/ingredients/search', True, False, 'searchDietFoods'),
+    ('pages/diet/index', 'POST', '/api/diet/ingredients/suggest', True, False, 'getDietIngredients'),
+    ('pages/diet/index', 'POST', '/api/diet/meals/config', True, False, 'getMealConfig'),
+    ('pages/diet/index', 'POST', '/api/diet/recommendation/generate', True, False, 'generateDietRecommendation'),
+    ('pages/diet/index', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/diet/meal-config', 'POST', '/api/diet/meals/config', True, False, 'getMealConfig'),
+    ('pages/diet/meal-config', 'POST', '/api/diet/meals/config/save', False, False, 'saveMealConfig'),
+    ('pages/diet/preferences', 'POST', '/api/diet/preferences/current-member', True, False, 'getDietPreferences'),
+    ('pages/diet/preferences', 'POST', '/api/diet/preferences/save', True, False, 'saveDietPreferences'),
+    ('pages/diet/recommendation', 'POST', '/api/diet/recommendation/complete', True, False, 'completeDietRecommendation'),
+    ('pages/diet/recommendation', 'POST', '/api/diet/recommendation/generate', True, False, 'generateDietRecommendation'),
+    ('pages/diet/recommendation', 'POST', '/api/diet/recommendation/regenerate', True, False, 'regenerateDietRecommendation'),
+    ('pages/diet/recommendation', 'POST', '/api/diet/recommendation/today', True, False, 'getDietRecommendation'),
+    ('pages/diet/record-detail', 'POST', '/api/diet/record/daily', True, False, 'getDietDailyRecords'),
+    ('pages/diet/records', 'POST', '/api/food/recommendation/members', True, False, 'getCautionFamilyMembers'),
+    ('pages/diet/records', 'POST', '/api/health/meal/alerts', True, False, 'getMealAlerts'),
+    ('pages/diet/records', 'POST', '/api/health/meal/daily', True, False, 'getMealDaily'),
+    ('pages/diet/records', 'POST', '/api/health/meal/weekly', True, False, 'getMealWeekly'),
+    ('pages/discover-detail/product-detail/product-detail', 'POST', '/api/cart/add', True, False, 'cartAdd'),
+    ('pages/discover-detail/product-detail/product-detail', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/discover-detail/product-detail/product-detail', 'POST', '/api/product/detail', False, False, 'productDetail'),
+    ('pages/discover-detail/product-detail/product-detail', 'POST', '/api/product/order/pay', False, False, 'productOrderPay'),
+    ('pages/discover-detail/product-detail/product-detail', 'POST', '/api/product/spec/map', False, False, 'productSpecMap'),
+    ('pages/discover-detail/product-detail/product-detail', 'POST', '/api/share/qrcode', True, False, 'getShareQrCode'),
+    ('pages/discover-detail/product-detail/product-detail', 'POST', '/api/special-price/info', True, False, 'getSpecialPriceInfo'),
+    ('pages/discover/circle-feed', 'POST', '/api/circle/comment/add', True, False, 'addCircleComment'),
+    ('pages/discover/circle-feed', 'POST', '/api/circle/comment/list', True, False, 'getCircleComments'),
+    ('pages/discover/circle-feed', 'POST', '/api/circle/feed', False, False, 'getCircleFeed'),
+    ('pages/discover/circle-feed', 'POST', '/api/circle/members', True, False, 'getCircleMembers'),
+    ('pages/discover/circle-feed', 'POST', '/api/circle/post/create', True, False, 'createCirclePost'),
+    ('pages/discover/circle-feed', 'POST', '/api/circle/post/delete', True, False, 'deleteCirclePost'),
+    ('pages/discover/circle-feed', 'POST', '/api/circle/post/like', True, False, 'toggleCircleLike'),
+    ('pages/discover/circles', 'POST', '/api/circle/approve', True, False, 'approveCircleMember'),
+    ('pages/discover/circles', 'POST', '/api/circle/discover', True, False, 'discoverCircles'),
+    ('pages/discover/circles', 'POST', '/api/circle/join', True, False, 'joinGeneralCircle'),
+    ('pages/discover/circles', 'POST', '/api/circle/leave', True, False, 'leaveGeneralCircle'),
+    ('pages/discover/circles', 'POST', '/api/circle/my-circles', True, False, 'getMyCircles'),
+    ('pages/discover/circles', 'POST', '/api/circle/pending-members', True, False, 'getPendingCircleMembers'),
+    ('pages/discover/circles', 'POST', '/api/circle/update', True, False, 'updateCircle'),
+    ('pages/discover/circles', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/discover/create-circle', 'POST', '/api/circle/create', True, False, 'createGeneralCircle'),
+    ('pages/discover/index', 'POST', '/api/articles/featured', False, False, 'getFeaturedArticles'),
+    ('pages/discover/index', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/discover/index', 'POST', '/api/product/list', False, False, 'productList'),
+    ('pages/energy/detail', 'POST', '/api/energy/logs', True, False, 'getEnergyLogs'),
+    ('pages/energy/index', 'POST', '/api/energy/sandbox', True, False, 'getEnergySandbox'),
+    ('pages/energy/index', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/energy/index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/family/add-member', 'POST', '/api/auth/check-phone', False, False, 'checkPhone'),
+    ('pages/family/add-member', 'POST', '/api/consent/record', True, False, 'recordConsent'),
+    ('pages/family/add-member', 'POST', '/api/family/member/add', True, False, 'addFamilyMember'),
+    ('pages/family/add-member', 'POST', '/api/family/member/update', True, False, 'updateFamilyMember'),
+    ('pages/family/manual-score-entry', 'POST', '/api/family/manual-score/submit', True, False, 'submitManualScore'),
+    ('pages/family/manual-score-entry', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/family/mbti-entry', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/family/mbti-profile', 'POST', '/api/family/mbti/profile', True, False, 'getMbtiProfile'),
+    ('pages/family/mbti-result', 'POST', '/api/family/mbti/latest', True, False, 'getMbtiLatest'),
+    ('pages/family/mbti-test', 'POST', '/api/family/mbti/questions', True, False, 'getMbtiQuestions'),
+    ('pages/family/mbti-test', 'POST', '/api/family/mbti/submit', True, False, 'submitMbti'),
+    ('pages/family/self-check', 'POST', '/api/family/self-check/submit', True, False, 'submitSelfCheck'),
+    ('pages/family/self-check-ai', 'POST', '/api/family/self-check/submit', True, False, 'submitSelfCheck'),
+    ('pages/family/self-check-entry', 'POST', '/api/family/self-check/ignore', True, False, 'ignoreSelfCheck'),
+    ('pages/family/self-check-entry', 'POST', '/api/family/self-check/status', True, False, 'getSelfCheckStatus'),
+    ('pages/family/self-check-entry', 'POST', '/api/family/self-check/trend-analysis', True, False, 'getSelfCheckTrendAnalysis'),
+    ('pages/family/self-check-result', 'POST', '/api/family/self-check/generate-plan', True, False, 'generateSelfCheckPlan'),
+    ('pages/family/self-check-result', 'POST', '/api/family/self-check/history', True, False, 'getSelfCheckHistory'),
+    ('pages/family/self-check-result', 'POST', '/api/family/self-check/latest', True, False, 'getSelfCheckLatest'),
+    ('pages/family/self-check-result', 'POST', '/api/micro-action/complete', True, False, 'microActionComplete'),
+    ('pages/family/self-check-result', 'POST', '/api/micro-action/today', True, False, 'microActionToday'),
+    ('pages/games/1a2b', 'POST', '/api/mini-game/complete', True, False, 'completeMiniGame'),
+    ('pages/games/list', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/games/list', 'POST', '/api/mini-game/list', True, False, 'getMiniGameList'),
+    ('pages/games/records', 'POST', '/api/game/history', True, False, 'getGameHistory'),
+    ('pages/games/schulte', 'POST', '/api/mini-game/complete', True, False, 'completeMiniGame'),
+    ('pages/games/stats', 'POST', '/api/game/best', True, False, 'getGameBestScores'),
+    ('pages/games/stats', 'POST', '/api/game/leaderboard', True, False, 'getGameLeaderboard'),
+    ('pages/games/stats', 'POST', '/api/game/stats', True, False, 'getGameStats'),
+    ('pages/games/sudoku', 'POST', '/api/mini-game/complete', True, False, 'completeMiniGame'),
+    ('pages/growth-main/index', 'POST', '/api/food/recommendation/caution', True, False, 'getFoodCautionList'),
+    ('pages/growth-main/index', 'POST', '/api/growth/recommendations', True, False, 'getGrowthRecommendations'),
+    ('pages/growth-main/index', 'POST', '/api/health/checkin/list', True, False, 'healthCheckinList'),
+    ('pages/growth-main/index', 'POST', '/api/health/exercise/list', True, False, 'getExerciseRecords'),
+    ('pages/growth-main/index', 'POST', '/api/health/meal/list', True, False, 'getHealthMealList'),
+    ('pages/growth-main/index', 'POST', '/api/health/sleep/list', True, False, 'getSleepRecords'),
+    ('pages/growth-main/index', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/growth-main/index', 'POST', '/api/mind/checkin/list', True, False, 'getEmotionCheckinList'),
+    ('pages/growth-main/index', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('pages/growth-main/index', 'POST', '/api/wealth/checkin/list', True, False, 'getCheckinList'),
+    ('pages/growth/caution-detail', 'POST', '/api/food/recommendation/caution', True, False, 'getFoodCautionList'),
+    ('pages/growth/caution-detail', 'POST', '/api/food/recommendation/members', True, False, 'getCautionFamilyMembers'),
+    ('pages/growth/caution-detail', 'POST', '/api/food/recommendation/trend', True, False, 'getFoodCautionTrend'),
+    ('pages/growth/caution-detail', 'POST', '/api/health/knowledge/v3/section', True, False, 'getKnowledgeSection'),
+    ('pages/growth/challenge-progress', 'POST', '/api/purchase/challenge/progress', True, False, 'getChallengeProgress'),
+    ('pages/growth/create', 'POST', '/api/growth/record/create', True, False, 'createGrowthRecord'),
+    ('pages/growth/create', 'POST', '/api/growth/record/create-with-order', True, False, 'createGrowthRecord'),
+    ('pages/growth/diet-checkin', 'POST', '/api/ai/transcribe', True, False, 'sttTranscribe'),
+    ('pages/growth/diet-checkin', 'POST', '/api/basic-quota/status/all', True, False, 'getAllQuotaStatus'),
+    ('pages/growth/exercise-checkin', 'POST', '/api/ai/transcribe', True, False, 'sttTranscribe'),
+    ('pages/growth/supplement', 'POST', '/api/growth/record/supplement', True, False, 'createGrowthSupplement'),
+    ('pages/growth/supplement', 'POST', '/api/growth/record/upload-and-parse', True, False, 'uploadAndParseReport'),
+    ('pages/growth/upload', 'POST', '/api/growth/record/create-from-upload', True, False, 'createGrowthRecordFromUpload'),
+    ('pages/growth/upload', 'POST', '/api/growth/record/upload-and-parse', True, False, 'uploadAndParseReport'),
+    ('pages/growth/upload', 'POST', '/api/product/list', False, False, 'productList'),
+    ('pages/guide/activities/detail', 'POST', '/api/guide/activities/create', True, False, 'createActivity'),
+    ('pages/guide/activities/detail', 'POST', '/api/guide/activities/detail', True, False, 'getGuideActivityDetail'),
+    ('pages/guide/activities/detail', 'POST', '/api/guide/activities/publish', True, False, 'publishActivity'),
+    ('pages/guide/activities/detail', 'POST', '/api/guide/activities/update', True, False, 'updateActivity'),
+    ('pages/guide/activities/index', 'POST', '/api/guide/activities/cancel', True, False, 'cancelActivity'),
+    ('pages/guide/activities/index', 'POST', '/api/guide/activities/delete', True, False, 'deleteActivity'),
+    ('pages/guide/activities/index', 'POST', '/api/guide/activities/list', True, False, 'getGuideActivityList'),
+    ('pages/guide/activities/index', 'POST', '/api/guide/activities/publish', True, False, 'publishActivity'),
+    ('pages/guide/bind/invite', 'POST', '/api/common/qrcode', True, False, 'generateQrCodeFromText'),
+    ('pages/guide/bind/invite', 'POST', '/api/guide/bind/confirm', True, False, 'confirmBind'),
+    ('pages/guide/bind/invite', 'POST', '/api/guide/bind/invite', True, False, 'generateBindInvite'),
+    ('pages/guide/hierarchy/index', 'POST', '/api/guide/all-child-guides', True, False, 'getAllChildGuides'),
+    ('pages/guide/hierarchy/index', 'POST', '/api/guide/child-guides', True, False, 'getChildGuides'),
+    ('pages/guide/hierarchy/index', 'POST', '/api/guide/parent-guide', True, False, 'getParentGuide'),
+    ('pages/guide/packages/create', 'POST', '/api/packages', True, False, 'createPackage'),
+    ('pages/guide/packages/detail', 'POST', '/api/packages//:var/items', True, True, 'addPackageItem'),
+    ('pages/guide/packages/index', 'POST', '/api/packages//:var/publish', True, True, 'publishPackage'),
+    ('pages/guide/packages/index', 'POST', '/api/packages//:var/submit', True, True, 'submitPackageForReview'),
+    ('pages/guide/register/index', 'POST', '/api/guide/invite-code/validate', False, False, 'validateInviteCode'),
+    ('pages/guide/register/index', 'POST', '/api/guide/register', False, False, 'registerGuide'),
+    ('pages/health-main/index', 'POST', '/api/articles/featured', False, False, 'getFeaturedArticles'),
+    ('pages/health-main/index', 'POST', '/api/cognitive/child', True, False, 'getCognitiveChildScores'),
+    ('pages/health-main/index', 'POST', '/api/cognitive/family', True, False, 'getCognitiveFamilyScores'),
+    ('pages/health-main/index', 'POST', '/api/dimension/overview', True, False, 'getDimensionOverview'),
+    ('pages/health-main/index', 'POST', '/api/emireport/latest', True, False, 'getEmiReport'),
+    ('pages/health-main/index', 'POST', '/api/energy/wealth-detail', True, False, 'getWealthDetail'),
+    ('pages/health-main/index', 'POST', '/api/family/relationship/scores', True, False, 'getRelationshipScores'),
+    ('pages/health-main/index', 'POST', '/api/health/plan/list', True, False, 'getHealthPlanList'),
+    ('pages/health-main/index', 'POST', '/api/health/report/list', True, False, 'getReportList'),
+    ('pages/health-main/index', 'POST', '/api/survey/status', True, False, 'getSurveyStatus'),
+    ('pages/health/bodyfat-confirm', 'POST', '/api/health/report/bodyfat-save', True, False, 'saveBodyFatMetrics'),
+    ('pages/health/challenge-manage', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/challenge-manage', 'POST', '/api/health/challenge/create', True, False, 'createChallenge'),
+    ('pages/health/challenge-manage', 'POST', '/api/health/challenge/history', True, False, 'getChallengeHistory'),
+    ('pages/health/challenge-manage', 'POST', '/api/health/challenge/list', True, False, 'getChallengeList'),
+    ('pages/health/challenge-manage', 'POST', '/api/health/challenge/respond', True, False, 'respondChallenge'),
+    ('pages/health/challenge-manage', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/health/components/MemberChipPicker', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/components/feedback-popup', 'POST', '/api/health/feedback/submit', False, False, 'submitFeedback'),
+    ('pages/health/doa-index', 'POST', '/api/doa/overview', True, False, 'getDoaOverview'),
+    ('pages/health/doa-stage-create', 'POST', '/api/doa/stage/create', True, False, 'createDoaStage'),
+    ('pages/health/doa-stage-create', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/doa-stage-detail', 'POST', '/api/doa/stage/cancel', True, False, 'cancelDoaStage'),
+    ('pages/health/doa-stage-detail', 'POST', '/api/doa/stage/detail', True, False, 'getDoaStageDetail'),
+    ('pages/health/doa-week-edit', 'POST', '/api/doa/stage/detail', True, False, 'getDoaStageDetail'),
+    ('pages/health/doa-week-edit', 'POST', '/api/doa/week/plan', True, False, 'submitDoaWeekPlan'),
+    ('pages/health/doa-week-edit', 'POST', '/api/doa/week/review', True, False, 'submitDoaWeekReview'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/family/member/add', True, False, 'addFamilyMember'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/food/recommendation/caution', True, False, 'getFoodCautionList'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/health/foods', True, False, 'getHealthFoods'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/health/knowledge/query', True, False, 'queryKnowledgeBase'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/health/knowledge/v3/indicator/query', True, False, 'queryIndicatorKnowledge'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/health/report/confirm', True, False, 'confirmReportPreview'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/health/report/detail', True, False, 'getReportDetail'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/health/report/discard', True, False, 'discardReportDraft'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/health/report/edit', True, False, 'editHealthReport'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/health/report/parse', True, False, 'parseReportDraft'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/indicator/change-ranking', True, False, 'getIndicatorChangeRanking'),
+    ('pages/health/gut-flora-detail', 'POST', '/api/nutrition/beijing/analysis', True, False, 'getGutFloraAnalysis'),
+    ('pages/health/gut-flora-foods-detail', 'POST', '/api/food/recommendation/members', True, False, 'getCautionFamilyMembers'),
+    ('pages/health/gut-flora-foods-detail', 'POST', '/api/food/recommendation/trend', True, False, 'getFoodCautionTrend'),
+    ('pages/health/gut-flora-foods-detail', 'POST', '/api/health/foods', True, False, 'getHealthFoods'),
+    ('pages/health/gut-flora-foods-detail', 'POST', '/api/health/knowledge/v3/food/query', True, False, 'queryFoodKnowledge'),
+    ('pages/health/gut-flora-foods-detail', 'POST', '/api/health/report/edit', True, False, 'editHealthReport'),
+    ('pages/health/gut-flora-risks-detail', 'POST', '/api/health/knowledge/query', True, False, 'queryKnowledgeBase'),
+    ('pages/health/gut-flora-risks-detail', 'POST', '/api/health/knowledge/unified/disease/query', True, False, 'queryDiseaseKnowledge'),
+    ('pages/health/gut-flora-risks-detail', 'POST', '/api/health/knowledge/v3/indicator/query', True, False, 'queryIndicatorKnowledge'),
+    ('pages/health/gut-flora-risks-detail', 'POST', '/api/health/report/detail', True, False, 'getReportDetail'),
+    ('pages/health/gut-flora-risks-detail', 'POST', '/api/health/report/edit', True, False, 'editHealthReport'),
+    ('pages/health/gut-flora-species-detail', 'POST', '/api/health/knowledge/query', True, False, 'queryKnowledgeBase'),
+    ('pages/health/gut-flora-species-detail', 'POST', '/api/health/knowledge/v3/bacteria/query', True, False, 'queryBacteriaKnowledge'),
+    ('pages/health/gut-flora-species-detail', 'POST', '/api/health/report/detail', True, False, 'getReportDetail'),
+    ('pages/health/gut-flora-species-detail', 'POST', '/api/health/report/edit', True, False, 'editHealthReport'),
+    ('pages/health/health-plan-summary', 'POST', '/api/diet/preferences/current-member', True, False, 'getDietPreferences'),
+    ('pages/health/health-plan-summary', 'POST', '/api/diet/preferences/save', True, False, 'saveDietPreferences'),
+    ('pages/health/health-plan-summary', 'POST', '/api/health-status/get', True, False, 'getHealthStatus'),
+    ('pages/health/health-plan-summary', 'POST', '/api/health-status/save', True, False, 'saveHealthStatus'),
+    ('pages/health/health-plan-summary', 'POST', '/api/health-status/signature', True, False, 'saveHealthSignature'),
+    ('pages/health/health-plan-summary', 'POST', '/api/health/plan/confirm', True, False, 'confirmPlan'),
+    ('pages/health/health-plan-summary', 'POST', '/api/health/plan/detail', True, False, 'getHealthPlanDetail'),
+    ('pages/health/health-plan-summary', 'POST', '/api/health/plan/generate', True, False, 'generateHealthPlan'),
+    ('pages/health/health-plan-summary', 'POST', '/api/health/plan/regenerate-section', True, False, 'regenerateSection'),
+    ('pages/health/health-plan-summary', 'POST', '/api/health/plan/save', True, False, 'saveHealthPlan'),
+    ('pages/health/health-plan-summary', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/health/health-status-form', 'POST', '/api/health-status/get', True, False, 'getHealthStatus'),
+    ('pages/health/health-status-form', 'POST', '/api/health-status/save', True, False, 'saveHealthStatus'),
+    ('pages/health/health-survey', 'POST', '/api/diet/preferences/current-member', True, False, 'getDietPreferences'),
+    ('pages/health/health-survey', 'POST', '/api/diet/preferences/save', True, False, 'saveDietPreferences'),
+    ('pages/health/health-survey', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/health-survey', 'POST', '/api/health-status/get', True, False, 'getHealthStatus'),
+    ('pages/health/health-survey', 'POST', '/api/health-status/save', True, False, 'saveHealthStatus'),
+    ('pages/health/health-survey', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/health/indicator-curve', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/indicator-curve', 'POST', '/api/indicator/change-ranking', True, False, 'getIndicatorChangeRanking'),
+    ('pages/health/indicator-curve', 'POST', '/api/indicator/trend', True, False, 'getIndicatorTrend'),
+    ('pages/health/indicator-quicklook', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/indicator-quicklook', 'POST', '/api/indicator/quick-lookup', True, False, 'getIndicatorQuickLookup'),
+    ('pages/health/my-feedback', 'POST', '/api/health/feedback/list', False, False, 'getMyReportFeedbacks'),
+    ('pages/health/nutrition-profile', 'POST', '/api/health/nutrition/deficiency', True, False, 'getDeficiencyAnalysis'),
+    ('pages/health/nutrition-profile', 'POST', '/api/health/nutrition/profile', True, False, 'getChildNutritionProfile'),
+    ('pages/health/physical-exam-detail', 'POST', '/api/health/report/detail', True, False, 'getReportDetail'),
+    ('pages/health/plan-list', 'POST', '/api/health/plan/delete', True, False, 'deleteHealthPlan'),
+    ('pages/health/plan-list', 'POST', '/api/health/plan/list', True, False, 'getHealthPlanList'),
+    ('pages/health/report-confirm', 'POST', '/api/family/member/add', True, False, 'addFamilyMember'),
+    ('pages/health/report-confirm', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/report-confirm', 'POST', '/api/health/report/parse', True, False, 'parseReportDraft'),
+    ('pages/health/report-detail', 'POST', '/api/family/member/add', True, False, 'addFamilyMember'),
+    ('pages/health/report-detail', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/report-detail', 'POST', '/api/health/report/edit', True, False, 'editHealthReport'),
+    ('pages/health/report-detail', 'POST', '/api/health/report/parse', True, False, 'parseReportDraft'),
+    ('pages/health/report-detail', 'POST', '/api/health/report/payload', True, False, 'getReportPayload'),
+    ('pages/health/report-list', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/report-list', 'POST', '/api/health/report/collecting-list', True, False, 'getCollectingReports'),
+    ('pages/health/report-list', 'POST', '/api/health/report/delete', True, False, 'deleteReport'),
+    ('pages/health/report-list', 'POST', '/api/health/report/list', True, False, 'getReportList'),
+    ('pages/health/report-list', 'POST', '/api/health/report/reassign', True, False, 'reassignReport'),
+    ('pages/health/report-list', 'POST', '/api/health/report/transfer/approve', True, False, 'approveReportTransfer'),
+    ('pages/health/report-list', 'POST', '/api/health/report/transfer/deny', True, False, 'denyReportTransfer'),
+    ('pages/health/report-list', 'POST', '/api/health/report/transfer/list', True, False, 'getReportTransferList'),
+    ('pages/health/report-survey', 'POST', '/api/health/survey/create', True, False, 'createReportSurvey'),
+    ('pages/health/report-survey', 'POST', '/api/health/survey/submit', True, False, 'submitReportSurvey'),
+    ('pages/health/report-survey', 'POST', '/api/survey/status', True, False, 'getSurveyStatus'),
+    ('pages/health/report-upload', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/health/report-upload', 'POST', '/api/health/report/collect/status', True, False, 'getReportCollectStatus'),
+    ('pages/health/report-upload', 'POST', '/api/health/report/transfer/request', True, False, 'requestReportTransfer'),
+    ('pages/health/report-upload', 'POST', '/api/health/report/upload-only', True, False, 'uploadReportOnly'),
+    ('pages/health/survey-history', 'POST', '/api/survey/history', True, False, 'getSurveyHistory'),
+    ('pages/health/survey-history', 'POST', '/api/survey/template/active', True, False, 'getActiveTemplates'),
+    ('pages/health/survey-questionnaire', 'POST', '/api/survey/submit', True, False, 'submitSurvey'),
+    ('pages/health/survey-questionnaire', 'POST', '/api/survey/template/active', True, False, 'getActiveTemplates'),
+    ('pages/health/teacher-service', 'POST', '/api/health-plan/available-teachers', True, False, 'getAvailableTeachers'),
+    ('pages/home-pages/child-index', 'POST', '/api/activity/list', False, False, 'getActivityList'),
+    ('pages/home-pages/child-index', 'POST', '/api/energy/logs', True, False, 'getEnergyLogs'),
+    ('pages/home-pages/child-index', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/home-pages/child-index', 'POST', '/api/energy/sandbox', True, False, 'getEnergySandbox'),
+    ('pages/home-pages/child-index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/home-pages/child-index', 'POST', '/api/guide-config/current', True, False, 'getGuideConfig'),
+    ('pages/home-pages/child-index', 'POST', '/api/guide/popup/consume', True, False, 'consumeGuidePopup'),
+    ('pages/home-pages/child-index', 'POST', '/api/guide/popup/list', True, False, 'getGuidePopupList'),
+    ('pages/home-pages/child-index', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('pages/home-pages/child-index', 'POST', '/api/unlock/status', True, False, 'getUnlockStatus'),
+    ('pages/home-pages/child-index', 'POST', '/api/user/switch-mode', True, False, 'switchMode'),
+    ('pages/home-pages/components/AdBanner', 'POST', '/api/home-banner/list', True, False, 'getHomeBanners'),
+    ('pages/home-pages/components/ContactImport', 'POST', '/api/contact/import-phone', True, False, 'importPhoneContact'),
+    ('pages/home-pages/components/DailySummary', 'POST', '/api/feedback/read', False, False, 'markFeedbackRead'),
+    ('pages/home-pages/components/DailySummary', 'POST', '/api/feedback/today', False, False, 'getTodayFeedback'),
+    ('pages/home-pages/components/MicroActionCard', 'POST', '/api/micro-action/complete', True, False, 'microActionComplete'),
+    ('pages/home-pages/components/MicroActionCard', 'POST', '/api/micro-action/today', True, False, 'microActionToday'),
+    ('pages/home-pages/member-home-detail', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/home-pages/parent-index', 'POST', '/api/activity/list', False, False, 'getActivityList'),
+    ('pages/home-pages/parent-index', 'POST', '/api/articles/featured', False, False, 'getFeaturedArticles'),
+    ('pages/home-pages/parent-index', 'POST', '/api/contact/list', True, False, 'getContactList'),
+    ('pages/home-pages/parent-index', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/home-pages/parent-index', 'POST', '/api/energy/sandbox', True, False, 'getEnergySandbox'),
+    ('pages/home-pages/parent-index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/home-pages/parent-index', 'POST', '/api/family/member/switch', True, False, 'switchToFamilyMember'),
+    ('pages/home-pages/parent-index', 'POST', '/api/family/self-check/status', True, False, 'getSelfCheckStatus'),
+    ('pages/home-pages/parent-index', 'POST', '/api/health/alert/dismiss', True, False, 'dismissAlert'),
+    ('pages/home-pages/parent-index', 'POST', '/api/health/alert/list', True, False, 'getActiveAlerts'),
+    ('pages/home-pages/parent-index', 'POST', '/api/health/challenge/list', True, False, 'getChallengeList'),
+    ('pages/home-pages/parent-index', 'POST', '/api/health/circle/list', True, False, 'getCircleList'),
+    ('pages/home-pages/parent-index', 'POST', '/api/health/circle/ranking', True, False, 'getCircleRanking'),
+    ('pages/home-pages/parent-index', 'POST', '/api/health/family/ranking', True, False, 'getFamilyRanking'),
+    ('pages/home-pages/parent-index', 'POST', '/api/invite/qrcode', True, False, 'getInviteQrCode'),
+    ('pages/home-pages/parent-index', 'POST', '/api/parent/dashboard', True, False, 'getParentDashboard'),
+    ('pages/home-pages/parent-index', 'POST', '/api/stats/child-completion', True, False, 'getChildCompletionStats'),
+    ('pages/home-pages/parent-index', 'POST', '/api/tasks//:var/review', True, True, 'approveTask'),
+    ('pages/home-pages/parent-index', 'POST', '/api/tasks//:var/review', True, True, 'rejectTask'),
+    ('pages/home-pages/parent-index', 'POST', '/api/tasks/pending-review', True, False, 'getPendingReviewTasks'),
+    ('pages/home-pages/parent-index', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('pages/home-pages/parent-index', 'POST', '/api/unlock/status', True, False, 'getUnlockStatus'),
+    ('pages/home-pages/parent-index', 'POST', '/api/wishes/pending', True, False, 'getPendingWishes'),
+    ('pages/home/app-library', 'POST', '/api/home/app-library', True, False, 'getAppLibrary'),
+    ('pages/home/app-library', 'POST', '/api/home/shortcut/reset', True, False, 'resetShortcutConfig'),
+    ('pages/home/app-library', 'POST', '/api/home/shortcut/save', True, False, 'saveShortcutConfig'),
+    ('pages/index-home/index', 'POST', '/api/activity/list', False, False, 'getActivityList'),
+    ('pages/index-home/index', 'POST', '/api/admin/notices/all', True, False, 'getNotices'),
+    ('pages/index-home/index', 'POST', '/api/articles/featured', False, False, 'getFeaturedArticles'),
+    ('pages/index-home/index', 'POST', '/api/commission/cf/list', True, False, 'getCfList'),
+    ('pages/index-home/index', 'POST', '/api/commission/cf/summary', True, False, 'getCfSummary'),
+    ('pages/index-home/index', 'POST', '/api/energy/logs', True, False, 'getEnergyLogs'),
+    ('pages/index-home/index', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/index-home/index', 'POST', '/api/energy/sandbox', True, False, 'getEnergySandbox'),
+    ('pages/index-home/index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/index-home/index', 'POST', '/api/family/member/switch', True, False, 'switchToFamilyMember'),
+    ('pages/index-home/index', 'POST', '/api/family/self-check/status', True, False, 'getSelfCheckStatus'),
+    ('pages/index-home/index', 'POST', '/api/guide-config/current', True, False, 'getGuideConfig'),
+    ('pages/index-home/index', 'POST', '/api/guide/parent-invite/accept', True, False, 'acceptParentInvite'),
+    ('pages/index-home/index', 'POST', '/api/guide/popup/consume', True, False, 'consumeGuidePopup'),
+    ('pages/index-home/index', 'POST', '/api/guide/popup/list', True, False, 'getGuidePopupList'),
+    ('pages/index-home/index', 'POST', '/api/health/challenge/list', True, False, 'getChallengeList'),
+    ('pages/index-home/index', 'POST', '/api/health/challenge/progress', True, False, 'updateChallengeProgress'),
+    ('pages/index-home/index', 'POST', '/api/health/challenge/respond', True, False, 'respondChallenge'),
+    ('pages/index-home/index', 'POST', '/api/home/app-library', True, False, 'getAppLibrary'),
+    ('pages/index-home/index', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/index-home/index', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('pages/index-home/index', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/index-home/index', 'POST', '/api/notification/list', True, False, 'getNotificationList'),
+    ('pages/index-home/index', 'POST', '/api/notification/read', True, False, 'readNotification'),
+    ('pages/index-home/index', 'POST', '/api/points/logs', True, False, 'getPointsLogs'),
+    ('pages/index-home/index', 'POST', '/api/survey/status', True, False, 'getSurveyStatus'),
+    ('pages/index-home/index', 'POST', '/api/tasks/history', True, False, 'getTaskHistory'),
+    ('pages/index-home/index', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('pages/invite/join', 'POST', '/api/family/invite/check-family', False, False, 'checkUserFamily'),
+    ('pages/invite/join', 'POST', '/api/family/invite/validate', False, False, 'validateInvitation'),
+    ('pages/invite/join', 'POST', '/api/family/invite/validate-family-code', False, False, 'validateFamilyCode'),
+    ('pages/invite/join', 'POST', '/api/invite/bind', True, False, 'bindReferral'),
+    ('pages/invite/join-form', 'POST', '/api/family/invite/request-join-by-code', False, False, 'requestJoinByCode'),
+    ('pages/invite/join-form', 'POST', '/api/user/update', True, False, 'updateUserInfo'),
+    ('pages/login/scan-login', 'POST', '/api/auth/wechat-web/scan', False, False, 'wechatWebScan'),
+    ('pages/match/street-match', 'POST', '/api/admin/families/count', True, False, 'countFamiliesByStreetIds'),
+    ('pages/match/street-match', 'POST', '/api/admin/teachers/count', True, False, 'countTeachersByStreetIds'),
+    ('pages/meal/log', 'POST', '/api/meal/log', True, False, 'logMeal'),
+    ('pages/meal/log', 'POST', '/api/meal/logs', True, False, 'getMealLogs'),
+    ('pages/meal/log', 'POST', '/api/meal/nutrition-summary', True, False, 'getNutritionSummary'),
+    ('pages/meal/preference', 'POST', '/api/nutrition/profile/get', True, False, 'getNutritionProfile'),
+    ('pages/meal/preference', 'POST', '/api/nutrition/profile/save', True, False, 'saveNutritionProfile'),
+    ('pages/meal/recommend', 'POST', '/api/meal/recommend', True, False, 'getMealRecommend'),
+    ('pages/meal/recommend', 'POST', '/api/meal/replace', True, False, 'replaceFood'),
+    ('pages/member-detail/components/member-detail-sections/action-section', 'POST', '/api/activity/list', False, False, 'getActivityList'),
+    ('pages/member-detail/components/member-detail-sections/action-section', 'POST', '/api/tasks/today', True, False, 'getTodayTasksByCategory'),
+    ('pages/member-detail/components/member-detail-sections/action-section', 'POST', '/api/wealth/checkin/stats', True, False, 'getCheckinStats'),
+    ('pages/member-detail/components/member-detail-sections/body-section', 'POST', '/api/dimension/overview', True, False, 'getDimensionOverview'),
+    ('pages/member-detail/components/member-detail-sections/body-section', 'POST', '/api/health/analysis', True, False, 'getHealthAnalysis'),
+    ('pages/member-detail/components/member-detail-sections/body-section', 'POST', '/api/wealth/checkin/list', True, False, 'getCheckinList'),
+    ('pages/member-detail/components/member-detail-sections/mind-section', 'POST', '/api/contact/list', True, False, 'getContactList'),
+    ('pages/member-detail/components/member-detail-sections/mind-section', 'POST', '/api/family/relationship/health-alerts', True, False, 'getHealthAlerts'),
+    ('pages/member-detail/components/member-detail-sections/mind-section', 'POST', '/api/family/relationship/milestones', True, False, 'getMilestones'),
+    ('pages/member-detail/components/member-detail-sections/mind-section', 'POST', '/api/family/relationship/scores', True, False, 'getRelationshipScores'),
+    ('pages/member-detail/components/member-detail-sections/wisdom-section', 'POST', '/api/assessment/history', True, False, 'getAssessmentHistory'),
+    ('pages/member-detail/components/member-detail-sections/wisdom-section', 'POST', '/api/assessment/latest-result', True, False, 'getAssessmentLatestResult'),
+    ('pages/member-detail/member-detail', 'POST', '/api/activity/list', False, False, 'getActivityList'),
+    ('pages/member-detail/member-detail', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/member-detail/report-detail', 'POST', '/api/health/report/detail', True, False, 'getReportDetail'),
+    ('pages/membership/benefits', 'POST', '/api/membership/benefits', True, False, 'getMembershipBenefits'),
+    ('pages/membership/benefits', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/membership/index', 'POST', '/api/butler/my-butler', False, False, 'getMyButler'),
+    ('pages/membership/index', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/membership/index', 'POST', '/api/membership/benefits', True, False, 'getMembershipBenefits'),
+    ('pages/membership/index', 'POST', '/api/membership/compare', True, False, 'getMembershipCompare'),
+    ('pages/membership/index', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/membership/pay', 'POST', '/api/coupon/list', True, False, 'getCouponList'),
+    ('pages/membership/pay', 'POST', '/api/membership/orders', True, False, 'createOrder'),
+    ('pages/membership/pay', 'POST', '/api/membership/orders/continue', True, False, 'nextOrder'),
+    ('pages/membership/pay', 'POST', '/api/membership/plans', True, False, 'getMembershipPlans'),
+    ('pages/membership/result', 'POST', '/api/coupon/join-rules', True, False, 'getJoinCouponRules'),
+    ('pages/membership/result', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/membership/result', 'POST', '/api/membership/orders/continue', True, False, 'nextOrder'),
+    ('pages/membership/upgrade', 'POST', '/api/coupon/join-rules', True, False, 'getJoinCouponRules'),
+    ('pages/membership/upgrade', 'POST', '/api/membership/compare', True, False, 'getMembershipCompare'),
+    ('pages/membership/upgrade', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/membership/upgrade', 'POST', '/api/membership/plans', True, False, 'getMembershipPlans'),
+    ('pages/membership/upgrade', 'POST', '/api/membership/upgrade-records', True, False, 'getUpgradeRecords'),
+    ('pages/mind-detail/articles', 'POST', '/api/articles/categories', False, False, 'getArticleCategories'),
+    ('pages/mind-detail/articles', 'POST', '/api/articles/list', False, False, 'getArticleList'),
+    ('pages/mind-detail/components/PsychCrisisBanner', 'POST', '/api/health/alert/dismiss', True, False, 'dismissAlert'),
+    ('pages/mind-detail/emotion-report', 'POST', '/api/emireport/latest', True, False, 'getEmiReport'),
+    ('pages/mind-detail/family-dashboard', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/mind-detail/family-dashboard', 'POST', '/api/mind/fortune', True, False, 'getFamilyFortune'),
+    ('pages/mind-detail/family-dashboard', 'POST', '/api/mind/fortune/month', True, False, 'getMonthFortune'),
+    ('pages/mind-detail/family-dashboard', 'POST', '/api/mind/fortune/reports', True, False, 'getFortuneReports'),
+    ('pages/mind-detail/family-dashboard', 'POST', '/api/mind/fortune/week', True, False, 'getWeekFortune'),
+    ('pages/mind-detail/index', 'POST', '/api/contact/list', True, False, 'getContactList'),
+    ('pages/mind-detail/index', 'POST', '/api/content-sections/visible', True, False, 'getVisibleSections'),
+    ('pages/mind-detail/index', 'POST', '/api/dan-assessment/report/child', True, False, 'getDanReportByChild'),
+    ('pages/mind-detail/index', 'POST', '/api/dimension/radar-data', True, False, 'getRadarData'),
+    ('pages/mind-detail/index', 'POST', '/api/emireport/latest', True, False, 'getEmiReport'),
+    ('pages/mind-detail/index', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/mind-detail/index', 'POST', '/api/energy/sandbox', True, False, 'getEnergySandbox'),
+    ('pages/mind-detail/index', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/mind-detail/index', 'POST', '/api/family/member/kick', True, False, 'kickFamilyMemberById'),
+    ('pages/mind-detail/index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/mind-detail/index', 'POST', '/api/family/relationship/health-alerts', True, False, 'getHealthAlerts'),
+    ('pages/mind-detail/index', 'POST', '/api/family/relationship/milestones', True, False, 'getMilestones'),
+    ('pages/mind-detail/index', 'POST', '/api/health/indicators', True, False, 'getLatestIndicators'),
+    ('pages/mind-detail/index', 'POST', '/api/mind/fortune', True, False, 'getFamilyFortune'),
+    ('pages/mind-detail/innate-portrait', 'POST', '/api/mind/innate/reading', True, False, 'getInnateReading'),
+    ('pages/mind-detail/innate-trajectory', 'POST', '/api/mind/innate/trajectory', True, False, 'getInnateTrajectory'),
+    ('pages/mind-detail/member-mind-detail', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/mind-detail/member-mind-detail', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/mind-detail/training', 'POST', '/api/game/stats', True, False, 'getGameStats'),
+    ('pages/notification/index', 'POST', '/api/notification/list', True, False, 'getNotificationList'),
+    ('pages/notification/index', 'POST', '/api/notification/read', True, False, 'readNotification'),
+    ('pages/nutritionist/apply', 'POST', '/api/nutritionist/apply', False, False, 'nutritionistApply'),
+    ('pages/orchestration/editor', 'POST', '/api/admin/task-templates', True, False, 'getNodeTemplateList'),
+    ('pages/orchestration/editor', 'POST', '/api/orchestration/flow/detail', True, False, 'getOrchestrationFlowDetail'),
+    ('pages/orchestration/editor', 'POST', '/api/orchestration/flow/publish', True, False, 'publishOrchestrationFlow'),
+    ('pages/orchestration/editor', 'POST', '/api/orchestration/flow/save', True, False, 'saveOrchestrationFlow'),
+    ('pages/orchestration/index', 'POST', '/api/orchestration/flow/archive', True, False, 'archiveOrchestrationFlow'),
+    ('pages/orchestration/index', 'POST', '/api/orchestration/flow/delete', True, False, 'deleteOrchestrationFlow'),
+    ('pages/orchestration/index', 'POST', '/api/orchestration/flow/list', True, False, 'getOrchestrationFlowList'),
+    ('pages/orchestration/index', 'POST', '/api/orchestration/flow/publish', True, False, 'publishOrchestrationFlow'),
+    ('pages/orchestration/node-edit', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/parent/appointments', 'POST', '/api/dan-assessment/appointment/cancel', True, False, 'cancelAppointment'),
+    ('pages/parent/appointments', 'POST', '/api/dan-assessment/appointment/user', True, False, 'getMyAppointments'),
+    ('pages/parent/child-detail', 'POST', '/api/tasks/pending-review', True, False, 'getPendingReviewTasks'),
+    ('pages/parent/child-detail', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('pages/parent/child-detail', 'POST', '/api/wishes/pending', True, False, 'getPendingWishes'),
+    ('pages/parent/plans/detail', 'POST', '/api/guide/plans/detail', True, False, 'getGuidePlanDetail'),
+    ('pages/parent/plans/index', 'POST', '/api/guide/plans/family-list', True, False, 'listFamilyPlans'),
+    ('pages/parent/wishes/index', 'POST', '/api/wishes//:var/approve-exchange', True, True, 'approveWishExchange'),
+    ('pages/parent/wishes/index', 'POST', '/api/wishes//:var/fulfill', True, True, 'markWishFulfilled'),
+    ('pages/parent/wishes/index', 'POST', '/api/wishes//:var/price', True, True, 'setWishPrice'),
+    ('pages/parent/wishes/index', 'POST', '/api/wishes//:var/reject', True, True, 'rejectWish'),
+    ('pages/parent/wishes/index', 'POST', '/api/wishes/list', True, False, 'getWishes'),
+    ('pages/parent/wishes/index', 'POST', '/api/wishes/pending', True, False, 'getPendingWishes'),
+    ('pages/pearl-reminders/index', 'POST', '/api/pearl/interaction/add', True, False, 'addPearlInteraction'),
+    ('pages/pearl-reminders/index', 'POST', '/api/pearl/reminder/list', True, False, 'getPearlReminders'),
+    ('pages/profile-extra/coupons', 'POST', '/api/coupon/claim', True, False, 'claimCoupon'),
+    ('pages/profile-extra/coupons', 'POST', '/api/coupon/exchangeable', True, False, 'getExchangeableCoupons'),
+    ('pages/profile-extra/coupons', 'POST', '/api/coupon/my', True, False, 'getMyCoupons'),
+    ('pages/profile-extra/coupons', 'POST', '/api/family-platform/exchange-coupon', True, False, 'exchangeCouponByCf'),
+    ('pages/profile-extra/family-members', 'POST', '/api/family/invite/generate', False, False, 'generateFamilyInvite'),
+    ('pages/profile-extra/family-members', 'POST', '/api/family/invite/pending-requests', False, False, 'getPendingJoinRequests'),
+    ('pages/profile-extra/family-members', 'POST', '/api/family/member/kick', True, False, 'kickFamilyMemberById'),
+    ('pages/profile-extra/family-members', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/profile-extra/family-members', 'POST', '/api/family/member/switch', True, False, 'switchToFamilyMember'),
+    ('pages/profile-extra/family-members', 'POST', '/api/health/report/member-permission/revoke', True, False, 'revokeReportMemberPermission'),
+    ('pages/profile-extra/family-members', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/profile-extra/gates', 'POST', '/api/unlock/status', True, False, 'getUnlockStatus'),
+    ('pages/profile-extra/onboarding', 'POST', '/api/onboarding/claim', True, False, 'claimOnboardingReward'),
+    ('pages/profile-extra/onboarding', 'POST', '/api/onboarding/progress', True, False, 'getOnboardingProgress'),
+    ('pages/profile-main/profile', 'POST', '/api/auth/verify-password', False, False, 'verifyPassword'),
+    ('pages/profile-main/profile', 'POST', '/api/cart/count', True, False, 'cartCount'),
+    ('pages/profile-main/profile', 'POST', '/api/commission/my-referrer', True, False, 'getMyReferrer'),
+    ('pages/profile-main/profile', 'POST', '/api/commission/team/consumption', True, False, 'getTeamConsumption'),
+    ('pages/profile-main/profile', 'POST', '/api/energy/sandbox', True, False, 'getEnergySandbox'),
+    ('pages/profile-main/profile', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/profile-main/profile', 'POST', '/api/health/challenge/list', True, False, 'getChallengeList'),
+    ('pages/profile-main/profile', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('pages/profile-main/profile', 'POST', '/api/invite/summary', True, False, 'getReferralSummary'),
+    ('pages/profile-main/profile', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/profile-main/profile', 'POST', '/api/product/order/my/counts', False, False, 'getOrderCounts'),
+    ('pages/profile-main/profile', 'POST', '/api/share/qrcode', True, False, 'getShareQrCode'),
+    ('pages/profile-main/profile', 'POST', '/api/tasks/today', True, False, 'getTodayTasksByCategory'),
+    ('pages/profile-main/profile', 'POST', '/api/user/info', True, False, 'getUserInfo'),
+    ('pages/profile-main/profile', 'POST', '/api/user/profile-stats', True, False, 'getProfileStats'),
+    ('pages/profile-main/profile', 'POST', '/api/vendor/status', False, False, 'vendorStatus'),
+    ('pages/profile/components/ProfileHeader', 'POST', '/api/auth/verify-password', False, False, 'verifyPassword'),
+    ('pages/profile/components/ProfileHeader', 'POST', '/api/family/member/switch', True, False, 'switchToFamilyMember'),
+    ('pages/profile/components/ProfileMenu', 'POST', '/api/auth/set-password', False, False, 'setPassword'),
+    ('pages/profile/components/ProfileMenu', 'POST', '/api/auth/verify-password', False, False, 'verifyPassword'),
+    ('pages/profile/components/ProfileMenu', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/profile/components/ProfileMenu', 'POST', '/api/family/user/members/update-visibility', True, False, 'updateMemberVisibility'),
+    ('pages/profile/components/ProfileMenu', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('pages/profile/components/ProfileMenu', 'POST', '/api/vendor/status', False, False, 'vendorStatus'),
+    ('pages/profile/components/ProfileStats', 'POST', '/api/user/action-stats', True, False, 'getUserActionStats'),
+    ('pages/profile/index', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('pages/profile/message-history', 'POST', '/api/commission/cf/list', True, False, 'getCfList'),
+    ('pages/profile/message-history', 'POST', '/api/energy/logs', True, False, 'getEnergyLogs'),
+    ('pages/profile/message-history', 'POST', '/api/notification/list', True, False, 'getNotificationList'),
+    ('pages/profile/message-history', 'POST', '/api/notification/read', True, False, 'readNotification'),
+    ('pages/profile/message-history', 'POST', '/api/points/logs', True, False, 'getPointsLogs'),
+    ('pages/profile/portrait-edit', 'POST', '/api/energy/sandbox', True, False, 'getEnergySandbox'),
+    ('pages/profile/portrait-edit', 'POST', '/api/user/portrait/edit', True, False, 'editPortrait'),
+    ('pages/profile/portrait-edit', 'POST', '/api/user/portrait/get', True, False, 'getPortrait'),
+    ('pages/profile/report-detail', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('pages/profile/report-management', 'POST', '/api/report-summary/list', True, False, 'getReportSummaryList'),
+    ('pages/profile/service-role-apply', 'POST', '/api/service-role/my-apply', True, False, 'getMyServiceRoleApply'),
+    ('pages/profile/service-role-apply', 'POST', '/api/service-role/upload-image', True, False, 'uploadServiceRoleImage'),
+    ('pages/promotion/commission', 'POST', '/api/commission/cf/list', True, False, 'getCfList'),
+    ('pages/promotion/commission', 'POST', '/api/commission/cf/summary', True, False, 'getCfSummary'),
+    ('pages/promotion/index', 'POST', '/api/commission/cf/summary', True, False, 'getCfSummary'),
+    ('pages/promotion/index', 'POST', '/api/earnings/admin/distribute', True, False, 'distributeToMember'),
+    ('pages/promotion/index', 'POST', '/api/earnings/admin/toggle-member', True, False, 'toggleMemberBalance'),
+    ('pages/promotion/index', 'POST', '/api/earnings/admin/withdraw', True, False, 'withdrawFamilyEarnings'),
+    ('pages/promotion/index', 'POST', '/api/earnings/family/summary', True, False, 'getFamilyEarningsSummary'),
+    ('pages/promotion/index', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('pages/promotion/index', 'POST', '/api/invite/summary', True, False, 'getReferralSummary'),
+    ('pages/promotion/invite', 'POST', '/api/invite/bind', True, False, 'bindReferral'),
+    ('pages/promotion/invite', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('pages/promotion/invite', 'POST', '/api/invite/list', True, False, 'getReferralList'),
+    ('pages/promotion/invite', 'POST', '/api/invite/milestone/claim', True, False, 'claimInviteMilestone'),
+    ('pages/promotion/invite', 'POST', '/api/invite/milestone/list', True, False, 'getInviteMilestones'),
+    ('pages/promotion/invite', 'POST', '/api/invite/qrcode', True, False, 'getInviteQrCode'),
+    ('pages/promotion/invite', 'POST', '/api/invite/summary', True, False, 'getReferralSummary'),
+    ('pages/promotion/leaderboard', 'POST', '/api/leaderboard/my-rank', True, False, 'getLeaderboardMyRank'),
+    ('pages/promotion/leaderboard', 'POST', '/api/leaderboard/top', True, False, 'getLeaderboardTop'),
+    ('pages/promotion/team', 'POST', '/api/commission/cf/rate', True, False, 'getCfRate'),
+    ('pages/promotion/team', 'POST', '/api/commission/my-referrer', True, False, 'getMyReferrer'),
+    ('pages/promotion/team', 'POST', '/api/commission/team/consumption', True, False, 'getTeamConsumption'),
+    ('pages/promotion/team', 'POST', '/api/commission/team/consumption-curve', True, False, 'getTeamAllMembersConsumptionCurve'),
+    ('pages/promotion/team', 'POST', '/api/commission/team/growth-curve', True, False, 'getTeamGrowthCurve'),
+    ('pages/promotion/team', 'POST', '/api/commission/team/l1-consumption-curve', True, False, 'getTeamL1ConsumptionCurve'),
+    ('pages/promotion/team', 'POST', '/api/commission/team/list', True, False, 'getTeamList'),
+    ('pages/promotion/team', 'POST', '/api/commission/team/tree', True, False, 'getTeamTree'),
+    ('pages/promotion/withdraw', 'POST', '/api/commission/summary', True, False, 'getCommissionSummary'),
+    ('pages/promotion/withdraw', 'POST', '/api/withdrawal/apply', True, False, 'applyWithdrawal'),
+    ('pages/promotion/withdraw', 'POST', '/api/withdrawal/history', True, False, 'getWithdrawalHistory'),
+    ('pages/psych-assessment/index', 'POST', '/api/cognitive/child', True, False, 'getCognitiveChildScores'),
+    ('pages/psych-assessment/index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/psych-assessment/quiz', 'POST', '/api/cognitive/self-test', True, False, 'submitCognitiveSelfTest'),
+    ('pages/reminder-config/index', 'POST', '/api/task/reminder-config/get', True, False, 'getReminderConfig'),
+    ('pages/reminder-config/index', 'POST', '/api/task/reminder-config/save', True, False, 'saveReminderConfig'),
+    ('pages/rewards/badge', 'POST', '/api/badges/child/list', True, False, 'getChildBadges'),
+    ('pages/rewards/badge', 'POST', '/api/badges/favorite', True, False, 'toggleBadgeFavorite'),
+    ('pages/rewards/badge', 'POST', '/api/badges/list', True, False, 'getActiveBadges'),
+    ('pages/rewards/badge', 'POST', '/api/badges/ranking/family', True, False, 'getFamilyBadgeRanking'),
+    ('pages/rewards/badge', 'POST', '/api/badges/statistics/child', True, False, 'getChildBadgeStats'),
+    ('pages/rewards/rewards', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/rewards/rewards', 'POST', '/api/parent/wishlist', True, False, 'createParentWishlist'),
+    ('pages/rewards/rewards', 'POST', '/api/parent/wishlist//:var/exchange', True, True, 'exchangeParentWishlist'),
+    ('pages/rewards/rewards', 'POST', '/api/parent/wishlist/list', True, False, 'getParentWishlist'),
+    ('pages/rewards/rewards', 'POST', '/api/points/balance', True, False, 'getPointsBalance'),
+    ('pages/rewards/rewards', 'POST', '/api/rewards', True, False, 'createReward'),
+    ('pages/rewards/rewards', 'POST', '/api/rewards//:var/exchange', True, True, 'exchangeReward'),
+    ('pages/rewards/rewards', 'POST', '/api/rewards/wishlist', True, False, 'getWishlist'),
+    ('pages/rewards/rewards', 'POST', '/api/user/info', True, False, 'getUserInfo'),
+    ('pages/share/index', 'POST', '/api/share/family-footprint', True, False, 'getFamilyFootprint'),
+    ('pages/shop/cart/cart', 'POST', '/api/membership/gift-membership-progress', True, False, 'getGiftMembershipProgress'),
+    ('pages/shop/cart/cart', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/coupon/apply', True, False, 'applyCoupon'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/coupon/checkout-list', True, False, 'getCouponCheckoutList'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/coupon/list', True, False, 'getCouponList'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/family-platform/balance', True, False, 'getFamilyPlatformBalance'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/family-platform/exchange-coupon', True, False, 'exchangeCouponByCf'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/membership/gift-membership-progress', True, False, 'getGiftMembershipProgress'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/product/detail', False, False, 'productDetail'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/product/purchase_fields/required', False, False, 'getProductRequiredFields'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/shop/discount/calculate', False, False, 'shopDiscountCalculate'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/special-price/info', True, False, 'getSpecialPriceInfo'),
+    ('pages/shop/checkout/checkout', 'POST', '/api/user/address/list', True, False, 'addressList'),
+    ('pages/shop/consignee-edit/consignee-edit', 'POST', '/api/consignee/detail', True, False, 'consigneeDetail'),
+    ('pages/shop/consignee-edit/consignee-edit', 'POST', '/api/consignee/save', True, False, 'consigneeSave'),
+    ('pages/shop/consignee-list/consignee-list', 'POST', '/api/consignee/delete', True, False, 'consigneeDelete'),
+    ('pages/shop/consignee-list/consignee-list', 'POST', '/api/consignee/list', True, False, 'consigneeList'),
+    ('pages/shop/index/index', 'POST', '/api/cart/count', True, False, 'cartCount'),
+    ('pages/shop/index/index', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/shop/index/index', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/shop/index/index', 'POST', '/api/product/list', False, False, 'productList'),
+    ('pages/shop/index/index', 'POST', '/api/shop/category/tree', False, False, 'goodsCategory'),
+    ('pages/shop/order-detail/order-detail', 'POST', '/api/product/order/cancel', False, False, 'productOrderCancel'),
+    ('pages/shop/order-detail/order-detail', 'POST', '/api/product/order/confirm', False, False, 'productOrderConfirm'),
+    ('pages/shop/order-detail/order-detail', 'POST', '/api/product/order/detail', False, False, 'productOrderDetail'),
+    ('pages/shop/order-list/order-list', 'POST', '/api/product/order/cancel', False, False, 'productOrderCancel'),
+    ('pages/shop/order-list/order-list', 'POST', '/api/product/order/confirm', False, False, 'productOrderConfirm'),
+    ('pages/shop/order-list/order-list', 'POST', '/api/product/order/my', False, False, 'productOrderMy'),
+    ('pages/shop/order-list/order-list', 'POST', '/api/product/order/my/counts', False, False, 'productOrderCounts'),
+    ('pages/shop/payment/payment', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/shop/search/search', 'POST', '/api/product/list', False, False, 'productList'),
+    ('pages/stats/completion-rate', 'POST', '/api/stats/child-completion', True, False, 'getChildCompletionStats'),
+    ('pages/stats/completion-rate', 'POST', '/api/stats/family-completion', True, False, 'getFamilyCompletionStats'),
+    ('pages/stats/index', 'POST', '/api/stats/child/overview', True, False, 'getChildOverview'),
+    ('pages/tasks/create-task', 'POST', '/api/tasks/create', True, False, 'createTask'),
+    ('pages/tasks/create-task', 'POST', '/api/tasks/list', True, False, 'getTaskListForPicker'),
+    ('pages/tasks/daily-tasks', 'POST', '/api/growth-task/claim', True, False, 'claimGrowthTaskReward'),
+    ('pages/tasks/daily-tasks', 'POST', '/api/growth-task/list', True, False, 'getGrowthTaskList'),
+    ('pages/tasks/review', 'POST', '/api/tasks//:var/review', True, True, 'approveTask'),
+    ('pages/tasks/review', 'POST', '/api/tasks//:var/review', True, True, 'rejectTask'),
+    ('pages/tasks/review', 'POST', '/api/tasks/history', True, False, 'getTaskHistory'),
+    ('pages/tasks/review', 'POST', '/api/tasks/pending-review', True, False, 'getPendingReviewTasks'),
+    ('pages/tasks/tasks', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/tasks/tasks', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/tasks/tasks', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/tasks/tasks', 'POST', '/api/tasks//:var/complete', True, True, 'completeTask'),
+    ('pages/tasks/tasks', 'POST', '/api/tasks/accept', True, False, 'acceptTask'),
+    ('pages/tasks/tasks', 'POST', '/api/tasks/create', True, False, 'createTask'),
+    ('pages/tasks/tasks', 'POST', '/api/tasks/my-pending', True, False, 'getMyPendingTasks'),
+    ('pages/tasks/tasks', 'POST', '/api/tasks/today', True, False, 'getTodayTasks'),
+    ('pages/teacher/chat', 'POST', '/api/guide/messages/list', True, False, 'getGuideMessages'),
+    ('pages/teacher/families', 'POST', '/api/guide/families', True, False, 'getBoundFamilies'),
+    ('pages/teacher/messages', 'POST', '/api/guide/messages/list', True, False, 'getGuideMessages'),
+    ('pages/teacher/orders', 'POST', '/api/guide/orders/list', True, False, 'getGuideOrders'),
+    ('pages/teacher/orders', 'POST', '/api/guide/orders/stats', True, False, 'getOrderStats'),
+    ('pages/teacher/plan-create', 'POST', '/api/guide/training-plans/create', True, False, 'createTrainingPlan'),
+    ('pages/teacher/plan-detail', 'POST', '/api/guide/families//:var/plans//:var/update', True, True, 'updateGuidePlanContent'),
+    ('pages/teacher/plan-detail', 'POST', '/api/guide/families//:var/plans/pending', True, True, 'getGuidePendingPlans'),
+    ('pages/teacher/plan-list', 'POST', '/api/guide/training-plans/list', True, False, 'getTrainingPlanList'),
+    ('pages/teacher/review-family', 'POST', '/api/guide/families//:var/children//:var/pending-review', True, True, 'getGuideChildPendingTasks'),
+    ('pages/teacher/review-family', 'POST', '/api/guide/families//:var/members', True, True, 'getGuideFamilyMembers'),
+    ('pages/teacher/review-family', 'POST', '/api/guide/families//:var/plans/pending', True, True, 'getGuidePendingPlans'),
+    ('pages/teacher/review-family', 'POST', '/api/guide/families//:var/tasks//:var/review', True, True, 'reviewGuideTask'),
+    ('pages/teacher/review-family', 'POST', '/api/tasks//:var/review', True, True, 'reviewTask'),
+    ('pages/teacher/review-workbench', 'POST', '/api/guide/families/my-families', True, False, 'getGuideMyFamilies'),
+    ('pages/teacher/service-tasks', 'POST', '/api/tasks//:var/complete', True, True, 'completeTask'),
+    ('pages/teacher/teacher-profile', 'POST', '/api/guide/parent-invite/generate', True, False, 'generateParentInvite'),
+    ('pages/teacher/teacher-profile', 'POST', '/api/user/switch-role', True, False, 'switchRole'),
+    ('pages/teacher/team', 'POST', '/api/guide/invite-code/generate', False, False, 'generateInviteCode'),
+    ('pages/teacher/team', 'POST', '/api/guide/team/invite-code/generate', True, False, 'generateTeamInviteCode'),
+    ('pages/teacher/team', 'POST', '/api/guide/team/members', True, False, 'getTeamMembers'),
+    ('pages/teacher/team', 'POST', '/api/guide/team/stats', True, False, 'getTeamStats'),
+    ('pages/user-edit/user-edit', 'POST', '/api/auth/direct-register', False, False, 'directRegister'),
+    ('pages/user-edit/user-edit', 'POST', '/api/family/invite/request-join-by-code', False, False, 'requestJoinByCode'),
+    ('pages/user-edit/user-edit', 'POST', '/api/family/user/create-family', True, False, 'createFamily'),
+    ('pages/user-edit/user-edit', 'POST', '/api/membership/my', True, False, 'getMyMembership'),
+    ('pages/user-edit/user-edit', 'POST', '/api/user/info', True, False, 'getUserInfo'),
+    ('pages/user-edit/user-edit', 'POST', '/api/user/update', True, False, 'updateUserInfo'),
+    ('pages/vendor/apply', 'POST', '/api/vendor/apply', True, False, 'vendorApply'),
+    ('pages/vendor/center', 'POST', '/api/vendor/info', False, False, 'vendorInfo'),
+    ('pages/vendor/center', 'POST', '/api/vendor/status', False, False, 'vendorStatus'),
+    ('pages/vendor/order-review/order-review', 'POST', '/api/product/order/detail', False, False, 'productOrderDetail'),
+    ('pages/vendor/order-review/order-review', 'POST', '/api/product/order/review/update', False, False, 'productOrderReviewUpdate'),
+    ('pages/vendor/orders/orders', 'POST', '/api/product/order/confirm', False, False, 'productOrderConfirm'),
+    ('pages/vendor/orders/orders', 'POST', '/api/product/order/vendor', False, False, 'productOrderVendor'),
+    ('pages/vendor/product-edit/product-edit', 'POST', '/api/product/create', False, False, 'productCreate'),
+    ('pages/vendor/product-edit/product-edit', 'POST', '/api/product/detail', False, False, 'productDetail'),
+    ('pages/vendor/product-edit/product-edit', 'POST', '/api/product/update', False, False, 'productUpdate'),
+    ('pages/vendor/products/products', 'POST', '/api/product/my', False, False, 'productMy'),
+    ('pages/vendor/products/products', 'POST', '/api/product/shelve', False, False, 'productShelve'),
+    ('pages/vendor/team-customers/team-customers', 'POST', '/api/admin/supply-team/customers', True, False, 'getTeamCustomers'),
+    ('pages/vendor/team-system/team-system', 'POST', '/api/admin/supply-hierarchy/my', True, False, 'getVendorHierarchyInfo'),
+    ('pages/vendor/team-system/team-system', 'POST', '/api/admin/supply-system/my-system', True, False, 'getVendorSystemInfo'),
+    ('pages/vendor/team-system/team-system', 'POST', '/api/admin/supply-team/customers', True, False, 'getVendorTeamCustomers'),
+    ('pages/vendor/team-system/team-system', 'POST', '/api/admin/supply-team/members', True, False, 'getVendorTeamMembers'),
+    ('pages/wealth-cf/index', 'GET', '/api/cf/balance', True, False, 'getCfBalance'),
+    ('pages/wealth-cf/index', 'GET', '/api/cf/family-coupons', True, False, 'getFamilyCoupons'),
+    ('pages/wealth-cf/index', 'GET', '/api/cf/logs', True, False, 'getCfLogs'),
+    ('pages/wealth-cf/index', 'POST', '/api/coupon/exchangeable', True, False, 'getExchangeableCoupons'),
+    ('pages/wealth-cf/index', 'POST', '/api/family-platform/exchange-coupon', True, False, 'exchangeCouponByCf'),
+    ('pages/wealth-detail/member-wealth-detail', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/wealth-detail/member-wealth-detail', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/wealth-sub/checkin', 'POST', '/api/wealth/checkin/create', True, False, 'createCheckin'),
+    ('pages/wealth-sub/checkin', 'POST', '/api/wealth/checkin/delete', True, False, 'deleteCheckin'),
+    ('pages/wealth-sub/checkin', 'POST', '/api/wealth/checkin/list', True, False, 'getCheckinList'),
+    ('pages/wealth-sub/checkin', 'POST', '/api/wealth/checkin/stats', True, False, 'getCheckinStats'),
+    ('pages/wealth-sub/insurance-add', 'POST', '/api/wealth/insurance/create', False, False, 'createInsurance'),
+    ('pages/wealth-sub/insurance-add', 'POST', '/api/wealth/insurance/detail', False, False, 'getInsuranceDetail'),
+    ('pages/wealth-sub/insurance-add', 'POST', '/api/wealth/insurance/update', False, False, 'updateInsurance'),
+    ('pages/wealth-sub/insurance-add', 'POST', '/api/wealth/insurance/upload', False, False, 'uploadPolicy'),
+    ('pages/wealth-sub/insurance-list', 'POST', '/api/wealth/insurance/delete', False, False, 'deleteInsurance'),
+    ('pages/wealth-sub/insurance-list', 'POST', '/api/wealth/insurance/list', False, False, 'getInsuranceList'),
+    ('pages/wealth-sub/insurance-planning', 'POST', '/api/insurance/planning', True, False, 'getInsurancePlanning'),
+    ('pages/wealth/index', 'POST', '/api/badges/statistics/child', True, False, 'getChildBadgeStats'),
+    ('pages/wealth/index', 'POST', '/api/commission/summary', True, False, 'getCommissionSummary'),
+    ('pages/wealth/index', 'POST', '/api/daily-task/overview', True, False, 'getDailyTaskOverview'),
+    ('pages/wealth/index', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/wealth/index', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/wealth/index', 'POST', '/api/energy/wealth-detail', True, False, 'getWealthDetail'),
+    ('pages/wealth/index', 'POST', '/api/family/member/kick', True, False, 'kickFamilyMemberById'),
+    ('pages/wealth/index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/wealth/index', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/wealth/index', 'POST', '/api/invite/summary', True, False, 'getReferralSummary'),
+    ('pages/wealth/index', 'POST', '/api/product/list', False, False, 'productList'),
+    ('pages/wealth/index', 'POST', '/api/wealth/insurance/list', False, False, 'getInsuranceList'),
+    ('pages/wisdom-detail/cognitive-report', 'POST', '/api/assessment/latest-result', True, False, 'getAssessmentLatestResult'),
+    ('pages/wisdom-detail/cognitive-report', 'POST', '/api/cognitive/norms', True, False, 'getCognitiveNorms'),
+    ('pages/wisdom-detail/cognitive-report', 'POST', '/api/cognitive/recommendations', True, False, 'getCognitiveRecommendations'),
+    ('pages/wisdom-detail/cognitive-report', 'POST', '/api/cognitive/recommendations/create-task', True, False, 'createTaskFromRecommendation'),
+    ('pages/wisdom-detail/cognitive-report', 'POST', '/api/cognitive/trend', True, False, 'getCognitiveTrend'),
+    ('pages/wisdom-detail/index', 'POST', '/api/assessment/latest-result', True, False, 'getAssessmentLatestResult'),
+    ('pages/wisdom-detail/index', 'POST', '/api/content-sections/visible', True, False, 'getVisibleSections'),
+    ('pages/wisdom-detail/index', 'POST', '/api/dan-assessment/report/child', True, False, 'getDanReportByChild'),
+    ('pages/wisdom-detail/index', 'POST', '/api/dimension/radar-data', True, False, 'getRadarData'),
+    ('pages/wisdom-detail/index', 'POST', '/api/family/member/kick', True, False, 'kickFamilyMemberById'),
+    ('pages/wisdom-detail/index', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('pages/wisdom-detail/index', 'POST', '/api/health/indicators', True, False, 'getLatestIndicators'),
+    ('pages/wisdom-detail/index', 'POST', '/api/wisdom/gut-cognition', True, False, 'getGutCognitionIndicators'),
+    ('pages/wisdom-detail/member-wisdom-detail', 'POST', '/api/energy/overview', True, False, 'getEnergyOverview'),
+    ('pages/wisdom-detail/member-wisdom-detail', 'POST', '/api/energy/sandbox', True, False, 'getFamilyEnergySandbox'),
+    ('pages/wishes/create', 'POST', '/api/wishes/create', True, False, 'createWish'),
+    ('pages/wishes/detail', 'POST', '/api/points/balance', True, False, 'getPointsBalance'),
+    ('pages/wishes/detail', 'POST', '/api/wishes//:var', True, True, 'cancelWish'),
+    ('pages/wishes/detail', 'POST', '/api/wishes//:var', True, True, 'getWishById'),
+    ('pages/wishes/detail', 'POST', '/api/wishes//:var/confirm', True, True, 'confirmWishReceived'),
+    ('pages/wishes/detail', 'POST', '/api/wishes//:var/exchange', True, True, 'requestWishExchange'),
+    ('pages/wishes/index', 'POST', '/api/home/app/enter', True, False, 'reportAppEnter'),
+    ('pages/wishes/index', 'POST', '/api/points/balance', True, False, 'getPointsBalance'),
+    ('pages/wishes/index', 'POST', '/api/wishes//:var', True, True, 'cancelWish'),
+    ('pages/wishes/index', 'POST', '/api/wishes//:var/confirm', True, True, 'confirmWishReceived'),
+    ('pages/wishes/index', 'POST', '/api/wishes//:var/exchange', True, True, 'requestWishExchange'),
+    ('pages/wishes/index', 'POST', '/api/wishes/create', True, False, 'createWish'),
+    ('pages/wishes/index', 'POST', '/api/wishes/list', True, False, 'getWishes'),
+    ('store/health-alert', 'POST', '/api/health/alert/dismiss', True, False, 'dismissAlert'),
+    ('store/health-alert', 'POST', '/api/health/alert/list', True, False, 'getActiveAlerts'),
+    ('store/health-score', 'POST', '/api/health/score/info', True, False, 'getHealthScoreInfo'),
+    ('store/health-score', 'POST', '/api/health/timeline/list', True, False, 'getHealthTimeline'),
+    ('store/index', 'POST', '/api/family/user/switch-back-verify', True, False, 'switchBackVerify'),
+    ('store/index', 'POST', '/api/user/switch-back-to-parent', True, False, 'switchBackToParent'),
+    ('store/index', 'POST', '/api/user/switch-role', True, False, 'switchRole'),
+    ('store/index', 'POST', '/api/user/switch-to-child', True, False, 'switchToChild'),
+    ('store/modules/tianpan', 'POST', '/api/tianpan/annual-energy', False, False, 'tianpanAnnualEnergy'),
+    ('store/modules/tianpan', 'POST', '/api/tianpan/daily-fortune', False, False, 'tianpanDailyFortune'),
+    ('store/modules/tianpan', 'POST', '/api/tianpan/dashboard', False, False, 'tianpanDashboard'),
+    ('store/modules/tianpan', 'POST', '/api/tianpan/related-items', False, False, 'tianpanRelatedItems'),
+    ('utils/api', 'POST', '/api/admin/activity/list', False, False, 'adminListMyActivities'),
+    ('utils/api', 'POST', '/api/admin/task-templates', True, False, 'getNodeTemplateList'),
+    ('utils/api', 'POST', '/api/auth/silent-login', False, False, 'silentLogin'),
+    ('utils/api', 'POST', '/api/badges/child/list', True, False, 'getChildBadges'),
+    ('utils/api', 'POST', '/api/butler/available-list', False, False, 'getAvailableButlers'),
+    ('utils/api', 'POST', '/api/butler/my-butler', False, False, 'getMyButler'),
+    ('utils/api', 'POST', '/api/butler/select', False, False, 'selectButler'),
+    ('utils/api', 'POST', '/api/dan-assessment/order/pay', True, False, 'payAssessmentOrder'),
+    ('utils/api', 'POST', '/api/family/invite/approve-request', False, False, 'approveJoinRequest'),
+    ('utils/api', 'POST', '/api/family/invite/my-request', False, False, 'getMyJoinRequest'),
+    ('utils/api', 'POST', '/api/family/invite/pending-requests', False, False, 'getPendingJoinRequests'),
+    ('utils/api', 'POST', '/api/family/invite/reject-request', False, False, 'rejectJoinRequest'),
+    ('utils/api', 'POST', '/api/family/member/list', True, False, 'getFamilyMemberList'),
+    ('utils/api', 'POST', '/api/family/user/create-family', True, False, 'createFamily'),
+    ('utils/api', 'POST', '/api/internal/virtual-pay/error-report', True, False, 'reportVirtualPayError'),
+    ('utils/api', 'POST', '/api/invite/bind', True, False, 'bindReferral'),
+    ('utils/api', 'POST', '/api/invite/code', True, False, 'getReferralCode'),
+    ('utils/api', 'POST', '/api/orchestration/execution/detail', True, False, 'getOrchestrationExecutionDetail'),
+    ('utils/api', 'POST', '/api/orchestration/execution/start', True, False, 'startOrchestrationExecution'),
+    ('utils/api', 'POST', '/api/orchestration/execution/terminate', True, False, 'terminateOrchestrationExecution'),
+    ('utils/api', 'POST', '/api/orchestration/flow/archive', True, False, 'archiveOrchestrationFlow'),
+    ('utils/api', 'POST', '/api/orchestration/flow/delete', True, False, 'deleteOrchestrationFlow'),
+    ('utils/api', 'POST', '/api/orchestration/flow/detail', True, False, 'getOrchestrationFlowDetail'),
+    ('utils/api', 'POST', '/api/orchestration/flow/list', True, False, 'getOrchestrationFlowList'),
+    ('utils/api', 'POST', '/api/orchestration/flow/publish', True, False, 'publishOrchestrationFlow'),
+    ('utils/api', 'POST', '/api/orchestration/flow/save', True, False, 'saveOrchestrationFlow'),
+    ('utils/api', 'POST', '/api/product/list', False, False, 'productList'),
+    ('utils/api', 'POST', '/api/profile/history', True, False, 'getProfileTrend'),
+    ('utils/api', 'POST', '/api/profile/my', True, False, 'getMyProfile'),
+    ('utils/api', 'POST', '/api/purchase/challenge/progress', True, False, 'getChallengeProgress'),
+    ('utils/api', 'POST', '/api/recommend/list', True, False, 'getRecommendList'),
+    ('utils/api', 'POST', '/api/stats/child/overview', True, False, 'getChildOverview'),
+    ('utils/api', 'POST', '/api/tasks/history', True, False, 'getTaskHistory'),
+    ('utils/api', 'POST', '/api/user/portrait/edit', True, False, 'editPortrait'),
+    ('utils/api', 'POST', '/api/user/portrait/generate', True, False, 'generatePortrait'),
+    ('utils/api', 'POST', '/api/user/portrait/get', True, False, 'getPortrait'),
+    ('utils/api', 'POST', '/api/user/portrait/regenerate', True, False, 'regeneratePortrait'),
+    ('utils/profile-backfill', 'POST', '/api/user/profile/backfill', True, False, 'backfillProfile'),
+    ('utils/sso', 'POST', '/api/auth/sso-ticket', False, False, 'createSsoTicket'),
+]
+
+
+def _call(base, method, path, token=None, timeout=10, host=None, body=b'{}'):
+    url = base.rstrip('/') + path
+    headers = {'Content-Type': 'application/json'}
+    if host:
+        headers['Host'] = host
+    if token:
+        headers['Authorization'] = 'Bearer ' + token
+    data = body if method in ('POST', 'PUT', 'DELETE') else None
+    req = urllib.request.Request(url, data=data, headers=headers, method=method)
+    try:
+        with urllib.request.urlopen(req, timeout=timeout) as resp:
+            body = resp.read().decode('utf-8', 'replace')
+            code = resp.getcode()
+    except urllib.error.HTTPError as e:
+        try:
+            body = e.read().decode('utf-8', 'replace') if e.fp else ''
+        except Exception:
+            body = ''
+        code = e.code
+    except urllib.error.URLError as e:
+        class _R:
+            status_code = -1
+            text = str(getattr(e, 'reason', e))
+            def json(self):
+                raise ValueError('no json')
+        return _R()
+    except Exception as e:
+        class _R:
+            status_code = -1
+            text = '%s: %s' % (type(e).__name__, str(e)[:80])
+            def json(self):
+                raise ValueError('no json')
+        return _R()
+    class _R:
+        status_code = code
+        text = body
+        def json(self):
+            return json.loads(self.text)
+    return _R()
+
+
+def auto_login(base, host=None, timeout=10):
+    """测试模式(wechat.test-mode=true)下 wechat-login 空 body 即可换 token。"""
+    r = _call(base, 'POST', '/api/auth/wechat-login', timeout=timeout, host=host)
+    try:
+        d = r.json()
+        tok = (d.get('data') or {}).get('token')
+        if tok:
+            print(f'[登录] 获取 token 成功 userId={(d.get("data") or {}).get("userId")} '
+                  f'role={(d.get("data") or {}).get("role")}')
+            return tok
+    except Exception:
+        pass
+    print('[登录] 失败:未取到 token')
+    return None
+
+
+def _classify(r):
+    """返回 (http_code, biz_code, 类别)"""
+    if r.status_code == -1:
+        return -1, None, 'CONN_ERR'
+    try:
+        d = r.json()
+    except Exception:
+        return r.status_code, None, 'NON_JSON'
+    biz = d.get('code') if isinstance(d, dict) else None
+    if r.status_code == 404:
+        return r.status_code, biz, 'NOT_FOUND'
+    if r.status_code >= 500:
+        return r.status_code, biz, 'SERVER_ERR'
+    if biz == 200:
+        return r.status_code, biz, 'BIZ_OK'
+    return r.status_code, biz, 'BIZ_FAIL'
+
+
+def main():
+    ap = argparse.ArgumentParser(description='CFC 小程序端接口冒烟测试')
+    ap.add_argument('--base', default=os.getenv('CFC_BASE', 'http://192.168.16.251'))
+    ap.add_argument('--host', default=os.getenv('CFC_HOST', 'cfc.iwintrue.com'),
+                    help='Host 头(域名 DNS 不通时用 IP + Host 头访问)')
+    ap.add_argument('--auto-login', action='store_true', help='自动调 wechat-login 换 token')
+    ap.add_argument('--authed', action='store_true', help='同时跑登录态接口')
+    ap.add_argument('--param-val', default='1', help='路径参数 :var 的占位值')
+    ap.add_argument('--timeout', type=int, default=10)
+    ap.add_argument('--only-page', default='', help='只跑指定页面路由(含匹配即可)')
+    ap.add_argument('--report', default='', help='结果报告输出文件')
+    args = ap.parse_args()
+
+    token = os.getenv('CFC_TOKEN')
+    if args.auto_login and not token:
+        token = auto_login(args.base, host=args.host, timeout=args.timeout)
+
+    print(f'目标: {args.base}   Host: {args.host}   token: {"有" if token else "无"}')
+    stats = {}
+    rows = []
+    pages = set()
+    for page, method, path, auth, param, fn in CASES:
+        if args.only_page and args.only_page not in page:
+            continue
+        if not token and auth:
+            continue
+        real = path.replace(':var', args.param_val)
+        while '//' in real:
+            real = real.replace('//', '/')
+        r = _call(args.base, method, real, token=token, timeout=args.timeout, host=args.host)
+        http_code, biz, cat = _classify(r)
+        stats[cat] = stats.get(cat, 0) + 1
+        pages.add(page)
+        rows.append((page, fn, method, real, http_code, biz, cat))
+
+    total = len(rows)
+    print(f'\n=== 汇总 ===')
+    print(f'页面覆盖: {len(pages)}   已请求接口: {total}')
+    for k in ('BIZ_OK', 'BIZ_FAIL', 'NOT_FOUND', 'SERVER_ERR', 'NON_JSON', 'CONN_ERR'):
+        if k in stats:
+            print(f'  {k:<10}: {stats[k]}')
+    ok = stats.get('BIZ_OK', 0)
+    print(f'业务成功率(code=200): {ok}/{total} = {ok * 100 // total if total else 0}%')
+
+    if args.report:
+        with open(args.report, 'w', encoding='utf-8') as f:
+            f.write('page\tfn\tmethod\tpath\thttp\tbiz\tcat\n')
+            for row in rows:
+                f.write('\t'.join(str(x) for x in row) + '\n')
+        print(f'报告已写入: {args.report}')
+
+    # 打印非 BIZ_OK 的前若干条
+    bad = [r for r in rows if r[6] != 'BIZ_OK']
+    if bad:
+        print(f'\n=== 非成功样例(前 30 条 / 共 {len(bad)})===')
+        for row in bad[:30]:
+            print(f'  [{row[6]:<10}] {row[3]:<52} HTTP {row[4]} biz={row[5]}  ({row[0]} :: {row[1]})')
+
+
+if __name__ == '__main__':
+    main()
+
+"""
+AUTH_NOTE —— 鉴权流程(需微信上下文,无法纯脚本自动化,给出 curl 模板):
+
+1) 微信登录(需 uni.login 的 code,只能在小程序内拿):
+   curl -X POST {BASE}/api/auth/wechat-login \
+     -H 'Content-Type: application/json' \
+     -d '{"code":"<wx_login_code>","nickname":"test","avatar":"https://..."}'
+
+2) 手机号验证码登录(需微信 phoneCode):
+   curl -X POST {BASE}/api/auth/phone-login \
+     -H 'Content-Type: application/json' -d '{"phone":"...","code":"..."}'
+
+3) 测试环境直接注册(api.js 中 directRegister,标"测试环境"):
+   curl -X POST {BASE}/api/auth/direct-register \
+     -H 'Content-Type: application/json' -d '{"phone":"13800000000","nickname":"smoke"}'
+
+拿到 token 后:export CFC_TOKEN=<token>,再跑 --authed。
+"""