SOURCE_API_ACTIONS,共 91 个唯一 action。POST /api/functions/xiaoshu/app/gateway。{ "token": "<sessionToken>", "params": { "action": "...", ... } };执行器会占用顶层 id,业务参数不得放在顶层。公开接口可省略 token,但仍必须保留 params。migration_blocked: <原因> 显式拒绝。网关额外保留 content_add_zt、product_add、product_upd 3 个后端兼容阻塞项,因此线上 blocked 对象共 65 项;矩阵不存在未覆盖的源码 action。| 领域 | action |
|---|---|
| 版本 | app_update |
| 内容 | content_get, content_list, content_list_llk, content_uphis, node_get, node_list |
| 商品只读 | product_get, product_list, product_stock_list |
| 账号 | user_get, user_info_name, user_list, user_login_passwd, user_register, user_update, user_update_pwd, user_update_pwdall, e_user_list |
| 学习/预约 | e_add_words, e_ck_list, e_get_21list, e_order_detail, e_order_tongji, e_record_detail, e_words_list, stu_record_update_v2, user_point_list |
| 反馈 | guestbook_add |
已实测 content_list 在公司帐套下返回 92,435 条,modelId=56 返回 108 条。读取用 Psql 并强制 company=7pIbDBJmKx,所有客户端输入均使用参数化查询。
content_list 已按 CommonModel.itemId = addon.id 重建下列规范化联表:
| ModelID | 旧表 | 规范化类 | 已核验数量 |
|---|---|---|---|
| 52 | ZL_C_ck |
VocabularyWord |
89,620 |
| 53 | ZL_C_lxjl |
PracticeRecord |
816 |
| 54 | ZL_C_order |
CourseAppointment |
345 |
| 56 | ZL_C_ss |
DailyStudyRecord |
108 |
| 58 | ZL_C_kcbd |
CourseBinding |
55 |
| 59 | ZL_C_skjl |
LessonRecord |
82 |
| 60 | ZL_C_gywjl |
MemoryPracticeRecord |
1,380 |
| 61 | ZL_C_cpda |
AssessmentProfile |
14 |
myfield/myfield2 只允许白名单字段和参数化等值过滤,orders 只允许已映射字段的 ASC/DESC 或旧 NEWID() 随机排序。Model 53/54/56/58/59/60/61 的列表与详情禁止匿名读取,非管理员仅能访问本人或指派给自己的学员记录。
学习专用只读接口已按旧页面的真实响应形状重建:
e_record_detail:由 Model 56 学习记录解析 xxqs,再按其中的 GeneralID 联查 Model 52 与 VocabularyWord,保持原顺序并为每项返回旧页面要求的 detail[0]。e_words_list:只返回指定用户 PracticeRecord.jrscb=1 的生词,按 scid -> CommonModel.generalId -> VocabularyWord.id 联查词库详情,不再误返回 89,620 条全量词库。e_ck_list:按一个或多个词库单元返回 Model 52 词条,并按 用户 + 单词 GeneralID 联查 PracticeRecord.xxcs/jrscb,恢复旧页面的 w_learned 与生词状态。e_add_words:验证词库 ID 与用户归属后批量更新 PracticeRecord;save=1 递增学习次数,ifnew=1/0 加入/移出生词,首次学习会创建带云端来源标识的进度记录。stu_record_update_v2:按 预约 GeneralID + 学员 ID 幂等新增或更新 Model 56;校验预约归属和词库 ID,根据 xxqs.check 重算 learned/ygg/djq。线上运行时实际未暴露文档中的 Psql.transaction,因此新记录采用安全整数范围内的高熵数字 ID,并顺序写入 DailyStudyRecord 与 CommonModel;任一步失败都会补偿删除已创建记录,避免孤立数据。e_order_detail:以预约内容 GeneralID 联查 CourseAppointment,返回数组契约、旧字段别名和可恢复的课程名称。e_order_tongji:按交付包 Pages/API/WXAPP.cshtml 原公式恢复六个字符串字段。陪练按 LessonRecord.jsmz 统计课型 1/2/3,佣金分别为 20/40/40、时长分别为 0.5/1/1 小时;学员按 CourseAppointment.szyh 且 dszt>10 统计课型和时长,t_total 继续按旧逻辑统计 PracticeRecord.yhid。e_get_21list:以 MemoryPracticeRecord 为主记录,联查 Model 60、原学习记录和课程节点;学员按 yhid、教练收入列表按 plid 隔离。迁移数据没有保存复习收入金额,也没有提供可验证的计价公式,因此 e_get_21list_tj 改为显式 501;收入列表仍返回复习事实,但用 incomeRuleUnavailable=true 标记金额不可恢复,不伪造收入。
| 能力 | action | 缺失项 |
|---|---|---|
| 购物车 | cart_list |
无购物车类 |
| 优惠券 | coupon_list, coupon_usrgot_add, coupon_usrgot_list |
无优惠券实例和用户领取关系类 |
| 订单/物流 | order_delivery, order_get, order_list, order_signfor, user_shop_order, user_shop_sales |
无订单、商品明细、销售和物流类 |
| 订单评价 | order_comment_add, order_comment_list |
无评价类 |
| 支付 | payment_cart, payment_cart_again, payment_success |
无订单/支付明细类 |
| 发票 | invoice_add, invoice_del, invoice_get, invoice_list, invoice_upd |
无发票类 |
| 收货地址 | receaddr_add, receaddr_del, receaddr_get, receaddr_list, receaddr_upd |
无地址类 |
| 提现账户 | user_bank_add, user_bank_del, user_bank_get, user_bank_list |
无提现账户类 |
| 收藏 | user_star_add, user_star_del, user_star_is |
无用户收藏关系类 |
| 会员订单 | user_group_usr_supply, user_group_usr_upgrade |
无会员购买/续费订单类 |
| 投票 | vote_add, vote_ask, vote_question |
无可证明的投票记录类 |
| 部门 | user_dept |
无可证明的用户部门关系 |
上述接口要恢复 1:1 能力,必须先补建 Schema,并取得可迁移的旧数据;仅有空表或空成功响应不能算迁移完成。
| 能力 | action | 需要的前置条件 |
|---|---|---|
| 短信验证码 | mcode_send, user_login_mobile, user_register_mobile |
新短信服务商凭据、验证码存储和限流 |
| 微信授权 | user_sync2 |
新微信容器流程和凭据 |
| 资金/积分 | user_cash_add, user_cash_list, user_coin_recharge, user_exp_transfer, user_money_recharge, user_money_transfer |
支付凭据、不可变事务账本和业务规则 |
| 复习收入 | e_get_21list_tj |
旧迁移数据中的收入金额字段或经业务方确认的计价公式 |
| 支付密码 | user_update_paypwd |
独立哈希服务和重置流程 |
| 实名认证 | user_rnauth_add, user_rnauth_get, user_rnauth_upd |
合规审核、加密存储和访问审计 |
| 能力 | action | 待确认/待实现 |
|---|---|---|
| 内容写入 | content_add, content_update |
CommonModel 与 addon 表双写事务 |
| 商品写入 | product_del, product_sale_change, product_stock_change |
门店管理员权限与库存账本 |
| 单元进度 | unit_record_update |
旧源码在接口调用前无条件 return;需业务方确认废弃或提供新的聚合规则 |
| 预约状态 | e_order_update_v2 |
旧状态 11 同时扣减 _User.legacyUserData 课时、写余额账本并按学习记录创建最多 15 条抗遗忘双表记录;云运行时实际没有事务,需完成可补偿的一致性方案 |
| 发布 | pub_add, pub_list |
Pub 业务类型、审核与可见范围 |
Angular H5 已启用混合迁移路由:
user_login_passwd 已优先调用云函数:已完成 Parse 密码迁移的账号保存真实 sessionToken 并用该会话读取 user_get;尚未完成密码重置的旧账号在云函数返回 401/403 时自动回退旧登录,不中断存量用户。app_update、node_list、node_get 已切换至云函数。e_add_words、e_ck_list、e_order_detail、e_order_tongji、e_record_detail、e_words_list、e_get_21list、stu_record_update_v2 已切换至云函数;旧会话继续留在旧端点,避免存量账号在密码重置前中断。content_list 和 Model 52 公开词库已切换;已持有 Parse 会话的用户会把字段白名单内的 Model 53/54/56/58/59/60/61 addon 查询切到云函数,仍使用旧会话的存量账号自动保留旧端点。GeneralID/NodeID/Title 等字段别名。product_list 尚未切换:当前 Product 类只有库存变体字段,缺少旧页依赖的商品名称、价格、图片和正文联表。在 62 个阻塞 action 中仍包含订单、支付和预约结束等主流程时,直接全量切换会导致页面大面积中断。剩余切换条件是:
sessionToken,再一次性切换到 /api/functions/xiaoshu/app/gateway。