QA验收 #34
openCNB #105|银联收款必填与免填审批|本地独立验收
Added by Redmine Admin 12 days ago. Updated 9 days ago.
0%
Description
主任务:01a186ac-ec98-7ea0-a6c6-019adec6c63a(Mindsetech Agent Team)。来源:https://cnb.cool/mindsetech/NDB/backend/-/issues/105。唯一需求:docs/specs/cross-project/2026-10-29-issue-105-payment-info-exemption.md;唯一索引:outputs/issue-105-implementation-20261030/index.md;QA矩阵:同目录qa/plan.md。范围仅银联保存双字段必填及按账户/字段批准免填,含Task现场新建;已有账户选择、开始/完成支付与历史快照不加门槛。用户授权使用本机库/本地前后端/合成数据/专用测试账号,Ops唯一环境迁移writer,QA唯一fixture/HTTP/UI writer。创建记录时尚未开始独立业务验收,待Ops精确运行收据就绪;真实企微因IP/回调核查暂停发送。开发自测、离线准备与未来实际执行分层记录,不复用旧付款issue承载105结果。后续按逻辑轮次批量追加并完整读回;不提交推送部署、不动生产或106。
Files
| qa-final-review.md (8.09 KB) qa-final-review.md | Redmine Admin, 11/02/2026 08:56 AM | ||
| qa-final-review-receipt.json (6.43 KB) qa-final-review-receipt.json | Redmine Admin, 11/02/2026 08:56 AM |
RA Updated by Redmine Admin 12 days ago Actions #1
QA105-LOCAL-R1 — API与PG竞争阶段¶
- run:run105-20261030;主任务01a186ac-ec98-7ea0-a6c6-019adec6c63a。
- 环境:仅本机PG18/ndb_issue105_20261030,Backend http://127.0.0.1:8000;Ops负责服务/迁移,QA负责本轮合成fixture及业务验证。
- 候选:Backend未提交8ed5dbd2345be544029c68974c6f2dd482b13661cd6ab5eb753c3bceb131a915;Web未提交4cd2d1388a89ebc7c3102e2aa2bfe074ac47ce9d1003bda4657dce3ec3186249,逐源已核对。
- 本阶段独立实际执行10组:10 Pass / 0产品Fail。5组真实HTTP(含正常JWT、持久读回、真实签名AES回调)及5组真实双连接PG/产品服务/serializer。不是整轮105最终交付,UI、其余状态/权限/兼容和有历史迁移保护继续。
- 供应商transport为Ops固定测试模板stub,所有真实外发阻断;本地加密回调不是企微远程联调,真实企微专项仍暂停/未执行。
| 用例 | 结果 | 实际脱敏结果 |
|---|---|---|
| 105-SAVE01-COMPLETE-API | Pass | {"paymentId": 2, "omittedSensitiveValuesPreserved": true, "recoveryReadbackOnly": true, "successfulWritesRepeated": 0} |
| 105-SAVE01-MISSING-API | Pass | {"rejectedVariants": 3, "formalAccountsUnchanged": true} |
| 105-OTHER01-API | Pass | {"paymentIds": [3, 4], "personalFieldsNotNewlyRequired": true} |
| 105-APP01-EMPTY-API | Pass | {"rawEmptyRejected": true} |
| 105-APP03-LOCAL-CRYPTO | Pass | {"applicationId": 1, "paymentId": 5, "approvedOnlyByRealLocalCryptoHTTP": true, "providerSimulated": true, "realWecom": false} |
| 105-APP04-PG-SAME-KEY | Pass | {"applicationIds": [2, 2], "providerDelta": 1} |
| 105-APP04-PG-DIFFERENT-KEY | Pass | {"applicationIds": [3, 3], "providerDelta": 1} |
| 105-APP04-PG-FIRST-SAVE | Pass | {"applicationId": 4, "paymentIds": [6, 6], "formalCount": 1} |
| 105-CB02-PG-SAVE-VS-REVOKE | Pass | {"applicationId": 5, "outcomes": [{"rejected": true}, {"callback": "cancelled"}], "finalState": "cancelled", "applicable": false, "formalAccountCount": 0} |
| 105-BIND01-PG-SAVE-VS-IDENTITY | Pass | {"applicationId": 6, "paymentId": 7, "outcomes": [{"rejected": true}, {"editedId": 7}], "identityEditRetained": true, "oldApprovalApplicable": false} |
证据:outputs/issue-105-implementation-20261030/qa/local-api-results.json、pg-race-results.json、fixture-manifest.json;迁移/运行源收据在ops/local-runtime-ready.json。主fixture专家2/3、历史缺项合成账户1,仅run105对象。三个本地可复用测试身份存于bw既有NDB 专用测试账号文件夹,保持启用,正文无凭据。PG临时服务actor仅本轮fixture用途,ID见PG结果。
105-RUNNER-01:首次runner把正常PUT成功无data信封误作KeyError,原记录local-api-results.initial-runner-failure.json保留。已按确切账户ID只读核对成功状态后继续,成功POST/PUT零重发;不是产品缺陷,也不另计Pass。开发COV05补测28/28与独立实际执行分层,不相加。
本阶段无源码、Git、schema、生产或真实企微写。未逆向/flush本机库,未清业务或停用账号。后续结果按逻辑轮次追加并读回,不覆盖本轮历史。
RA Updated by Redmine Admin 12 days ago Actions #2
QA105-LOCAL-R2 — 追加API、回调与迁移收据复核¶
仅run105-20261030;本机PG18 ndb_issue105_20261030、127.0.0.1:8000/8888;Redmine仅#34。候选BE未提交8ed5dbd2345be544029c68974c6f2dd482b13661cd6ab5eb753c3bceb131a915、FE未提交4cd2d1388a89ebc7c3102e2aa2bfe074ac47ce9d1003bda4657dce3ec3186249。
新增真实HTTP/API6组:6 Pass / 0产品Fail;此前10组journal326不重跑,累计16组。另105-MIG01为消费Ops真实PG迁移收据的QA复核Pass,不冒称QA重新执行DDL。供应商transport受控模拟,真实本地签名/AES/handler及DB;不是远程企微联调。
| Case | 结果 | 实际证据摘要 |
|---|---|---|
| 105-APP05-EXACT-RECOVERY-API | Pass | {"applicationId": 7, "exactKeyFound": true, "unknownKeyEmpty": true, "postRepeated": false, "scope": "server-side recovery query, not a real network timeout"} |
| 105-ROLE01-PRIVATE-FORGERY-API | Pass | {"applicationId": 7, "otherActorRejected": true, "clientApprovedFlagRejected": true} |
| 105-CB01-NEGATIVE-CRYPTO-API | Pass | {"applicationId": 7, "badSignatureAndWrongTemplateRejected": true, "stateUnchanged": "submitted"} |
| 105-CB02-TERMINALS-API | Pass | {"applicationIds": [8, 9], "terminalStateRetainedAfterLateApprovalAndDuplicate": true, "noFormalSave": true} |
| 105-APP03-PARTIAL-BINDING-API | Pass | {"applicationId": 10, "paymentId": 8, "onlyIdentifyCodeWaived": true, "otherFieldTargetAndCandidateDenied": true} |
| 105-BIND01-SAVED-IDENTITY-ABA-API | Pass | {"applicationId": 1, "paymentId": 5, "oldGrantNotResurrectedAfterABA": true, "failedSaveDidNotClearPrivateValues": true} |
| 105-MIG01 | Pass(Ops执行,QA复核) | 0018正向/空历史逆向重应用及有历史逆向保护拒绝,强制rollback;全表、结构、迁移记录不变 |
证据:outputs/issue-105-implementation-20261030/qa/{additional-api-results.json,fixture-manifest.json,migration-evidence-review.json};Ops原收据ops/migration-0018-history-guard-receipt.json。原runner误判code=invalid已纠正,首次记录additional-api-results.initial-protocol-failure.json保留,已返回负例零重发,不是产品缺陷或新增Pass。
页面准确停点:Space36/p1管理员已正常登录,浏览器自有Bitwarden提示由用户关闭。进入/candidates/2/new_payment_info被“您无此访问权限”拦回/meeting-recordings。只读确认admin角色存在,但本专属库permissions共12行,缺/candidates、/projects、/project_tasks、/finance_payment基础page行;尚未修改Permission/Role/UserRole。该fixture前置缺口不算产品Fail/UI通过。需主任务确认最小页面权限基础fixture补齐;不触碰其他库。真实企微发送仍暂停(线上回调指向生产),本地模拟不算其通过。UI、Task现场新建/旧账户支付与快照回归尚未完成,不宣称105整轮通过。
无旧#13写入/旧fixture重放,无产品源码/Git/DDL/线上写;保留专属库和3个BW登记专用账号启用。
RA Updated by Redmine Admin 12 days ago Actions #3
UI105-01 — 已批准且适用后仍残留等待批准红框¶
关联CNB#105/Redmine#34;run105-20261030;Space36;本地候选BE8ed5dbd/FE4cd2d138。稳定缺陷ID UI105-01;主任务已确认,唯一修复owner Web,QA不改源码。
首次实际证据:qa/03-expert-approved-before-save.png;申请11,专家2,后续显式保存账户9。先缺身份证/手机号提交导致红框,申请后由本地真实签名/AES HTTP回调批准,点击“查询审批状态”显示“免填已批准”且适用,但字段仍显示“请填写身份证号或等待免填批准”“请填写手机号或等待免填批准”。批准提示与旧错误矛盾。后续点击提交创建唯一账户9成功;不是接口拒绝或不能保存,不把功能Pass覆盖显示Fail。远程真实企微未发送。
预期:批准刷新后清除仅由本次获免字段缺失产生的旧错误;未获免字段与其他校验继续保留,不自动保存账户。保留图03历史,不重复申请重现。修复后定向复测专家表单和共享Task影响,原API/PG/快照/支付无相关变化则复用。
RA Updated by Redmine Admin 12 days ago Actions #4
QA105-LOCAL-R3 — 页面、Task、兼容与受控供应商边界¶
仅run105-20261030/本机ndb_issue105_20261030/Space36,Redmine仅#34。Backend候选8ed5dbd2345b(15文件再核一致);Web4cd2d1388a89的修复前页面。本轮UI105-01修复热更新已通知,现已暂停浏览器业务写,尚未对新候选计结果。
本阶段新增13组Pass;此前journal326的10组和journal327的6组复用,累计29个独立观察Pass。UI105-01显示错误的首次Fail见journal328,不重现或改写该失败。105-MIG01为journal327已记的Ops执行/QA复核Pass,另列不冒称QA再次执行DDL。不是完整105最终通过;尚待推荐人分支及UI105-01新候选定向回归,真实企微Blocked。
| Case | 状态 | 层级 | 证据(qa/) |
|---|---|---|---|
| 105-SNAP01-HISTORICAL-MASTER | Pass | real HTTP master edit + real PG exact snapshot readback | compatibility-results.json |
| 105-PAY01-INCOMPLETE-SERVICE-PG | Pass | real PG + product transition_payments; not HTTP/UI payment execution | compatibility-results.json |
| 105-PAY01-INCOMPLETE-HTTP | Pass | real local browser/HTTP | payment-http-results.json |
| 105-APP05-UNKNOWN-SERVICE-PG | Pass | real local PG/product service, process-local supplier transport injection only; no HTTP/provider E2E | provider-boundary-results.json |
| 105-APP05-FAILED-RETRY-SERVICE-PG | Pass | real local PG/product service, process-local supplier transport injection only; no HTTP/provider E2E | provider-boundary-results.json |
| 105-CB02-EARLY-SERVICE-PG | Pass | real local PG/product service, process-local supplier transport injection only; no HTTP/provider E2E | provider-boundary-results.json |
| 105-SAVE01-EXPERT-UI-MISSING | Pass | real local browser/HTTP | browser-expert-missing.json |
| 105-APP02-EXPERT-UI-PENDING | Pass | real local browser/HTTP | browser-expert-pending.json |
| 105-APP03-EXPERT-UI-SAVE | Pass | real local browser/HTTP | browser-expert-approved-save.json |
| 105-TASK01-NEW-MISSING-UI | Pass | real local browser/HTTP | browser-task-missing.json |
| 105-TASK01-NEW-COMPLETE-UI | Pass | real local browser/HTTP | browser-task-complete.json |
| 105-TASK01-EXISTING-INCOMPLETE-UI | Pass | real local browser/HTTP | browser-task-existing.json |
| 105-SAVE02-EXPERT-UI-OMISSION | Pass | real local browser/HTTP | browser-expert-edit-omission.json |
关键读回:专家申请11经真实本地签名/AES回调批准,批准前后正式账户6→6不自动保存,UI显式提交后唯一账户9;Task缺项零写请求,补齐后先账户10再成本4;现有待补账户9可建成本5,仅cost POST。账户2编辑只发普通字段,未查看敏感原文,identify_code/phone均不夹带且presence保留。历史账户1主档经HTTP补齐,旧成本快照逐值不变;成本1支付为真实PG服务层,另成本3实际PUT /v1/tasks/1/costs/3/payment-status开始/完成/GET全200,未设新资料门槛。完成后成本1/3仅为后续UI前置经正常cancel-payment各一次,证据task-ui-precondition.json;不DB改状态、不真实付款。
供应商故障3组属于独立进程transport注入+真实产品服务/PG:超时/空结果/缺单号unknown保留锁,同/异key复用且每场景仅1供应商调用,拒绝缺项保存;明确失败同key不重发、新key可重申;早到回调inbox匹配批准但不自动保存。该三组没有HTTP加密/远程供应商声明,真实加密HTTP另见既有独立证据。
空库页面准备:仅新增run105归属page Permission IDs13–16,对应/candidates,/projects,/project_tasks,/finance_payment,现有条目和UserRole绑定未改;正常登录刷新后真实页面可访问,无伪造store。证据page-permission-fixture.json。管理员最后一次正常登录后不再切换或API登录同账号;其他API使用独立PM身份。
浏览器停点:Space36/p1 Task1编辑页,尚未打开推荐费弹窗(定位点击未成功、零业务请求);本轮专家2的recommender_id由空→3仅作为自有fixture,记录manifest。该分支不记Pass。六张实际截图01–06已目视检查,图03保留UI105-01首次错误;原始UI不是新修复截图。
runner协议/构造错误保留:兼容首次漏PUT必填字段、继而合成身份证字符串超既有18长度;两次均HTTP200/code400且读回确认无改变。最终按现有serializer离线is_valid确认后纠正同一自有主档,成功请求无重发。不是产品缺陷;原文件compatibility-results.initial-request-construction.json、length-validation.json保留。
不改产品源码/Git/DDL/生产/外部配置,不读取回调生产密钥,不发送真实审批;保留本地库、3个BW专用账号和业务fixture。
RA Updated by Redmine Admin 12 days ago Actions #5
UI105-02 — Task推荐人手机号免填已批准仍被required拦截保存¶
run105-20261030,Redmine#34,Space36同管理员,本机专属库ndb_issue105_20261030。Web修复候选7ac577fe7a1ecf91694ae027f8fd58a21105731d61ec94326ad48220945cdd25(candidate文件sha1d1e3b2b6c0bc93da1e1f8570589e5bc4040f8fd5786395db637f64dbd84e3d9),Backend未变8ed5dbd2345b。
可复现:Task1编辑→新建支付信息→推荐费用→推荐人3新银联账户,账号QA105-FIX-RECOMMEND、户名run105 recommend synthetic、身份证QA105-REC-ID已填写,手机号空,金额15RMB。点击提交产生真实payment_info_phone错误且零写请求;申请19仅exempt_fields=[phone],使用本地实际签名/AES HTTP callback批准,GET批准且适用,正式账户数仍0。点击查询审批状态后旧错误清除(图08/UI105-01共享提示修复有效)。不改变任何目标资料,再点击提交,重新出现“请输入手机号码”,对/candidates/3/payments和/tasks/1/costs零保存请求,弹窗仍开,无法完成获批保存。未重复点击或重发。
预期:有效手机号免填批准允许手机号留空,先明确保存推荐人账户再建对应成本;身份证和其他非豁免校验仍生效。实际:Task FormItem手机号required始终开启,formRef.validate在豁免感知的missingUnionpayFields分支之前返回。源码定位projects/ndb/frontend/src/views/project/components/ProjectTaskPaymentModal.vue:19及submit中的formRef.validate(当前约800行),仅供归因线索,不代替实际证据。
证据:ui105-02-first-failure.json、09-ui105-task-approved-phone-still-blocked.png;前序状态变化见ui105-task-before/pending/retest.json、ui105-task-callback.json及图08。普通专家获批保存旧Pass不被该Task失败覆盖;UI105-01专家/共享清旧错误已通过定向观察,但整条推荐人新建流程Fail。请主任务确认新缺陷类型及唯一修复owner;QA不修改产品代码或直接派修。真实企微未发送,数据未DB造approved。
RA Updated by Redmine Admin 12 days ago Actions #6
QA105-UI-RETEST-R1 — UI105-01定向回归与推荐人新缺陷¶
本轮仅Web新候选源码集合7ac577fe7a1ecf91694ae027f8fd58a21105731d61ec94326ad48220945cdd25,candidate文件sha1d1e3b2b6c0bc93da1e1f8570589e5bc4040f8fd5786395db637f64dbd84e3d9,17文件已逐个核对。Backend/API/库未改,原29个通过观察不重跑。正常刷新加载新代码,Space36同admin,不登录切换。
| 稳定caseId | 最新结论 | 实际步骤与边界 | 证据 |
|---|---|---|---|
| UI105-01 | Pass(QA定向;待UI新图复核) | 专家表单先真实触发身份证/手机号双红框→申请18submitted→真实本地完整签名/AES callback approved→同一未reload表单点击查询,2错误自动消失;账户数8→8,零自动保存。再清户名触发不相关必填错误及批准不适用,查询后该错误保留,零保存。Task推荐人同样先触发真实phone红框→申请19仅phone→callback批准→查询清旧phone错误,未自动建账户/成本。专家与Task是同一修复case的两条子观察,不按GET/截图新计case。 | ui105-expert-before/pending/retest/unrelated-errors.json、ui105-task-before/pending/retest.json、两callback收据;新图07/08;旧图03/journal328 Fail保留 |
| 105-TASK01-RECOMMEND-PHONE-WAIVER-UI | Fail / UI105-02 | 在上述原申请19已批准且applicable=true、原资料未改变时显式点击提交,phone required重新阻断,正式账户仍0,零/candidates/3/payments和/tasks/1/costs写。主任务待确认唯一owner,QA停该链,无重复提交。 | journal330全文已读回;ui105-02-first-failure.json、图09 |
完整snapshot绑定使“仍适用单字段批准但另一字段后来缺失”的组合通常不成立。本轮没有注入伪批准/表单错误:单字段实际批准只phone,身份证已真实填写;资料改变导致不适用与不相关错误保留由真实专家表单验证。只按字段名清错误的更细边界复用Web30项中对应脚本,不冒称所有组合均真实UI重演。
当前完整QA未通过:UI105-02阻断Task推荐人保存,真实企微仍Blocked;不因UI105-01定向通过而隐藏新失败。不新增审批实例反复重现,不发外部企微;专属库ndb_issue105_20261030、账号/Space36保留。下一步只在主任务确认修复并冻结候选后回归UI105-02,原Backend/API/PG通过范围继续复用。
RA Updated by Redmine Admin 12 days ago Actions #7
QA105-LOCAL-FINAL — 本机执行包结果与UI105-02定向复测¶
唯一来源outputs/issue-105-implementation-20261030/index.md;Redmine#34;run105-20261030;仅本机127.0.0.1:8000/8888、PG18/ndb_issue105_20261030,Space36同管理员。
当前Backend源码集合8ed5dbd2345be544029c68974c6f2dd482b13661cd6ab5eb753c3bceb131a915;最终Web源码集合22607e98f4a28659eb1eeaf61917d6e68a30bf96ea24b1502cd7e11d5980c8f9。最终candidate文件sha80c3e9d291d9ed401e432c0a10dc32e3d23654d575f55f751f9cbf2beab023dd,17文件全匹配,Backend15文件亦匹配。两仓feature/issue-105-payment-exemption,含owner原未提交改动,QA未写源码/Git/配置。
结果口径¶
- 按唯一稳定caseId去重,整个本机执行包最新31 Pass / 0当前Fail;另105-WECOM-REAL-E2E为1 Blocked,未执行远程供应商。GET/截图/子断言不新计case。
- 本次最后修复回归实际执行1个稳定case(105-TASK01-RECOMMEND-PHONE-WAIVER-UI),包含原申请续存与未获批/其他必填负例;其余30个已通过case依Backend未变和Web最小delta复用,不称本轮重跑31项。UI105-01的专家/Task两条子观察统一1个case。历史UI105-01 Fail journal328/图03、UI105-02 Fail journal330/图09保留;修复后最新Pass另记,不覆盖旧Fail。
- 0018真实迁移由Ops执行,QA复核Pass(journal327),单列收据,不计为QA新增业务测试。Backend174及Web32等开发测试只作复用依据,不累加本轮独立用例数量。
- 本地执行包可以交付,但不证明真实企微或生产验收通过。UI新图独立复核尚待主任务回传,正式员工手册按发布后跟进,不冒称已完成。
本次UI105-02真实续测¶
先只读GET:申请19 approved/applicable=true、推荐人3正式账户0、Task1目标memo成本0。HMR重置表单后经真实UI原样填写QA105-FIX-RECOMMEND / run105 recommend synthetic / QA105-REC-ID、手机号仍空、15RMB,查询历史并显式“使用此申请19”,未新建申请。点击提交:依次1次POST /v1/candidates/3/payments和1次POST /v1/tasks/1/costs,均HTTP200/code200,弹窗关闭。读回唯一账户11、唯一成本6,category=recommend、payment_info.id11;主档presence identify_code=true/phone=false,申请saved_payment_id11。没有重复账户、成本或审批POST。
必要负例:另打开未获批的新银联草稿,不创建申请;身份证填入而手机号空时提交,真实phone必填错误且零写;填写手机号后清户名,真实户名必填错误且零写。关闭未提交草稿,没有新增业务对象。证据ui105-02-{preflight-r1,retest-r1,negative-r1}.json;新实际图10/11及更清晰成本上下文12。UI105-01新图07/08保留;图03/09原失败不修改。
唯一实际/复用/Blocked矩阵¶
本表证据均相对qa/。复用是本包较早轮次的真实执行,不改称最终候选重新执行。涉及本地supplier替身的行不证明远端行为。
| 稳定caseId / 影响 | 最新状态 | 本次执行或复用 / 层级 | 证据 |
|---|---|---|---|
| 105-SAVE01-COMPLETE-API / IMP105-01/05 | Pass | 复用本包实际通过;real local HTTP / Ops database | local-api-results.json |
| 105-SAVE01-MISSING-API / IMP105-01/05 | Pass | 复用本包实际通过;real local HTTP / Ops database | local-api-results.json |
| 105-OTHER01-API / IMP105-08 | Pass | 复用本包实际通过;real local HTTP / Ops database | local-api-results.json |
| 105-APP01-EMPTY-API / IMP105-02 | Pass | 复用本包实际通过;real local HTTP / Ops database | local-api-results.json |
| 105-APP03-LOCAL-CRYPTO / IMP105-02 | Pass | 复用本包实际通过;real local HTTP / Ops database | local-api-results.json |
| 105-APP04-PG-SAME-KEY / IMP105-02 | Pass | 复用本包实际通过;real local PostgreSQL independent connections / direct product service+serializer / simulated provider | pg-race-results.json |
| 105-APP04-PG-DIFFERENT-KEY / IMP105-02 | Pass | 复用本包实际通过;real local PostgreSQL independent connections / direct product service+serializer / simulated provider | pg-race-results.json |
| 105-APP04-PG-FIRST-SAVE / IMP105-01/05 | Pass | 复用本包实际通过;real local PostgreSQL independent connections / direct product service+serializer / simulated provider | pg-race-results.json |
| 105-CB02-PG-SAVE-VS-REVOKE / IMP105-01/05 | Pass | 复用本包实际通过;real local PostgreSQL independent connections / direct product service+serializer / simulated provider | pg-race-results.json |
| 105-BIND01-PG-SAVE-VS-IDENTITY / IMP105-01/05 | Pass | 复用本包实际通过;real local PostgreSQL independent connections / direct product service+serializer / simulated provider | pg-race-results.json |
| 105-APP05-EXACT-RECOVERY-API / IMP105-02 | Pass | 复用本包实际通过;real HTTP / PostgreSQL / simulated supplier and real local crypto | additional-api-results.json |
| 105-ROLE01-PRIVATE-FORGERY-API / IMP105-05/10 | Pass | 复用本包实际通过;real HTTP / PostgreSQL / simulated supplier and real local crypto | additional-api-results.json |
| 105-CB01-NEGATIVE-CRYPTO-API / IMP105-03 | Pass | 复用本包实际通过;real HTTP / PostgreSQL / simulated supplier and real local crypto | additional-api-results.json |
| 105-CB02-TERMINALS-API / IMP105-03 | Pass | 复用本包实际通过;real HTTP / PostgreSQL / simulated supplier and real local crypto | additional-api-results.json |
| 105-APP03-PARTIAL-BINDING-API / IMP105-04 | Pass | 复用本包实际通过;real HTTP / PostgreSQL / simulated supplier and real local crypto | additional-api-results.json |
| 105-BIND01-SAVED-IDENTITY-ABA-API / IMP105-01/05 | Pass | 复用本包实际通过;real HTTP / PostgreSQL / simulated supplier and real local crypto | additional-api-results.json |
| 105-SNAP01-HISTORICAL-MASTER / IMP105-06 | Pass | 复用本包实际通过;real HTTP master edit + real PG exact snapshot readback | compatibility-results.json |
| 105-PAY01-INCOMPLETE-SERVICE-PG / IMP105-07 | Pass | 复用本包实际通过;real PG + product transition_payments; not HTTP/UI payment execution | compatibility-results.json |
| 105-PAY01-INCOMPLETE-HTTP / IMP105-07 | Pass | 复用本包实际通过;真实本地UI/HTTP | payment-http-results.json |
| 105-APP05-UNKNOWN-SERVICE-PG / IMP105-02 | Pass | 复用本包实际通过;real local PG/product service, process-local supplier transport injection only; no HTTP/provider E2E | provider-boundary-results.json |
| 105-APP05-FAILED-RETRY-SERVICE-PG / IMP105-02 | Pass | 复用本包实际通过;real local PG/product service, process-local supplier transport injection only; no HTTP/provider E2E | provider-boundary-results.json |
| 105-CB02-EARLY-SERVICE-PG / IMP105-03 | Pass | 复用本包实际通过;real local PG/product service, process-local supplier transport injection only; no HTTP/provider E2E | provider-boundary-results.json |
| 105-SAVE01-EXPERT-UI-MISSING / IMP105-01/05 | Pass | 复用本包实际通过;真实本地UI/HTTP | browser-expert-missing.json |
| 105-APP02-EXPERT-UI-PENDING / IMP105-02 | Pass | 复用本包实际通过;真实本地UI/HTTP | browser-expert-pending.json |
| 105-APP03-EXPERT-UI-SAVE / IMP105-01/05 | Pass | 复用本包实际通过;真实本地UI/HTTP | browser-expert-approved-save.json |
| 105-TASK01-NEW-MISSING-UI / IMP105-01/06 | Pass | 复用本包实际通过;真实本地UI/HTTP | browser-task-missing.json |
| 105-TASK01-NEW-COMPLETE-UI / IMP105-01/06 | Pass | 复用本包实际通过;真实本地UI/HTTP | browser-task-complete.json |
| 105-TASK01-EXISTING-INCOMPLETE-UI / IMP105-01/06 | Pass | 复用本包实际通过;真实本地UI/HTTP | browser-task-existing.json |
| 105-SAVE02-EXPERT-UI-OMISSION / IMP105-01/05 | Pass | 复用本包实际通过;真实本地UI/HTTP | browser-expert-edit-omission.json |
| UI105-01 / IMP105-01/05 | Pass | 复用本包实际通过;真实本地UI/HTTP | ui105-expert-retest.json、ui105-task-retest.json |
| 105-TASK01-RECOMMEND-PHONE-WAIVER-UI / IMP105-01/06 | Pass | 本次实际续测(含负例子观察);真实本地UI/HTTP | ui105-02-retest-r1.json、ui105-02-negative-r1.json |
| 105-MIG01 / IMP105-11 | Pass(收据复核,另计) | Ops真实PG迁移/逆向历史保护拒绝/强制回滚;QA未DDL | migration-evidence-review.json、../ops/migration-0018-history-guard-receipt.json |
| 相邻未变规则 / IMP105-08/09/10 | 复用开发通过(非新增实际case) | 国家/其他支付方式、旧费率与开票服务、安全日志及SQL数量;冻结Backend影响分析和原测试 | ../backend-impact-regression.md、../backend-test.log、../backend-focused-test.log |
| 105-WECOM-REAL-E2E / IMP105-03 | Blocked | 可信IP/回调归属未隔离到本机;现配置回调指线上;未发送真实审批、不修改白名单/URL | ../index.md、../ops/local-runtime-ready.json |
证据适用性及未测范围¶
- 新Web最终delta仅Task手机号required的豁免感知及相关测试;专家页/共享面板的UI105-01清旧错误逻辑未变,原定向真UI证据07/08及journal331继续适用。API/数据模型/迁移/模板配置和Backend源码未变,原HTTP、5组PG双连接、历史快照、支付均不重跑。新Task正反例覆盖本次条件变化;普通非豁免新建和原账户选择按影响复用。
- 供应商未知/明确失败/早到3组为独立进程transport注入+真实产品服务和PG;真实AES/签名HTTP由独立callback案例证明,二者均不代表远端企微。无共享Redis或多进程缓存隔离专项,运行环境LocMem且无worker/beat。
- 保存vs身份、保存vs撤销的PG竞争已实际执行;删除/恢复顺序用例复用Backend通过证据,未单独执行删除双连接竞争,不能声称该并发组合已验证,交主任务按影响处置。未搜到额外主档调用方不等于所有外部旧客户端已适配。
- 精确snapshot绑定不允许构造“仍适用单字段批准但另一字段后来缺失”的伪场景。真实单字段phone批准保存已通过;真实资料改变导致不适用及其他错误保留已验证,按字段名清旧错误的细粒度脚本边界复用Web相关回归。
- Task1是完整测试时间但最小其余字段的合成fixture;Task整页原必填背景/形式及NaN展示不纳入本次产品修复,没有声称整Task结项/会议/通知流程通过。现场账户/成本使用独立真实API且已读回。
现存fixture、身份与安全收尾¶
公司1/合同1/项目1/Task1,专家2和推荐人3;确切账户/申请/成本归属见fixture-manifest.json。账户9为专家双豁免、10为Task完整新建、11为推荐人phone豁免;成本1–6均为本包合成对象,当前未付。成本1/3的正常cancel-payment仅为测试前置恢复,不另计产品付款逆转Pass,不覆盖此前成功支付收据。不删除或清理这些复现对象。
三个可复用本地账号:admin1(admin)、pm2(pm)、other3(无角色),均active;凭据库存为Bitwarden既有“NDB 专用测试账号”文件夹,manifest只含非秘密条目引用。保持库和账号启用。page权限13–16仅本包缺失页面基础fixture,未改既有Permission或UserRole,正常登录刷新验证,没有store注入。Space36保留供最后UI复核,不注销管理员、不新建空间。临时未提交负例表单已取消。
无真实企微/审批/付款/通知、生产/其他库/白名单/回调URL写;无产品代码/版本修改、commit/push/PR/deploy。Ops继续拥有本地服务/迁移清理权,QA未停止服务、drop/flush库或停用账号。
RA Updated by Redmine Admin 12 days ago Actions #8
QA105-LOCAL-CLOSE — 最终复核与运行环境释放(非新测试轮次)¶
关联本issue最终唯一case矩阵journal332(全文已读回):31稳定case最新Pass / 0当前Fail,1真实企微Blocked;本次不新增case或重复旧结果。UI105-01/02的首次Fail分别在journal328/330,后续定向通过在journal331及332,历史不覆盖。
UI Agent最终独立复核已通过,来源outputs/issue-105-implementation-20261030/ui-review.md“最终定向收口”,绑定最终Web源码22607e98f4a28659eb1eeaf61917d6e68a30bf96ea24b1502cd7e11d5980c8f9。旧03/09保留,新07/08和10/11所见范围无未解UI阻断;图12为同成本6更清晰上下文,不计新case。Backend仍8ed5dbd2345be544029c68974c6f2dd482b13661cd6ab5eb753c3bceb131a915,未改API/库,原实际HTTP/PG/快照/支付证据复用。未实际执行删除双连接组合;主任务已按相同候选锁/账户锁序的identity竞争+删除顺序证据作范围处置,不记该组合Pass或制造新测试。
实际收尾:最后业务GET申请19 approved/saved_payment_id11;正常UI退出登录,Access-Token cookie已清;只删除本页qa105-前缀观察键,不清全profile。Space36仅finish({keep:[]})一次,已成功,不再操作浏览器。自有未提交负例表单先前已取消。
按明确清瞬态授权,仅本机ndb_issue105_20261030的自建账号1/2/3清实际JWT会话字段reset_password_token(API鉴权使用此字段),各账号仍active、原encrypted_password和Role/UserRole保持。仅删除本包新增临时page Permission13–16,已核无RolePermission引用;原12条Permission保持,未改旧角色。QA临时登录文件余0;Ops私有合成密钥和数据库进程配置未擅删,交Ops按其归属清理。证据qa/session-cleanup-receipt.json、browser-close-receipt.json。
保留确切本包数据供复现:申请1–19、专家支付主档1–11、Task1成本1–6;专家2/3及PG竞争专家4,公司/合同/项目1,全部合成。三个专用BW账号1/2/3继续启用且凭据不变,不drop/flush库、不清审批事件/审计或历史失败。收据字段精确ID见qa/fixture-manifest.json与session-cleanup-receipt.json。不是生产付款逆转或业务清理测试。
已写outputs/issue-105-implementation-20261030/qa/runtime-release.json:runId=run105-20261030,exactDatabase=ndb_issue105_20261030,noFurtherHTTPUI=true,allowStopOwnedBackendWeb=true,仅允许Ops停止其本包自有8000/8888服务及清自有进程配置。不得停止既有PG/删卷/drop库/停账号/清业务fixture。QA之后不再HTTP/UI或DB操作,Ops仍负责停止服务收据。
真实企微API/外部回调及正式审批人仍Blocked:可信IP和线上callback未隔离到本机、正式审批人待定;没有发送真实审批、修改白名单/URL或生产写。不据本地Pass宣告可发布。正式员工手册为发布后跟进,当前真实截图已留存并通过适用UI复核,不声称正式手册完成。
唯一当前QA报告qa/results.md,含实际/复用/Blocked及影响映射。QA无产品源码/配置/版本修改、commit/push/PR/deploy;两仓仍feature/issue-105-payment-exemption,原owner dirty保留。
RA Updated by Redmine Admin 12 days ago Actions #9
QA105-OPS-CLOSE — 最终资源收据复核(非新测试轮次)¶
QA只读取并核对 outputs/issue-105-implementation-20261030/ops/final-cleanup-runtime-receipt.json,runId=run105-20261030、database=ndb_issue105_20261030,与qa/runtime-release.json匹配。未再次探测端口、数据库、迁移、企微或运行测试。
依据Ops该收据:已核归属并停止本包Backend/Web(原session6995/62504);8000/8888已关闭;dedicated-db-preparation及synthetic-callback-config-reference引用的2份私密临时文件已删除。专属库与既有共享PG保留;Ops未删除/禁用账号、未改其他服务或数据库。账号1/2/3保持启用和凭据不变的直接验证来自QA先前收尾收据,不冒称Ops重新查询确认。
两仓候选文件全匹配,仍feature/issue-105-payment-exemption且原owner dirty保留:BE源码8ed5dbd2345be544029c68974c6f2dd482b13661cd6ab5eb753c3bceb131a915,Web源码22607e98f4a28659eb1eeaf61917d6e68a30bf96ea24b1502cd7e11d5980c8f9。Ops确认无commit/push/deploy/生产/真实审批发送/企微设置修改,未重复迁移或企微检查。
该增量仅将“允许Ops停止”更新为“Ops已完成停止及私密配置清理”。journal332唯一case矩阵、333 QA会话/空间收尾继续有效:31 Pass / 0当前Fail / 1真实企微Blocked,Ops迁移另列;UI两项首次Fail与后续Pass历史保留。不新增case/Pass,也不解除真实供应商、外部回调及正式审批人未验证边界,不宣告可发布。数据库/3专用账号/必要合成申请与审计数据保留,QA不再HTTP/UI或数据库操作。
RA Updated by Redmine Admin 12 days ago Actions #10
#105 staging普通页面验收 R1¶
执行:2026-10-30 13:00–13:07 Asia/Shanghai,NDB QA,Space43/p3。仅tcrm/tcrm-api;Backend1.20.15b1/190db2e2、Web2.16.9-beta.1/463870a5。Ops双版本及0018收据已消费一次,不重复runtime/DB核验。管理员为既有专用testadmin,ERP20;无角色或绑定修改。
前置fixture:唯一标记QA105-STAGE-20261030-R1,在专家搜索与DB窄读均未见同名;经公开API单次POST创建无联系方式专家574245,HTTP200/application-json/code200,再进入真实UI。创建已记录intent及确切ID,未重复写。完整manifest:staging-fixture-manifest.json。
| 用例 | 影响/层级 | 操作与预期 | 实际 | 状态 | 证据 |
|---|---|---|---|---|---|
| 105-STAGE-LOGIN-01 | 身份前置/UI | BW专用管理员UI登录,显示管理员与本轮FE版本 | 正常登录一次,管理员,FE2.16.9-beta.1;不重复查三个空绑定 | Pass | 本轮UI观察、Ops前端receipt |
| 105-STAGE-SAVE-01 | IMP105-01/05、UI+HTTP | 专家支付信息新建银联,填账号/户名/合成身份证/合成手机号,单次保存后读回唯一账户 | POST /v1/candidates/574245/payments HTTP200/code200/id25;列表GET200仅[25];银行空仍可保存并提示待补银行;无企微申请 | Pass | 01/02截图、manifest、staging-account-readback.json |
| 105-STAGE-PRESENCE-01 | IMP105-05/UI+HTTP | 打开账户25编辑页,敏感值脱敏、省略状态与presence一致 | identify_code/phone presence true,身份证脱敏,手机号“已填写,未修改”;未修改或保存;返回 | Pass | 03截图、账户读回 |
| 105-STAGE-MISSING-01 | IMP105-01/UI负例 | 新建一个未保存银联草稿,仅账号/户名,点页面提交应拦双缺项、不创建账户 | 两条明确字段提示;观察仅原1条账户POST,无第二POST;末次GET仍[25] | Pass | 04截图、staging-ui-evidence.json |
| 105-STAGE-DIALOG-01 | IMP105-02/UI入口 | 打开免填弹窗,核字段/原因/提交入口,只取消应无审批请求 | 双字段默认勾选,填唯一合成展示原因后取消;无payment-exemptions POST,未发送申请;末次账户仍[25] | Pass | 05截图、staging-ui-evidence.json |
本轮实际5 Pass / 0 Fail;不是重跑31项。普通手册步骤以本次实际顺序核对,编辑展示不扩大为本轮编辑保存通过。fixture准备不另计Pass,GET/截图不拆子case。原本机31唯一用例/journals332–334及开发8/8+2/2等按 direct-preview-coverage-review.md 影响复用,不计本轮新增执行或提升为staging证据。
真实申请待准确本人身份及一条生产镜像影响决定,未执行;旧105-WECOM-REAL-E2E仍Blocked,不计入本轮5项普通页面分母。不创建Task链/成本/付款、不测试批准/回调、不改生产/源码/Git。未出现业务Fail。期间定位器等待因输入value不是text、URL附带name参数等超时均先观察后纠正,只读/页面等待未重放写请求,非产品Fail。
5张图片在 docs/user-manual/frontend/assets/issue-105-payment-exemption/,正式测试版稿为 docs/user-manual/frontend/issue-105-payment-exemption.md。截图逐张目视核验;列表采集的密码管理器浮层已关闭后重拍,仅最终无浮层图引用。没有泄露token/密码/真实收款信息。仅合成账号原文在编辑图显示,身份/电话截图均脱敏或留空。
本轮sessionStorage观察记录已移除,正常UI退出登录并确认返回登录页;账号保持active,fixture保留。Space43未finish,p1Ops/p2企微不碰,p3保留登录页。手册冻结后交统筹一次送UI+Web/Backend;远端未测和内容待审边界保留。Redmine34批量回写与完整读回收据另存 staging-ui-writeback-receipt.json。
RA Updated by Redmine Admin 12 days ago Actions #11
#105 测试版手册逻辑收尾(非新测试轮次)¶
测试发布:Backend 1.20.15b1 / 190db2e2,Frontend 2.16.9-beta.1 / 463870a5。Ops运行与迁移收据已由QA复核;本次未重新探测或测试。
普通页面5项Pass的唯一执行结果复用本issue journal335(已完整读回),不重复写5case、不增加执行数。合成专家574245及唯一账户25保留;测试站已退出,专用账号不禁用,Space43保留供统筹,未关闭空间。
手册 docs/user-manual/frontend/issue-105-payment-exemption.md 的已验证部分,UI结构/截图可读性、Web及Backend业务准确性三方限定范围均通过,无必须修改项。报告:ui-staging-manual-review.md、web-staging-manual-review.md、backend-staging-manual-review.md,均位于 outputs/issue-105-implementation-20261030/。
三方审阅SHA:2bcd1a9ebb90e8c4c1de4ba92df8d35518d5b1cd3bb57cdf33df888db95ef6ab;仅更新首尾审核状态元数据后的SHA:b54378e5cc2b6972c8b7c5692646e6c40f962abbdeb4b204e7bc197bc89893af。操作正文与5张截图不变,见qa/staging-manual-freeze.json;不机械重送审。
真实审批仍pending:本人准确成员/测试ERP对应身份及一条生产审批镜像影响待决定。本轮没有真实提单、进入审批、批准或回调验证;原远端E2E Blocked保留。局部手册通过不等于完整手册、全链路QA或生产验收通过。本次无新浏览器/登录/fixture/源码/Git操作。
RA Updated by Redmine Admin 12 days ago Actions #12
#105 唯一真实申请进入审批 — 2026-10-30¶
实际范围:用户要求仅一张合成测试单进入真实企微审批;本人Rex Linn已确认,明确允许该单自动产生一条生产审批镜像。仅test API/UI,无直接生产数据查询或写入。QA唯一提交writer。Backend1.20.15b1/190db2e2、Web2.16.9-beta.1/463870a5运行及迁移证据沿用已核Ops收据,不重查。
本轮实际结果:1 Pass / 0 Fail¶
| 用例 | 影响与层级 | 前置及操作 | 预期 | 实际 | 状态/证据 |
|---|---|---|---|---|---|
| 105-WECOM-REAL-ENTER-01 | IMP105-02/03/12;真实测试API+供应商UI | 官方后台Rex成员/Corp匹配测试ERP2 active绑定;用BW唯一精确本人NDB条目仅向测试API正常登录;本人名下专家574245旧草稿0条。offline guard通过,独占登记原key/intent/payload摘要,再单次POST双字段缺项的未保存合成草稿;只读原键及真实企微同单 | 真实供应商创建唯一实例,系统可按原键定位同单;不审批、不另发、不建正式账户 | POST HTTP200/application-json/code200,申请1/submitted/真实sp_no;原键GET HTTP200/code200,恰好1条、同申请及单号。企微固定模板唯一记录,提交16:23:10,Mindsetech CRM提交,申请人/审批人Rex Linn,状态审批中;字段/专家/原因均匹配。最终账户仍仅[25] | Pass;staging-real-single-application-ledger.json、staging-real-application-preflight.json、手册06真实图 |
实际申请POST总数 1。原key run105-staging-20261030-r1-a89bb24d-50e8-4140-a56b-4808307a8485;payload SHA256 a42c263adf797e6858d5a7d8aa396c4be785a9b163b52fff137b7baebad867fc。完整sp_no只存本任务ledger,公开脱敏为20261030****;系统原键与真实企微详情编号已精确比较一致。模板固定为NDB收款信息免填-测试专用、原固定Rex流程,无CC,未修改模板/应用/配置。
提交结果已先写ledger再查询。首次原键查询返回HTTP401/code7004/token失效;没有把它当申请失败或重发。正常同一本人登录仅恢复只读会话,随后原键GET200取得唯一同单;历史401保存在ledger,未推断token失效根因。此前测试SSO回跳域不匹配是既有登录配置前置,未修改配置或转生产认证;使用唯一已核本人BW正常密码登录解决本次路径。没有reset密码、impersonation或账号绑定写入。
范围与证据复用¶
- 本轮仅补“真实受理进入审批”。原本机31项、测试站普通5项及journals335/336、原三方手册审核继续复用,不新增执行数。旧完整真实E2E含批准/回调/批准后保存仍未验证,不改其历史Blocked;本次用户要求的收窄目标已Pass。
- 合成专家574245沿用;正式账户25不变。申请用新的未保存草稿,不建第二正式账户、Task、成本、付款或通知fixture。生产镜像为获准的潜在自动平台副作用,未直接查询、修改或删除生产记录,也不宣称已独立验证镜像落库。
- 企业微信真实详情页面核对后即停止,不点击approve/reject/cancel、备注、导出或打印,不等待/模拟回调。实际状态是审批中,没有自动批准;不扩大为终态验收。
- 图片06为真实供应商详情的原生截图局部裁切(560×735),只在采集时对编号单元格CSS模糊脱敏,之后恢复显示;没有伪造状态或合成审批结果。合成专家、原因、字段、申请人/审批人和状态清楚可读,已实际view_image检查。原5图字节保持。
- 本人测试站页面正常退出;Node内存kernel已reset,token/密码未落盘或打印;账号仍启用。Space44保留p3真实结果页供用户/统筹查看,p1企微及无关用户tab未关闭,不finish整个space。
手册仅新增真实提单/进入审批说明和图06,并更新过时未提单状态;原普通路径不重跑或全量重审。增量freeze另记,交统筹仅送UI/Backend审新增部分。Redmine34本轮一条结果批量回写及完整读回收据为 staging-real-application-writeback-receipt.json。
RA Updated by Redmine Admin 12 days ago Actions #13
#105 最终逻辑收尾(纯文档闭合,非新测试)¶
本轮用户目标“一张真实测试单进入审批”已达。真实执行结果复用本issue journal337:105-WECOM-REAL-ENTER-01 Pass,申请POST仅1次,申请1系统submitted,原键回查同单并在真实企微确认审批中。原普通页面5项Pass复用journal335;本次不增加任何测试执行数。会话401及正常登录恢复后原键读回历史保留,不重发、不改写历史。
测试版手册 docs/user-manual/frontend/issue-105-payment-exemption.md 原普通页面已通过三方限定范围复核;新增真实申请说明/图6的UI及Backend定向复核通过,按两报告完成两处纯文案澄清:图5属于此前仅打开后取消的普通页面轮;真实提单经本人正常认证后的单次HTTP接口请求完成,网页提交按钮至企微的完整链路本轮未操作。首尾审核状态已更新,操作语义及6图保持不变,无需重复送审。
增量送审SHA:841e9b6231d14617a4fc0b63b42c7f6cd4001b0a468b0105edfb4541d5ef5a89;最终文案SHA:4afd494418273e289cff54335dff7c0941307db149d5e00b1bf96b46563c604d。记录 qa/staging-real-manual-freeze.json;review报告 ui-real-approval-manual-review.md、backend-real-approval-manual-review.md,均在outputs/issue-105-implementation-20261030/。
批准、真实回调、远端批准后保存仍未测,不宣称全链路/生产验收。单张自动生产镜像副作用已授权,未独立审计实际落库、未直接生产查写。既有合成expert574245/account25、申请及审计保留;凭据已清、本人测试站已正常退出、账号未禁用,Space44/p3真实结果页保留。
本次仅文档/receipt收尾,无浏览器、登录、业务请求、fixture、源码/Git、部署或配置操作。
RA Updated by Redmine Admin 9 days ago Actions #14
- File qa-final-review.md qa-final-review.md added
- File qa-final-review-receipt.json qa-final-review-receipt.json added
105+106 测试与生产发布:QA最终回执审查¶
2026-11-02 Asia/Shanghai。正确工单NDB #34(105)/#35(106),原可见QA责任聊天。唯一发布索引:outputs/issue-105-106-release-20261102/index.md;唯一生产总回执:production-release-receipt.json。Operations执行Git/CI/环境及实际运行,QA只审同一源证据,没有重新访问环境。
最终审查Pass:9项发布回执核对通过、0项失败,新增功能测试0项。所审证据支持105+106测试与生产发布及两仓Git收尾完成;不代表全角色或所有业务路径已验收。
实际发布与候选¶
| 目标 | 版本 / 候选 | CI及实际运行证据 |
|---|---|---|
| 测试BE | 1.20.17b0 / bd5a99c73bc6524efc5d252948a8afda4f499ada | 原7项测试回执审查复用,认证摘要/flag读取及本次精确会话撤销均已闭合 |
| 测试FE | 2.16.9-beta.4 / 3aadf8f4eadc64ed50d8d8f65b1cc08d0a4f0fdc | 已审preview冲突proposal精确应用;CI/公开版本/资源核对复用 |
| 正式BE | 1.20.17 / 52a00635480872694faf4b13c692a114104f87e2 | cnb-fpb-1k6dmuqt4 success;实际容器版本、34个打包源码hash及镜像digest匹配 |
| 正式FE | 2.16.9 / 1a756e16b128b84f9a6d89b32e567e9ca39e06d4 | cnb-119-1k6dn3m8v success;公开版本/生产API编译目标、主/登录/编辑资源与对应CI产物名匹配 |
用户已明确允许此次必要提交/整合/main-preview及精确tags推送、目标迁移/配置/部署、测试通过后立即生产的时间例外;Ops唯一writer。生产从main整合105/106来源,未合整个preview,未新建分支/worktree。
本逻辑轮次逐项审查¶
以下为发布回执检查,层级均为“QA独立审核已保存Ops原证据”,不是9个重新执行的功能案例。完整结构化记录和原证据指纹见qa-final-review-receipt.json。
| 编号 | 检查/预期 | 实际核对 | 状态/源证据 |
|---|---|---|---|
| REL105106-01 | 复用测试7项并闭合会话清理 | test-release-receipt认证读取字段已true;staging-summary-smoke合法admin读105摘要/list及106既有Task148/149匹配。精确会话字段清为NULL、撤销1条并读回,专用账号仍启用、仅认证会话写 | Pass;test-release-receipt、staging-summary-session-cleanup |
| REL105106-02 | BE tag/候选/CI/实际代码一致 | git/ci/artifact/runtime均52a00635及1.20.17;34个运行源码hash与准备文件集合精确相同,镜像digest相同。仅Docker明确排除的两分析元数据不作运行文件断言 | Pass;backend-production-{git,ci,ci-artifact-proof,runtime} |
| REL105106-03 | FE实际资源确为已审新确认候选 | git/runtime的5hash与已审proposal相同,含4冻结文件及适配测试;1a756e16及2.16.9跨源一致;公开资源HTTP200、资源名匹配精确CI清单、digest一致;生产API目标/新确认及未核实提示存在、旧独立保存提示缺席 | Pass;frontend-production-{git,ci,ci-artifact-proof,runtime},frontend-integration/qa-review-receipt |
| REL105106-04 | 两正式CI只走目标环境 | 两CI success,production alias/部署触发成功,staging部署阶段skipped;实际运行另有证据,不以触发成功代替部署完成 | Pass;两production-ci及artifact-proof |
| REL105106-05 | 105正式模板及精确配置生效 | 正式“NDB收款信息免填”,4控件必填、身份证号/手机号两项多选、Rex Linn固定审批、成员通知关闭,已查看保存后截图/规则快照。两键GUI精确读回,runtime=true/buildtime=false/literal=true;Compose仅五服务各两行引用、原文其他字节保留;server及4辅助服务实际值/镜像匹配 | Pass;formal-template-readback/controls/rule、production-105-env-save/env-flags/compose-structural-diff、production-auxiliary-runtime |
| REL105106-06 | 迁移/callback及生产最小只读路径 | 0018/0028、三表/bool列及历史一致,剩余迁移计划空;migrate退出0。callback路由、配置及解密/免填分流存在。生产只读事务+rollback中账户DTO/摘要、Task计数分区及有限毛利投影通过;无provider/callback调用或业务写 | Pass;backend-production-runtime、production-auxiliary-runtime |
| REL105106-07 | #38及main既有#39不丢失 | #38销售两文件运行hash与已验测试源相同。生产BE base为已发布#39 main27e28575,helper不在本次改动路径;finance整合回执记录已审FinancialStatistics解析逐字复用及class fingerprint,并绑定到实际views运行hash。未合整个preview;不因其他finance代码变化误要求整包重测 | Pass;backend-production-git/runtime、原#39集成QA及#38证据引用 |
| REL105106-08 | 两仓clean main=实时远端且准确tag已推 | Ops一次both检查passed、issues空;BE main/local/live remote/head均52a00635,FE均1a756e16;准确正式tag/main推送由对应git/CI回执关联 | Pass;production-main-closure、两production-git |
| REL105106-09 | 失败历史/授权边界/未测范围不被抹除 | buildtime/key标识API尝试成功但读回不符的历史保留,后GUI修正并API读回false;首次runtime误检查Docker排除分析文件失败保留,仅修验证范围后34运行文件通过。未发生产申请、模拟回调、付款、通知或造业务fixture;迁移/正式模板/配置为获准操作,不能说生产完全零写 | Pass;env-save/env-flags-readback、runtime-metadata-scope-failure、生产总回执 |
既有证据与未测边界¶
- 105本机31、测试5、真实“进入审批”及手册#34 journals337/338有效复用,数量不相加为本次新执行。用户明确“只要进审批就行”,真实企微批准/驳回回调仍未测且为原接受范围,不新发审批、不批准旧测试实例,也不把本地完整加密HTTP/PG回调提升为供应商真实E2E。
- 106原本地49及未变开发/测试证据、#38开发16/独立本地37、最新确认开发35/真实本机11Pass1Blocked及#35journal367继续按原环境层级复用。preview测试适配4组已审,不是新增业务实现;源/页面未变,不重跑。
- ROLE-BOUNDARY保持未验证:finance/PM/其他角色及真实只读关系不能因发布而转Pass;不声称全角色或完整#106所有路径通过。本次admin新确认正常/取消/有限故障注入等页面证据不覆盖所有异常/并发分支。
- 生产实际冒烟是只读服务层DTO/计数及有限投影,没有重新执行认证HTTP业务流程、生产页面flag往返、全量旧新金额对照或严格性能基准。FE依据实际公开版本/资源及CI绑定,未声称直接容器源文件逐字节查询。
- staging原1个认证读取缺口及随后session清理已闭合,原qa-staging-review的pending文字为阶段历史;本最终回执引用新增原始证据,不改写原执行历史。
员工手册:发布后跟进,不阻塞发布¶
| 项目 | 后续内容/负责人 | 可复用素材与边界 |
|---|---|---|
| 105 | QA补正式模板名称及Rex流程说明,UI视觉/Web或项目业务复核 | 复用既有docs/user-manual/frontend/issue-105-payment-exemption.md的真实测试图及已过review、当前Ops正式模板截图。明确测试截图来源;未实测的正式批准/回调步骤不能写成通过 |
| 106 | QA将确认交互指南并入正式员工手册,UI/Web只审必要增量 | 现成margin-confirm-ui/qa/visual-guide.md及01–05真实图、已过UI/Web review直接复用;09为确认前清晰补图。10/11截断图不作主展示。不重开空间、不生成mock或重复业务写来补图 |
本轮已记录跟进,尚未声称正式员工手册更新完成;不在发布窗口扩大文档/截图验收范围。
写回与实际执行边界¶
本轮仅读取协调目录既有源回执、截图及必要原出处,写本qa-final-review.md及receipt,并一次逻辑批次向正确NDB #34/#35追加本审查全文/附件、全文读回;保留旧Fail/Blocked,不自动关闭工单。
未重新登录、读取凭据、查询runtime/CI/容器/DB/企微、下载环境hash、运行旧案例或Git命令;未修改canonical或Ops源回执。源记录指纹、journalIDs、读回一致性与附件见qa-final-review-receipt.json。唯一发布索引仍由primary维护。