QA验收 #21
open#6380 收款信息脱敏回写修复及相似流程验收
0%
Description
QA6380-20261023:#6380 收款信息脱敏回写修复及相似流程验收。
专属主任务01a16673-6bd7-7961-921d-30087efd1656;唯一证据索引outputs/payment-info-reference-20261023/delivery.md。
用户授权本包提交/测试发布与仅测试环境QA,严禁生产;QA不改产品源码或Git。源码提交BE3892303、FE52c1ce5;正式测试候选/版本须待Ops部署并实际核实,当前只准备,未执行正式用例。
根因已由既有生产只读证据确认:POST /v1/tasks/6380/costs的payment_info.identify_code含脱敏星号,业务码PAYMENT_SNAPSHOT_INCOMPLETE;HTTP200不等于保存成功。禁止写生产6380或复制真实身份证/账号。
验收范围:现有专家/推荐人账户ID引用(新payment_info_id与旧payment_info.id)、归属/软删除/无效ID拒绝、unionpay/corporate/alipay/paypal/joyowo五类、手工新增/失败重试不重复主档、预付、翻译供应商、历史快照保留/显式换引用、财务普通编辑零成本PUT、processing锁/安全撤回。通过真实测试Web工作流、请求结构和服务端持久读回联合断言;敏感值只记录掩码有无/相等布尔,不保存原文。
BE45/FE38本地结果及独立源码审查复用,不算测试站Pass、不因换SHA重跑全部。
fixture仅唯一QA6380标记的隔离专家/推荐人/项目/Task/账户/供应商/付款主体等;可优先复用明确安全合成记录,部署身份/无外发副作用未确认前不创建。不触发真实付款/审批/通知/邮件,不改既有真实数据,不清共享缓存。
状态序列、ID/初态/变更/cleanup在manifest串行记录;若缺权限或隔离,返回具体阻塞。完成后仅清理本轮对象,保留必要最小复现对象须说明。凭据bw/bw-login,秘密不输出。
使用ego-browser一个任务空间,正式截图手册projects/ndb/frontend/docs/user-manual/payment-info-reference.md及assets/payment-info-reference/;真实通过流程按文复现,由现有UI/Backend/Web只读复核,不用mock冒充正式手册。
每例结果独立记录、同逻辑轮次批量追加本issue并读回;新缺陷及时关联/报告,不擅修业务源码。当前仅创建计划,不记Pass。
RA Updated by Redmine Admin 19 days ago
- Subtask #22 added
RA Updated by Redmine Admin 19 days ago
QA6380-R1-PARTIAL-20261023
仅测试BE1.20.7b0/FE2.16.5-beta.0,候选及source引用release/release-receipt.json,Space11,专用PM16。
本批实际2项:Pass1 / Fail1(其他主流程尚在执行,不能当全矩阵汇总)。
| 编号 | 预期 | 实际 | 结果 | 证据/缺陷 |
| ENV | 两端实际测试版本及候选相符 | BE版本GET200/1.20.7b0;FE登录footer2.16.5-beta.0;Ops运行hash/测试隔离收据吻合 | Pass | release/release-receipt.json、Space11 |
| METHOD-ALIPAY-MASTER | 最小合成支付宝主档创建不应500 | POST /v1/candidates/574238/payments/,仅必填category/account/username;HTTP500,text/html,NON_JSON;回查alipayCount0 | Fail | requestId7fb3c38c-8c68-4a7c-9d80-6ec0765c3f0b;子缺陷#22;qa/alipay-creation-check.json |
现场:候选574238/574239/574240、项目93/需求27/Task141,仅本轮合成;已有银联主档12、对公13成功。复用旧合成公司8/合同12只读不改。未建真实联系人、无feedback/自动会/付款/审批/通知。首次超18字符证件fixture被400拒绝且GET零行,已修正,不混作产品缺陷。支付宝500链路暂停,不盲重试、不擅改源码,独立银联/对公与其他负例继续。支付中状态流转缺专用财务身份,主任务正在统一处理,不改变真实角色。
源BE45/FE38复用不计本批实测;结果qa/round-01-partial-results.json,非敏感ID见qa/fixture-manifest.json。
RA Updated by Redmine Admin 19 days ago
QA6380-R2-REFERENCE-20261023¶
实际执行时间:2026-10-23 10:47–10:51 Asia/Shanghai;仅tcrm/tcrm-api,BE1.20.7b0 / FE2.16.5-beta.0;专用PM16、Space11。源/部署候选和影响范围见唯一索引 ../delivery.md 与 release/release-receipt.json。
本批12项独立用例均Pass。ENV及支付宝Fail已在#21 journal266记录,本批不重复计数。不是全矩阵完成。
| 编号 | 操作/预期 | 实际与结果 | 证据 |
|---|---|---|---|
| REF-EXPERT | UI选择已有银联12;只传ID和结算白名单,展示身份证只读,服务端完整快照 | Pass;Task141成本29;POST200/code200;无身份字段;持久值与自有主档一致且不带星 | ui-ref-expert.json |
| REF-RECOMMEND-UI | 推荐人已有账户类型只读、窄载荷 | Pass;成本35引用16;选择器disabled;回读与推荐人主档一致 | ui-ref-recommender.json |
| METHOD-CORPORATE | 对公ID13建成本、正确快照 | Pass;成本30;仅新增1条,code200 | round-api-05-results.json |
| REF-RECOMMEND | API推荐人引用16 | Pass;成本31;仅新增1条,code200 | 同上 |
| LEGACY | 旧嵌套id12及伪造/脱敏展示DTO | Pass;成本32,读取正确主档,未保存脱敏值 | 同上 |
| REJECT-FOREIGN | 外属ID17应拒绝 | Pass;业务400,成本数4→4 | 同上 |
| REJECT-DELETED | 软删ID18应拒绝 | Pass;业务400,成本数4→4 | 同上 |
| REJECT-INVALID | ID0应拒绝 | Pass;业务400,成本数4→4 | 同上 |
| REJECT-RECOMMENDER-OWNER | 推荐费用误用专家ID12应拒绝 | Pass;业务400,成本数4→4 | 同上 |
| MANUAL-MASKED | 无引用手工脱敏身份证应拒绝 | Pass;PAYMENT_SNAPSHOT_INCOMPLETE,成本数不变 | 同上 |
| PREPAY | 无引用预付合成完整资料 | Pass;成本33,code200,完整非脱敏快照 | 同上 |
| TRANSLATION | 合成供应商2及伪造展示账号 | Pass;成本34,回读等于供应商账号,忽略伪造值 | 同上 |
全部HTTP200同时检查业务code;拒绝不以HTTP状态误判。一次错误GET成本detail不支持,是QA取证端点错误;已改GET成本列表读回,未重放写请求,不计产品Fail。专家/推荐人UI与API是不同层面的执行,不将同一动作重复计数。
未触及生产6380、真实付款、审批、通知或DB直写。剩余历史/切换/主档保护/重试/财务锁/手册仍待执行;支付宝#22 Fail保留,其他同根非银行主档前置暂Blocked,未重复500。
RA Updated by Redmine Admin 19 days ago
QA6380-R3-BOUNDARIES-20261023¶
执行:2026-10-23 11:14–11:21 Asia/Shanghai;tcrm/tcrm-api,BE1.20.7b0/FE2.16.5-beta.0;Space11,PM16与仅测试finance19。源/部署候选见 ../delivery.md。无生产、真实付款、审批、通知或DB直写。
本批实际覆盖8个主档/历史参数子项、财务身份与锁流程、两类重试及手工新增、财务窄编辑。接口、浏览器故障注入分层记录,不能相加虚称全部真实后端故障通过。
| 编号 | 预期/操作 | 实际 | 状态 | 证据 |
|---|---|---|---|---|
| MASTER-OMIT | 正常PUT仅必填账户字段及支行,省略身份证 | 原始合成身份证前后相同 | Pass | round-06-history-results.json |
| MASTER-MASKED-USERNAME | 显式脱敏姓名应拒绝 | code400,主档及身份证不变 | Pass | 同上 |
| MASTER-MASKED-ACCOUNT | 显式脱敏账号应拒绝 | code400,主档及身份证不变 | Pass | 同上 |
| MASTER-MASKED-IDENTIFY_CODE | 显式脱敏身份证应拒绝 | code400,主档及身份证不变 | Pass | 同上 |
| MASTER-MASKED-PHONE | 显式脱敏电话应拒绝 | code400,主档及身份证不变 | Pass | 同上 |
| SWITCH | 合成cost32显式切到账户13,伪造展示字段无效 | code200,引用/账号/姓名均等于新主档 | Pass | 同上 |
| HISTORY-CHANGED | 主档13改账号/银行后,旧同ID DTO回显 | cost32原完整快照保留,memo成功 | Pass | 同上 |
| HISTORY-DELETED | 主档13软删后,旧同ID DTO回显 | cost32原完整快照保留,memo成功 | Pass | 同上 |
| FINANCE-AUTH | 从指定BW条目登录并读profile | HTTP/code200;账号19,roles=[finance] | Pass | finance-lock-*-results.json;重复登录只是脚本恢复,不重复计Pass |
| LOCK | 仅cost29开始→有效引用/金额拒绝→原因撤回,UI锁定 | 开始200,processing/locked=true;引用12及金额93均PAYMENT_LOCKED、整对象不变;UI锁提示及新建按钮disabled;最终unpaid/locked=false、paid_at/主体为空 | Pass | round-08-pm-lock-results.json;finance-lock-1792725389644-results.json;03-processing-lock.png |
| LOCK-DTO-ECHO | 同ID旧DTO的伪造账号不能覆盖冻结快照 | code200,伪造账号被忽略,账号仍等于主档;更新时间改变,不能要求整个JSON不变。源契约是历史DTO无有效变更可保存,不应误判为失锁 | Pass | round-08原始误设断言保留;lock-harness-note.md、补充读回 |
| RETRY-MASTER | 合成校验失败后不建cost、弹窗保留 | 主档POST业务400;主档1→1、cost7→7、零cost POST;真实API拒绝 | Pass | retry-master-results.json |
| MANUAL-NEW | UI新建合成账户后以其ID保存cost | 主档19一次创建,cost36引用19,真实code200;窄结算字段,不带身份信息 | Pass | retry-cost-final-results.json;manifest |
| RETRY-COST-INJECTED | 主档成功后成本失败,重试复用主档 | 首次成本在浏览器受控注入code400,未发送服务器;弹窗保留;恢复后仅1条真实cost POST、主档成功创建总计1次,回读cost36。不是服务端故障验证 | Pass | retry-cost-injected-before.json、retry-cost-final-results.json |
| FINANCE | 财务普通编辑仅Task窄字段,无cost PUT且成本不变 | 同Task收费1→2;1 TaskPUT、0 costPUT;持久前后完整cost列表SHA256相同,状态ongoing不变 | Pass | finance-narrow-edit-complete.json |
取证修正保留:软删13导致先400不是锁缺陷;DTO合法无变化保存的updated_at使原全JSON断言失败,未保存伪造账号。首次finance编辑null→1成功但跨导航丢失内存前快照,仅能证明请求数;补1→2用sessionStorage保存SHA256闭环,前次不额外计Pass。页面返回原Task编辑路由,最初错误等待finance详情超时,无重发同一次保存。
支付宝主档创建#22仍Fail。PayPal/Joyowo由于同根非银行bank_country NOTNULL前置,Blocked,不重复500、不借真实主档。无真实服务端cost失败的重试场景与浏览器注入分开,服务端故障注入未执行。正式手册及独立评审仍待完成。
finance19保留active。BW item b9f7b669-9b80-4222-9f19-608fd190d71d,folder f5d8389c-b94b-45ec-b388-0985e0ae3423,四项回读一致;本地RSA私钥和空目录已精确删除。停用/令牌失效测试被新用户规则撤销,不记Blocked/Fail。Ops负责密文副本精确清理。
RA Updated by Redmine Admin 19 days ago
QA6380-FINAL-20261023 — 测试验收交接¶
唯一共享索引:../delivery.md。本报告为QA唯一最终结果,关联验收#21、缺陷#22。仅测试tcrm/tcrm-api;没有生产#6380重放、实际付款、审批、通知、DB直写或QA产品源码修改/提交/推送/部署。
候选与证据层级¶
- BE实际1.20.7b0,部署候选eeb164c86859b3b9079f1a93e46300625dc72d2a,源3892303144b6622afe70285bd1e6c83f5e6aaf80。
- FE实际2.16.5-beta.0,部署候选80ddf79e9acd9a85a3d7d6368ea60a6c90e07015,源52c1ce5595458d19afab276e609deeee9133e947。
- Ops版本/隔离回执
../release/release-receipt.json;QA直接版本/登录页已核。当前两仓bugfix/payment-info-reference,BE仅原.aoci/config.json脏,旧FE手册素材保留。BE45/FE38、lint/build及源码审查是既有本地证据,未重跑、不计测试站Pass。 - Space11,专用PM16;finance19从Bitwarden实际登录并GET profile确认finance。账号19保持启用。
累计结果与去重¶
31个判定用例:28 Pass / 1 Fail / 2 Blocked / 0 Skipped。不是31条重新运行,也不表示完整验收通过。
- R1:ENV Pass、支付宝主档Fail(#21 journal266)。
- R2:12条引用/兼容/负例/预付/翻译Pass(journal267)。
- R3:主档/历史/锁/财务/重试结果(journal268);原表15个断言行,其中MANUAL-NEW与RETRY-COST-INJECTED共用同一真实最终保存,本汇总合并为1个用例,去重为14 Pass,不把一个保存动作计算两次。
- 最终新增:MANUAL按文复现与三方限定复核Pass,成本37单次提交+刷新读回。其余沿用原始轮次,不增加执行次数。
- 28 Pass中,1个组合用例的成本失败阶段是浏览器受控注入,主档创建及最终成本保存才是实际服务器调用;不能把它宣称为真实后端故障恢复通过。其他27项均有真实测试站API/页面/交付验证,无浏览器响应替换。
共同前提:上述候选、仅本轮合成对象,执行时间2026-10-23 10:37–11:28 Asia/Shanghai。每行操作/预期/实际详见关联轮次与原始JSON;HTTP200同时检查业务code。
| 编号 | 检查/预期与实际摘要 | 状态 | 证据 |
|---|---|---|---|
| ENV | 两端实际版本及隔离符合交测收据 | Pass | R1 journal266、round-01-partial-results.json |
| REF-EXPERT | 已有专家主档12,UI只读身份证、窄ID/结算载荷;cost29完整快照等于主档 | Pass | ui-ref-expert.json |
| REF-RECOMMEND-UI | 推荐人16只读方式;cost35正确归属和窄载荷 | Pass | ui-ref-recommender.json |
| METHOD-CORPORATE | 主档13创建成本30,正确完整快照、只增1条 | Pass | round-api-05-results.json |
| REF-RECOMMEND | API主档16生成成本31,正确推荐人归属 | Pass | 同上 |
| LEGACY | 嵌套id12+masked/forged展示DTO生成cost32时读取完整主档 | Pass | 同上 |
| REJECT-FOREIGN | 外属主档17业务拒绝,成本数不变 | Pass | 同上 |
| REJECT-DELETED | 已软删主档18业务拒绝,成本数不变 | Pass | 同上 |
| REJECT-INVALID | ID0业务拒绝,成本数不变 | Pass | 同上 |
| REJECT-RECOMMENDER-OWNER | 推荐费用不能用专家账户12 | Pass | 同上 |
| MANUAL-MASKED | 无引用masked身份证拒绝,零新增成本 | Pass | 同上 |
| PREPAY | 无引用完整合成预付保存cost33;不执行付款 | Pass | 同上 |
| TRANSLATION | 供应商2生成cost34,伪造展示账号不作为来源 | Pass | 同上 |
| MASTER-OMIT | 主档12更新必填资料/支行但省略身份证,原值保留 | Pass | round-06-history-results.json |
| MASTER-MASKED-USERNAME | 显式脱敏姓名拒绝,主档不变 | Pass | 同上 |
| MASTER-MASKED-ACCOUNT | 显式脱敏账号拒绝,主档不变 | Pass | 同上 |
| MASTER-MASKED-IDENTIFY_CODE | 显式脱敏证件拒绝,原值保留 | Pass | 同上 |
| MASTER-MASKED-PHONE | 显式脱敏电话拒绝,主档不变 | Pass | 同上 |
| SWITCH | cost32显式切至主档13,完整快照取新主档、不采信伪造展示值 | Pass | 同上 |
| HISTORY-CHANGED | 主档13改变后,旧同ID DTO保留cost32历史快照;memo可存 | Pass | 同上 |
| HISTORY-DELETED | 主档13软删后,旧同ID DTO仍保留历史快照 | Pass | 同上 |
| FINANCE-AUTH | 账号19密码登录及profile角色finance确证;重复技术登录不重复计数 | Pass | finance-lock-1792725389644-results.json |
| LOCK | cost29 processing,有效主档引用/金额改动PAYMENT_LOCKED且完全不变;UI新建disabled;原因撤回恢复unpaid | Pass | round-08-pm-lock-results.json前两项、finance-lock-1792725389644-results.json |
| LOCK-DTO-ECHO | 同ID无有效变化的DTO伪造账号被忽略;code200只更新技术时间,不是覆盖冻结信息 | Pass | lock-dto-readback.json;原误设Fail保留但不列产品缺陷 |
| RETRY-MASTER | 真实合成主档校验失败,弹窗保留,主档/成本数均不变,零cost POST | Pass | retry-master-results.json |
| MANUAL-NEW/RETRY-COST | 主档19成功一次;成本失败阶段浏览器注入;恢复后cost36真实保存一次、引用19,无重复主档 | Pass | retry-cost-injected-before.json、retry-cost-final-results.json;混合层级已明确 |
| FINANCE | 同Task收费1→2仅1 TaskPUT/0 costPUT;完整成本列表前后SHA256一致,Task仍ongoing | Pass | finance-narrow-edit-complete.json |
| MANUAL | 手册按文真实复现成本37/主档12,100/92、刷新一致;UI/Backend/Web限定Pass | Pass | manual-replay-results.json、正式手册及review记录 |
| METHOD-ALIPAY-MASTER | 合成最小主档创建应成功或JSON校验拒绝;实际HTTP500/HTML,bank_country NOTNULL漂移 | Fail | alipay-creation-check.json、#22;根因journal269 |
| METHOD-PAYPAL | 五方式参数项;同根非银行主档前置受#22阻塞,未重放500/借真实数据 | Blocked | Ops诊断、缺少安全可用主档 |
| METHOD-JOYOWO | 同上;未以本地测试通过替代测试站 | Blocked | 同上 |
不计产品缺陷的取证问题均保留:首次合成证件超18字符、误GET不支持成本detail、软删13在锁校验前400、旧DTO忽略伪造值仅updated_at变化、错误URL/尾斜杠等待条件、跨导航前快照未持久化。均先回查再有针对性修正,不重复不确定写入,不把修正后的断言称产品修复。
正式手册与独立复核¶
projects/ndb/frontend/docs/user-manual/payment-info-reference.md,引用assets/payment-info-reference下01/02/04三图,均同候选真实测试站,已目视检查。额外03-processing-lock.png仅作QA锁提示证据,不作为手册引用图。
- 按文:11:24–11:25,Task141/成本37/主档12,company100/actual92,POST200/code200,刷新GET仍unpaid。首次完整手册验证,不重拍不变旧图,不改图中旧成本29/35映射。
- UI:原责任线程01a116b5-fe73-77b0-bd4b-735a6e8a77c4,实际查看三图及图3无下拉遮挡差异复核Pass。
- Backend:原责任线程01a09aab-60e4-7632-b0a2-ac457725369d,唯一“软删引用拒绝范围”必修已关闭,业务复核Pass。
- Web:原责任线程01a09aab-766c-7572-9d6e-cdd8570b17bc,差异复核Pass,成本37与旧图编号、注入与真实API边界清楚。
- 只更新审核/清理状态不构成新流程;不重复送审未变内容。三方Pass不豁免#22和未测方式。
账号、会话与精确清理¶
-
保留账号19 active / finance,仅tcrm测试。最后实际密码登录/profile角色核验11:16。凭据在Bitwarden
NDB 专用测试账号,itemb9f7b669-9b80-4222-9f19-608fd190d71d、folderf5d8389c-b94b-45ec-b388-0985e0ae3423;按ID回读四项一致,receipt=finance-vault-receipt.json。不建立第二份秘密库存。 - 正式持久化验证后,本人临时RSA私钥及其空目录精确删除;Ops容器/本地密文、远端公钥传输副本已清理,见
../release/qa-finance-transport-cleanup.json。账号/BW条目/公开证据保留,不停用、不执行失效测试。 - finance JWT仅存在内存,进程结束销毁,无Token落盘。公开auth无服务器logout/revoke端点,未通过改账号状态或DB撤销;浏览器本轮PM会话在空间收尾正常退出,不能声称服务器JWT已撤销。
- 成本30/31/32/33/34/36/37经公开API精确软删并列表确认不再返回;主档17/19软删并所属列表确认;供应商2及外属574240删除后详情业务404。13/18为此前用例中已软删主档,历史保留。
- 仅保留最小合成链:项目93、需求27、Task141、专家574238/推荐人574239、主档12/16、成本29/35。末次读回两成本均unpaid、locked=false。公开Task无DELETE,不删除父/专家制造悬空、不DB强清;保留原因#22复现及手册限定复查。公司8/合同12仅只读复用,未清理旧对象。
-
fixture-manifest.json及cleanup-readback.json含确切ID/业务码/请求ID。不是全部业务数据清空,cleanupComplete=false并有保留理由,不冒称全部删除。数据为软删除,可由后续明确授权恢复;本轮未恢复或物理清除。
发布门禁与后续¶
#22仍开放未修,PayPal/Joyowo未测,整体QA不通过;生产未授权。修复测试schema或提供经确认安全fixture后,只补受影响方式,不重跑未变已通过项。真实服务器成本故障恢复未验证,受控浏览器注入只覆盖客户端重试分支;真实供应商/付款/外发不在本包。
QA不升级CLI、不改源码/版本/配置、不切分支/提交/推送/部署。仅QA输出、指定手册和截图写入;当前未暴露AOCI工具,未扩展索引/元数据写入或声称完整系统认知已刷新。最终本地检查和Redmine/空间收尾收据另附非重复结果回执。
RA Updated by Redmine Admin 19 days ago
QA22-PARENT-INCREMENT-c177dad6 — #21增量关联¶
本次只关联修复后增量,不覆盖#21 journal266–270或#22 journal269,也不是重新执行原31项。原b0汇总28 Pass / 1 Fail / 2 Blocked及旧结果文件原样保留。
新轮证据¶
- #22 journal271已全文读回确认:
QA22-SHARED-R1-c177dad6,2026-10-23 12:06 Asia/Shanghai,真实测试tcrm-api、PM16角色、实际BE1.20.7b1/59adf594ccd6c4133ae3cba5bf1c9e4c434e80f4;FE未改动/发布。 - 新轮实际15 Pass / 0 Fail / 0 Blocked,详情及全部case/requestID见#22 journal271与
outputs/payment-info-reference-20261023/qa/issue22/results.md。仅API/环境层,无浏览器mock或实际付款。 - Ops真实nullable/ledger及非混版收据绑定后才写;实际GET版本也匹配。5主档20–24及3成本38–40均按公开API精确软删并列表读回;旧Task141/cost29/35等保留链完全不变。
| 原用例 | 原历史状态 | 最新对应证据 | 最新有效状态 |
|---|---|---|---|
| METHOD-ALIPAY-MASTER | Fail,500/#22 | 支付宝create omitted/null/empty均中国,独立GET及ID引用38→20成功 | Pass |
| METHOD-PAYPAL | Blocked | 主档23创建/GET null,成本39按ID23完整快照成功 | Pass |
| METHOD-JOYOWO | Blocked | 主档24创建/GET null,成本40按ID24完整快照成功 | Pass |
原矩阵最新对应覆盖为31项有效Pass、无剩余Fail/Blocked;其中28项沿用原有效通过证据,本轮不是重跑31项。 不把复用28与新轮15相加宣称43条唯一新业务流程;原组合客户端重试仍只有其已声明的浏览器注入层级,没有升级为真实服务器故障恢复通过。
复用依据:Backend issue22/impact-and-regression.md已逐读取点比对,新逻辑仅支付宝国家默认与可空约束修复,归属/脱敏/历史快照/支付锁/金额公式/财务/翻译/FE界面代码不改;原#21 journal267/268/270所涵盖场景仍适用。本轮旧cost29/35完整摘要也保持一致。旧空国家主档的省略更新仅引用Backend本地真实PG证据,严格区分共享站层级。
手册与发布边界¶
已按QA原所有权做最小状态增量:projects/ndb/frontend/docs/user-manual/payment-info-reference.md更新测试BE b1、支付宝默认中国/PayPal/Joyowo新结果及journal271引用;原三图保持b0真实采集说明,原按文与有效UI/Backend/Web审核按未变步骤复用,没有重拍或重复评审。本轮未打开浏览器。
QA受影响验收包已通过,可交主责后续生产门禁。用户已授权QA闭环后精确生产发布,但默认仍上海22:00后,未给提前例外;当前生产未部署、生产行为未验证。手册仍为本地未提交文件,需由主责纳入发布版本化;QA不commit/push/deploy,不改变账号16/19角色或启用状态,不触真实付款/通知/DB直写。未知外部客户端/真实供应商与付款不在本次范围。
RA Updated by Redmine Admin 19 days ago
QA21-PRODUCTION-HANDOFF-20261023¶
本轮#6380/#22生产交付增量,非新业务测试轮次,不覆盖journal266–272或旧测试报告。
Operations已于2026-10-23 12:38 Asia/Shanghai完成BE→FE正式生产包:BE1.20.7 / v1.20.7 / f9767468e6dcdb9b610a54ebc1a603fadb14f877,FE2.16.5 / v2.16.5 / 568bfc7661fd45f2d748465040f8ef1682f220b0。两条CNB成功,实际版本/镜像一致;正常迁移exit0,ledger129→130仅新增candidates.0016_repair_payment_bank_country_nullable,bank_country保持nullable=true,无历史回填。先BE门禁通过后才发布FE。
原始收据:outputs/payment-info-reference-20261023/release/issue22-production-final-receipt.json,SHA256 cfb513f72bb5d2ee2bdbf095e1b9dfc506efb6c8f802771674641d853c35533b。等价复用证明issue22-production-evidence-reuse.json,SHA256 936f16c1bbabf15d04f749931844d553b93852f229760f9a5b4cf74e29294e4f。详细生产记录已写#22 journal273,QA全文读回一致。
只读smoke由Ops执行:BE版本/公开schema shape和迁移metadata;FE登录版本展示、公开入口及3个支付资源hash。QA本包没有访问生产、读取业务PII、创建生产fixture、重放实际Task6380保存、真实付款或通知。生产发布验证不等于真实资金/真实业务保存验收。
测试#22 journal271的15Pass及本issue journal272关联、原28项有效证据继续按原层级复用,不相加冒充43次新执行。BE受影响serializer AST、FE运行文件及迁移SQL已按Ops证据核对等价;正式手册及原截图/有效评审保留测试来源,不改标生产。旧失败历史不覆盖;账号16/19保留,未由QA改角色或停用。
Redmine状态例外:#22 journal273追加成功,但实际状态仍新建(1),同一身份allowed_statuses=[];本issue#21亦allowed_statuses=[]。本机CLI纯本地序列化诊断确认status_id=3实际发送,非漏传字段。故本issue只追加交付说明,不盲试不可用状态转换;tracker完成态同步Blocked,生产部署及既有QA结果不受此影响。未改权限/工作流或换账号,未操作实际CRM Task6380。root delivery仍由主责维护。