lesson-workflow-release-2026-10-12.md 2.7 KB

2026-10-12 课次流程云函数生产发布验收

  • 验收时间:2026-10-12T12:12:13+08:00(Asia/Shanghai)。
  • 目标:https://server.xiaoshu.pro,应用 7pIbDBJmKx_main。
  • 发布前实时版本:2026-09-mobile-teaching-v1。
  • 发布后实时版本:2026-10-11-lesson-workflow-v2。

已部署云函数

路径 Function ID 发布后代码 SHA-256
xiaoshu/ops/gateway-v3 BG8QMhGY4f f8af26fc0a61e9d1ce2e9617d1fb87d931961deb69cd3e85b5fa718631887b75
xiaoshu/ops/gateway qp12CGLe9m f8af26fc0a61e9d1ce2e9617d1fb87d931961deb69cd3e85b5fa718631887b75
xiaoshu/app/gateway D3F5Zj8saa d46ea81835f4d5d32a21f011b31cf1b465676d2ae83fb52baea60af16dcaf5e3

数据库迁移与修复

生产原本缺少课次流程的三张表、相关数据库函数和状态回退保护触发器,也缺少 xs_appointment_day / xs_appointment_valid_at。已运行修正后的 scripts/migrate-lesson-workflow.mjs --apply,补齐依赖和课次流程对象,未回填历史业务数据。

首次真实验收发现 LessonRecord.pf 在线上是 numeric 类型。已修复 SQL 的空值判断与评分写入类型,并在本地使用 numeric 类型覆盖首次评价和重复评价。最终再次读取线上函数定义,确认评分修复已实际安装。

验证结果

  • cloud:validate:11 个函数定义通过语法检查。
  • test:lesson-workflow:9 / 9 通过,包括 numeric 评分列、失败事务回滚、越权、幂等、日期和旧流程回退保护。
  • smoke-mobile-teaching-flow.mjs:生产隔离账号 40 项检查全部通过,输出 ONLINE_SMOKE_PASSED、FIXTURES_CLEANED。
  • migration_status.implemented 已包含 app_lesson_complete 和 app_lesson_review。
  • 真实课次详情已验证 allowedActions 为数组、blockedReason 为字符串、validToday 为布尔值、serverNow 为可解析时间。
  • 同日提前开课、并发结课仅扣一次、报告可读、学生仅首次评价生效、后台唯一上课记录与消费预留对账均通过。
  • 取消预约、其他用户越权、旧客户端回退均拒绝;充值与结课并发余额无覆盖、最后一节课竞争和退款预留互斥均通过。
  • 本次临时迁移/核验函数已删除,隔离业务记录和用户已清理。审计记录保留。

证据与边界

部署前函数备份、数据库函数定义与最终验收日志保存在本机受限目录 /Users/mac/.local/state/xiaoshu/cloud-releases/2026-10-12-lesson-workflow-v2/。不包含执行凭据。

本次完成的是生产云函数与数据库课次流程发布、接口和事务验收。没有执行前端发布、真机验收或旧系统同步桥部署。