QA验收 #35 » issue-106-staging-20261031.md
#106 测试站图文验收结果 — beta.3定向修复验证
最新10个既有Case:10 Pass / 0 Fail / 0 Blocked / 0 Skipped。此轮实际1 Case Pass,另9项beta.2有效证据复用;四次保存为该Case的四组断言,不新增四个Case。 原beta.2的9 Pass / 1 Fail、#35 journals351/352及#37失败图保留,原台账另存actual-results-beta2-r1.json,普通编辑用例保留previous链。开发24项及本地49项不计入本轮staging执行数。
2026-11-01 beta.3增量结果
- 仅测试tcrm/tcrm-api,FE 2.16.9-beta.3 / 4a303c3d8a70805c31caaa629e94d7242733caf9;BE 1.20.15b2 / 473cc345有效收据复用。Ops
ops/staging-20261031/def106-02/{qa-ready,runtime-receipt}.jsonready/passed=true;公网独有资源、版本与测试API链确认,本轮没有查询容器逐字节或digest,不冒称做过。 - primary实际执行/visible QA独立离线复核。Space3/p1、管理员20 active;原Space1不存在的准备记录保留,未恢复旧cookie。实际四次保存时间为2026-11-01 00:06:02–00:06:17 Asia/Shanghai(原始UTC为2026-10-31 16:06)。RUN路径20261031保持稳定,不把新图写作10月31日采集。
- primary加载的普通编辑chunk为
projectTaskEdit-BHhRinM2.js,独立按钮仅保存统计标记;QA对before/after完整原始DTO、请求证据与PNG独立复核,没有再点击或请求业务接口,不以执行方result的Pass标签代替比较。
| 既有Case / 影响 | 前提、操作、预期 | 独立复核实际结果 | 状态 |
|---|---|---|---|
| QA106-STG-ORDINARY-EDIT / IMP106-01/11 / #37 | finished/unpaid的B149无成本、A148有成本42;普通页切flag双向保存,预期每次仅单flag TaskPUT、零Cost写、其他字段/成本不变、刷新保持 | B true→false→true,A false→true→false;四次各1 PUT、HTTP200/code200;每个请求keys仅exclude_from_gross_margin;每次80个其他Task字段逐值一致、完整cost DTO相等,reload checkbox值等于目标布尔值。最终Afalse/Btrue,项目96毛利0.4、原收入2000/成本600 | Pass |
原始证据:outputs/issue-106-implementation-20261030/qa/staging-20261031/primary-beta3-support/retry-locator-01/,每步intent/profile/before/after/costs/ui-requests/result及最终Task/项目;独立字段比较与逐文件SHA256:def106-02-beta3/independent-review.json。请求证据记录method/path/keys/flag,不含token或秘密。
首次外层尝试因Ego role checkbox缺name在操作前被拒,count0/sent[]、guard已恢复,GET149仍true;locator-correction.json说明改用观察到的唯一CSS checkbox后在新子目录执行四次,不是不确定写重试,不计产品Fail。refreshPersisted=false在原执行result中表示刷新后复选框值false,并非刷新失败;已按对应目标值逐组核对。
beta.3普通保存后的真实截图

图7:2026-11-01 00:06,primary采集、QA目视复核。页头**#96是项目号**,行业/主题显示本轮task b;Task149由intent的/project_tasks/149/edit?project_id=96、PUT149和GET149共同绑定。独立“保存毛利率标记”按钮及锁提示可读,勾选保持true。推荐背景等原空字段的红提示仍显示,flag-only保存不要求补齐或回写这些字段;80字段及成本不变由原始DTO证明,截图本身不单独证明零写。
原PNG原样copy,SHA256:dfc597c01c15d097cc8715a392cac3c79284bafbd6076e696e6a8901c5725f10。其他六张beta.2旧图保留像素、日期及原业务阶段,不冒称beta.3重拍。
证据复用、评审和终点
beta.3仅普通标记独立handler/button、相关测试及版本元数据变化,Backend与其他业务路径未变;其余9项保持原候选beta.2/578fdc8d、管理员20、测试环境和执行日期,来源#35 journals351/352及下方原表。对应ENV/CREATE/QUICK-CREATE/QUICK-EDIT/PAIR/NEUTRAL/KM/REFRESH/COST-SNAPSHOT的旧Pass不计为本轮新执行;beta.3身份链另由Ops收据和本次intent/chunk绑定补足。原本地49不升级证据层级。
原六图/报告结构UI Pass与Backend事实Pass按未变范围复用;新图7及本增量文案待primary安排定向只读复核,不重复送审旧六图。DEF106-02修复验证Pass不等于Redmine status已Closed;两issue仅追加结果,不自动关闭。未测其他角色、会议专用入口及复杂业务边界继续按原矩阵保留。
QA本轮仅离线证据审查、报告/矩阵/Redmine写;不操作浏览器/业务HTTP/DB,不运行support,不修改产品源/config/环境。无新增对象,保留RUN与启用账号。noFurtherHTTPUI=true;Space3最后finish由primary负责,本线程不finish或新建空间。
beta.2 R1 历史完整结果(以下保留原候选、日期和失败;不是当前阻断结论)
原报告:#106 测试站图文验收结果 — beta.2
本轮实际执行10项:9 Pass / 1 Fail / 0 Blocked / 0 Skipped。普通编辑finished/unpaid缺少保存入口,DEF106-02/Redmine #37,未全通过。 列表快编、40%、全排除系数1及KM链已通过,不能覆盖该普通编辑Fail。
日期:2026-10-31 Asia/Shanghai;环境仅https://tcrm.mindsetech.com + https://tcrm-api.mindsetech.com/v1。截图均为本轮部署后的真实测试站页面,非本地旧图。本文是图文测试报告,不冒称正式员工手册。
实际候选与角色
- Backend 1.20.15b2,
473cc345af4898a624966c88eb63016c9e0a5d1a;Web 2.16.9-beta.2,578fdc8d9389b8287ffadeee8fd1b483d65fcda1。 - Ops实际镜像/源文件/公网bundle/测试API base、0028正向迁移及105三表保留、实际server/worker专用staging DB/broker/result/queue收据已消费。两CI production阶段均跳过。QA未重复探DB/worker/资源健康。
- p1刷新后加载
index-BN4j6c55.js及login-CXdZLjZK.js,实际版本beta.2,profile200/code200、管理员20 active。财务19/PM16在准备阶段正常认证及权限核对,未把他们写作本轮全部角色UI已验收。账号来自BW“NDB 专用测试账号”,不改角色/姓名/密码。 - 原49项是本地独立证据,沿用#35 journal349、DEF36 j347/348及原影响比较;不计成49项新版staging Pass。Ops合并交叠BE2/FE7聚焦证据单独复用,非QA新增执行数。
唯一合成对象与状态
RUN:QA106-STAGING-20261031-R1。客户15、合同23、联系人11、项目96、自动首条需求31、本轮ProjectCandidates 27;A Task148、B Task149、C Task150;A唯一成本 42。总计10个显式新对象、3Task/1Cost,未复制第四条Task。
只读引用既有纯合成专家574245;账户25虽同属该专家但实际缺银行、ready=false,未引用或补改。新成本用无旧主档ID的完整合成快照,105严格字段就绪检查ready=true,无豁免/审批。
最终保留:A148 finished/计入/收入1000;B149 finished/不计入/收入1000;C150 ongoing/不计入/收入null;成本42 600RMB/unpaid。PM16/PA20、项目96/需求31;公司销售归属20/16由新Task完成快照捕获,年度API本客户owner各1000、无缺归属Task。未登记实际奖金、付款或审批。
实际用例表
| 编号 | 影响 | 用例/实际结果 | 状态 | 证据 |
|---|---|---|---|---|
| QA106-STG-ENV | IMP106-12 | 消费Ops收据并p1实际加载beta.2/测试API、profile20 active;0028/worker隔离不重复现场探测 | Pass | actual-browser-candidate.json; runtime-gate.json |
| QA106-STG-CREATE | IMP106-01/09 | A148/B149直接finished、各1000/flagfalse,项目96/需求31/PC27;年度客户15实际owner16/20各1000,ownMissingOwnerTaskIds为空 | Pass | task-a-after-create-read.json; task-b-after-create-read.json; final-task-incentive-owners-read.json |
| QA106-STG-QUICK-CREATE | IMP106-01 | UI唯一POST创建C150,project96/requirement31未新建;ongoing、flagtrue、收入null,精确GET证明归属 | Pass | ui-quick-c-result.json; c-exact-detail-read.json |
| QA106-STG-QUICK-EDIT | IMP106-01/11 | 真实UI B149 true→false→true,各1TaskPUT/0CostPUT;项目70%→40%,原金融字段不变;保存后重新打开仍true | Pass | ui-quick-b-include-result.json; ui-quick-b-exclude-result.json; ui-pair-assertions.json |
| QA106-STG-PAIR | IMP106-02 | 原2000/600毛利70%;排除B后basis1000/600、40%,原收入2000与成本600不变;API+项目实际列表图 | Pass | baseline-project-list-read.json; pair-assertions.json; ui-quick-project-40-read.json |
| QA106-STG-NEUTRAL | IMP106-08/09 | A/B均排除时excluded2/applicablefalse,项目legacy数值0但UI不适用;激励年度factor1、fallback;原2000/600与归属资格保留 | Pass | neutral-assertions.json; neutral-ui-incentive-read.json; neutral-ui-basis.json |
| QA106-STG-KM | IMP106-10 | Task149 actual_income1000、cost0、flagtrue,KM真实行可见,不因毛利标签隐藏 | Pass | km-excluded-b-read.json; km-ui-refresh-and-link.json |
| QA106-STG-REFRESH | IMP106-10 | 真实刷新完成一次GET200/code200仍返回B149,UI行不计入;点击到/project_tasks/149;列表/项目刷新读回保持结果 | Pass | km-ui-refresh-and-link.json; final-task-b-read.json |
| QA106-STG-COST-SNAPSHOT | IMP106-11 | 成本42完整独立合成snapshot readytrue、600RMB unpaid;无payment_info_id/旧id;最终DTO与创建后相等;账户25仍缺银行,不改主档/豁免 | Pass | cost-a-after-create-read.json; final-a-costs-read.json; final-reference-account25-read.json |
| QA106-STG-ORDINARY-EDIT | IMP106-01/11 | 管理员20,B149 finished/unpaid,checkbox未禁用可勾但无保存/更新按钮,0编辑请求;primary确认DEF106-02,Redmine37;不被快编Pass覆盖 | Fail | finished-unpaid-edit-ui-gap.json; final-task-b-read.json |
原始脱敏证据与唯一当轮台账:outputs/issue-106-implementation-20261030/qa/staging-20261031/actual-results.json;本轮后端影响按环境追加到同一backend-impact-regression.md,不复制第二套业务矩阵。
真实图文
快速创建C及列表快编

图1:管理员20在测试站选择已有客户15、项目96、需求31、PM16/PA20及合成专家574245,勾“不计入毛利率”。唯一POST返回Task150,随后明确ongoing列表及精确detail独立GET核归属;收入null不进入A/B统计样本。

图2:从本轮Task列表的149行进入“编辑毛利率统计标记”,保存后只读重新打开,标记true;取景不显示Task号,具体映射由ui-quick-b-exclude-result.json的一次PUT /v1/tasks/149及精确GET绑定,不把图单独当ID证明。两次快编true→false→true各1TaskPUT、0CostPUT,金额/credit/成本保持。
70%变40%,真实金额保留

图3:#000096是项目号,其中A148收入1000/成本600、B149收入1000/成本0。基线70%,排除B后参与基数1000/600,页面40%;原实际收入2000、成本600保持。C150无收入且ongoing,不参与这组毛利计算。图为最终A=false/B=true重新加载后的真实状态,接口金额见pair/ui-pair原始证据。
全部排除,无有效基数时系数1

图4:#15是客户号,2026年度参与收入/成本0/0、排除Task数2、适用性“不适用(无有效基数)”、系数1,说明“排除后没有计算基数,系数按1”。这是A/B同时排除阶段截图;最终已把A恢复计入以保留40%复现场景。项目接口旧数值仍0,由独立applicable=false驱动页面“不适用”,不是假称真正0%毛利。
排除毛利统计不隐藏KM提醒

图5:仅取本轮Task149/项目96及表头,收入1000RMB、成本0、不计入毛利率。实际点刷新后一次GET200/code200仍返回该行,点击#149跳到确切详情;无其他业务记录写入。
普通编辑失败边界

图6:正确URL为/project_tasks/149/edit?project_id=96,图中**#96是项目号,行业主题task b对应Task149**。已结束/未付款任务的统计框未禁用,但标题仅返回/Card等,无保存/更新。没有发出普通编辑PUT,截图中其他必填背景空值不是无按钮的原因;primary/Web已确认header的非关键编辑模式判断漏finished/unpaid。已附#37附件122。不得以快编成功改成普通编辑Pass,也不改付款状态/转ongoing绕过。
六张图均由QA查看;具体采集时间、SHA256、版本和角色见screenshots.json。图1采集约19:00,图4约19:10;图3/图6为最终取景,时间和标记阶段不同已在图注解释,没有混写成同一次快照。
失败、复用与安全边界
DEF106-02在本轮beta.2仍Fail;Web本地最小修复不等于新版本部署或QA重测。本轮未修改产品源码、版本、Git或环境,未直写数据库或编辑旧105实体。后续若获准部署修复,只复测受影响普通编辑及必要相邻保护,保留这些未受影响的beta.2证据与来源。
每个实际业务写均先存intent,未知结果禁止自动重放。快速创建最初读列表因未指定状态看不到ongoing C,后以显式ongoing和精确ID GET闭合,无第二POST;项目无基数旧数值0预期曾错写null,按当前契约修正断言;cost detail无GET改用Task成本列表。上述runner/导航/横向定位纠正均留原响应,不计产品Fail、不重发创建。
未调用支付状态、实发确认、开票、审批、通知、反馈、会议创建、ES或DB写。普通API内部入已核staging队列属本包允许;源码对finished/data/recordfalse在日程/MQTT前早退,最终三Task recording_schedule=null;未读取Celery结果,不把源码skipped冒称实际队列回执。新项目关联显式PC27,空link_code,不编辑旧专家/账户/旧项目关联。新成本快照全合成,不展示收款明文。
原本地未测角色/会议专用路径、复杂预付/补结、团队3%阈值、压力及共享服务边界仍按矩阵保留。此次不制造这些额外数据,不把9Pass当全角色/全功能通过。专用账号active与本轮RUN数据保留;Space1/p1暂留同目标可能的定向回归,Ops p2已收尾;无本轮guard残留。正式员工手册仍作为后续工作,本文只交付测试图文。
复核与回写
2026-10-31,UI图文结构/截图可读性复核Pass、Backend业务事实校对Pass,无必须修改项。来源:UI复核、Backend业务复核。两项仅指报告复核,实际beta.2仍为9 Pass / 1 Fail,DEF106-02/#37仍未修复;本地Web修复24项测试/build与实际部署、QA重测分开。推荐展示已验图3(04-project-exclude-b-40.png),未改图片或结果。
#35 journal351已完整读回,10项结果/全部用例ID与8个附件存在;#37及失败图附件122读回成功,原本地journal349保留,不自动关闭。journal351“未修改数据库”等表述准确澄清为:未执行直接DB写;通过授权正常API创建10个合成对象及标记更新,生产未动。 本轮不是零业务数据写入。
本次以一条简短final logical note合并记录上述澄清和两项报告复核,不复制用例/截图,不新增Pass、不重传附件。该note读回编号及报告/复核证据摘要见outputs/issue-106-implementation-20261030/qa/staging-20261031/review-closeout-receipt.json。beta.3尚无本轮发布/回归结论,Space1/p1按同目标后续决定暂留,本次未操作浏览器或业务数据。