ソースを参照

docs(release): verify profile and credit receipt rollout without balance changes

彭峰 5 時間 前
親
コミット
654aa33da2

+ 117 - 0
docs/qa/member-profile-credit-release-2026-11-15.json

@@ -0,0 +1,117 @@
+{
+  "released": true,
+  "releaseId": "admin-profile-credit-a15201f7c201-20261115T092833888Z",
+  "commit": "a15201f7c20182800f7cdb04bd4127dd18c2b87c",
+  "frontendBaseCommit": "0c206db7d528749cb5b27a0f4fe81a54d3305f07",
+  "adminTests": {
+    "passed": 401,
+    "failed": 0
+  },
+  "profileAndFinancialTests": {
+    "passed": 11,
+    "failed": 0
+  },
+  "buildPassed": true,
+  "cloudDefinitionsValidated": 11,
+  "public": [
+    {
+      "role": "admin",
+      "releaseId": "admin-profile-credit-a15201f7c201-20261115T092833888Z",
+      "commit": "a15201f7c20182800f7cdb04bd4127dd18c2b87c",
+      "filesVerified": 96,
+      "routes": [
+        "admin/members",
+        "admin/members/SGCcqnOkSZ",
+        "admin/members/3mMYO4kKgx",
+        "admin/login",
+        "admin/payroll",
+        "admin/lessons"
+      ]
+    }
+  ],
+  "cdn": {
+    "id": "8200231402",
+    "status": "task_done",
+    "processing": 0,
+    "succeed": 1,
+    "failed": 0,
+    "total": 1
+  },
+  "gateways": [
+    {
+      "path": "xiaoshu/ops/gateway",
+      "sha256": "e3b6500d30f319ffd11e787abae59fe795c9fe97b6e6a8c51d7031df64ab828c",
+      "updatedAt": "2026-11-15T09:32:27.359Z"
+    },
+    {
+      "path": "xiaoshu/ops/gateway-v3",
+      "sha256": "a72a7d180f7a645adfc805d74a3942a0f50285d4ef6aef34301fb220e86c29f8",
+      "updatedAt": "2026-11-15T09:32:27.359Z"
+    },
+    {
+      "path": "xiaoshu/app/gateway",
+      "sha256": "08c15a454075e7ccf27657b238469fd18fc83b6aa7860d960bd76bfeccc59323",
+      "updatedAt": "2026-11-15T05:37:48.842Z"
+    }
+  ],
+  "finance": {
+    "beforeAt": "2026-11-15T09:28:30.676Z",
+    "afterAt": "2026-11-15T09:34:08.502Z",
+    "studentBalances": {
+      "Purse": 5,
+      "UserExp": 0,
+      "UserPoint": 4.5,
+      "SilverCoin": 2
+    },
+    "storeBalances": {
+      "Purse": 4101,
+      "UserExp": 779,
+      "UserPoint": 3384,
+      "SilverCoin": 2784
+    },
+    "studentAndStoreUnchanged": true,
+    "creditOperations": 5,
+    "associatedTransactions": 31,
+    "reservations": 6,
+    "ledgerDigestsUnchanged": true,
+    "financialFunctionsUnchanged": true,
+    "profileUnchanged": true,
+    "recoveryReceiptsUnchanged": true
+  },
+  "browser": {
+    "at": "2026-11-15T09:33:45.957Z",
+    "committedReceiptRecovered": true,
+    "pendingCleared": true,
+    "previewFailureClassifiedAsRead": true,
+    "boundedReadRetries": 2,
+    "draftRetained": true,
+    "realPreviewLoaded": true,
+    "financialWritesSent": 0,
+    "blocked": [],
+    "errors": [],
+    "operations": [
+      "ops/users/detail",
+      "ops/users/credit-status",
+      "ops/users/credit-ledger",
+      "ops/users/credit-accounts",
+      "ops/users/credit-preview",
+      "ops/users/credit-preview",
+      "ops/users/credit-preview"
+    ]
+  },
+  "profileSavePreflight": {
+    "allWritesBlocked": true,
+    "emailOperation": {
+      "__op": "Delete"
+    },
+    "validationError": null
+  },
+  "databaseMigrationsRun": false,
+  "creditRecoveryReplayed": false,
+  "financialWritesDuringAcceptance": 0,
+  "backendScope": [
+    "optional blank email unset",
+    "read-only credit-status lookup and route"
+  ],
+  "privateEvidenceDirectory": "/Users/mac/.local/state/xiaoshu/qa/2026-11-15-profile-credit-release"
+}

+ 58 - 0
docs/qa/member-profile-credit-release-2026-11-15.md

@@ -0,0 +1,58 @@
+# 资料保存及充值回执修复生产发布
+
+2026-11-15(北京时间17:32—17:34),按用户明确授权发布空邮箱资料保存、充值读取错误提示和提交回执核验。代码来源36b193b、a15201f;发布后再次核对田柏文(1712)及南昌总店(73),没有重复增减。
+
+## 发布范围
+
+- 前端版本:`admin-profile-credit-a15201f7c201-20261115T092833888Z`。
+- 从线上后台基线0c206db7d528749cb5b27a0f4fe81a54d3305f07隔离构建,仅覆写本次4个管理端源/测试文件。未混入其他待发布的课程时长展示等改动。
+- 两条运营网关gateway及gateway-v3:仅替换资料保存空邮箱处理,新增只读memberCreditStatus及路由。反向恢复后逐字节等于原线上代码。原生运行环境兼容层保留。
+- 不执行SQL迁移、不运行田柏文恢复脚本、不调用任何充值/扣回/结课接口;充值计算、预留、扣费及原账函数定义保持原哈希。
+- app/gateway保持原SHA-256:08c15a454075e7ccf27657b238469fd18fc83b6aa7860d960bd76bfeccc59323。没有更新学生/老师网页或APP安装包。
+
+运营网关同事务按原代码MD5进行CAS更新,再回读确认:
+
+| 路径 | 新SHA-256 |
+|---|---|
+| xiaoshu/ops/gateway | e3b6500d30f319ffd11e787abae59fe795c9fe97b6e6a8c51d7031df64ab828c |
+| xiaoshu/ops/gateway-v3 | a72a7d180f7a645adfc805d74a3942a0f50285d4ef6aef34301fb220e86c29f8 |
+
+## 验证
+
+- 隔离后台401/401测试、资料/账务针对性11/11测试、生产构建成功,11个云函数定义校验通过。独立审查发布范围通过。
+- 先上传哈希资产并核验,再切换manifest/index;公网96/96文件SHA-256匹配,6条深层路由匹配新入口。
+- CDN任务8200231402完成:task_done,1成功,0失败。
+- 两条线上运营网关共6次回执读取:已提交单返回原业务号,不存在单返回未确认,跨学员相同请求号不返回其他学员回执。
+- 真实生产浏览器已有管理员会话验证:恢复已存在的更正单pending原号,查询回执后自动清除;没有重放更正/充值。模拟预览断网后只有2次有界读取,提示“数据加载暂未完成”,数量与原因保留;随后真实只读预览成功,仍显示普通充值的配套陪练。没有JS异常,发送金融写入0次。
+- 资料保存从部署后的实际代码进行SDK保存边界阻断探针:空邮箱操作为`{"__op":"Delete"}`、性别女和年级赣州初二验证通过。所有实际save被阻断。此项是线上预检,不宣称代用户保存了资料;熊梓含资料及updatedAt前后完全一致。
+
+## 发布前后账务对照
+
+快照分别在17:28:30和17:34:08获取,使用同一只读、可重复读事务口径。
+
+| 田柏文账户 | 发布前后余额 | 预留 | 当前可用 |
+|---|---:|---:|---:|
+| 30分钟课时 | 5 | 2 | 3 |
+| 60分钟课时 | 2 | 0 | 2 |
+| 体验课时 | 0 | 0 | 0 |
+| 陪练小时 | 4.5 | 1 | 3.5 |
+
+| 门店账户 | 发布前后库存 | 预留 |
+|---|---:|---:|
+| 30分钟课时 | 4101 | 0 |
+| 60分钟课时 | 2784 | 0 |
+| 体验课时 | 779 | 0 |
+| 陪练小时 | 3384 | 0 |
+
+- 学员与门店余额、updatedAt完全一致;5笔会员CreditOperation、31条相关CreditTransaction、6条原始预留记录逐项完全一致。
+- UserExpDomP、UserSIcon、UserExpHis、UserUserPoint四类课时表,对学员1712及门店73的行数与全行摘要完全一致。
+- 原更正回执db061558bde6e0a1ca39、9a0bdb776d0b2e0e3698保持原值,仅存在原来的两笔,没有新增更正。
+- xs_credit_plan、xs_credit_operation、xs_credit_post、xs_reserved定义摘要不变。
+
+## 备份和边界
+
+私有基线、函数原文、发布包、回滚入口、原始账务及浏览器证据位于`/Users/mac/.local/state/xiaoshu/qa/2026-11-15-profile-credit-release/`,不进入Git。回滚脚本对当前候选哈希/入口做条件校验,仅恢复此次两个网关和后台入口,保留旧哈希资产;无需倒回任何财务记录。临时部署/只读诊断入口均在finally删除。
+
+此次修复不等于查明早上20秒超时的底层来源;历史原始请求链路证据仍缺,详情沿用故障记录。本次不更改共享公共服务。
+
+Git仅新增本次发布记录;原有未跟踪docs/migration、perf/local、perf/bench等文件均未纳入提交。