QA验收 #40 » final-report.md
THREE-20261103 / NDB #40 最终QA结果
记录时间:2026-11-03 13:22 Asia/Shanghai;QA原责任聊天。
本任务20条独立记录最新有效结果:20 Pass / 0 Fail / 0 Blocked / 0 Skipped(正常密码/JWT真实HTTP5、PG6、真实浏览器9)。初测19 Pass / 1 Fail(其中浏览器8/1)原始记录保留;THREE-DEF-02第1轮定向8子检查及真实UI分页只是原BL-05缺口闭合,不新增业务Case。原有相邻THREE-DEF-01未修复、单独保留。此结论仅本任务本地隔离环境,不是上线/生产或外部审批授权。
环境、候选与覆盖
- Web http://127.0.0.1:18074;API http://127.0.0.1:18073/v1;PG ndb_three_20261103/55438;test库已正常销毁。Ops外发隔离回执ops/environment-receipt.json。schema当前models同步,不是完整迁移图验证。
- 两仓feature/home-blacklist-income-integration。BE基线52a00635480872694faf4b13c692a114104f87e2;FE基线1a756e16b128b84f9a6d89b32e567e9ca39e06d4,均含未提交差异。当前精确候选candidate-after-THREE-DEF-02.json,14文件SHA全部匹配;唯一修复增量专家黑名单页model绑定SHA 87c3f82d0c2baeb68f4e680c180693034a190b83fa411928615b383f42bdae3f。
- 规则/影响矩阵:docs/specs/frontend/2026-11-02-dashboard-zero-cost-card-bottom.md、docs/specs/frontend/2026-11-02-expert-blacklist-settings.md、docs/specs/cross-project/2026-11-03-billing-income-cn-hk.md。CNHK01–04覆盖唯一聚合调用方、原字段/过滤/权限/回款/下钻及Web显示交互,完整映射results.json.planCoverage。
- 本轮新库身份admin5/PM6/limited7/finance8;原合成专家3/4、公司2/3、项目1/2、合同1–6、Task1–10、成本1、回款1。字段/权限只在本专属库,凭据BW,不含秘密。
逐条结果
前置均为本任务隔离服务、正常身份和manifest;执行步骤、逐条期望/实际/层级、执行时间来源及候选见结构化results.json。PG为APIRequestFactory不冒充正常鉴权HTTP。
| 编号 | 影响/流程 | 层级 | 预期 | 实际 | 状态 | 证据(qa/下) |
|---|---|---|---|---|---|---|
| BL-API-PERMISSIONS | BLACKLIST原管理action/父权限隔离 | 正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL | PM200,父权限-only403 | PM200;limited403 | Pass | api-blacklist-permissions.json, api-wire.json |
| BL-API-QUERY-PAGINATION | BLACKLIST查询和分页 | 正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL | 参数与精确ID相符,两页不重叠 | 页1[4]/页2[3];编号[3]/姓名[4,3]/手机号[3]。保存响应已离线按manifest核对 | Pass | api-blacklist-query.json, api-wire.json |
| BL-API-REASON | BLACKLIST原因/审计 | 正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL | 拒绝且状态及历史不变 | code400;前后详情完全一致 | Pass | api-blacklist-reason.json, api-wire.json |
| CNHK-HTTP-01 | CNHK01/02/03 账期公司聚合 | 正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL | CN+HK=旧总收入,旧金额/余额/回款一致 | 4组真实HTTP一致;C0全期CN257/HK507.01;11月CN257/HK107.01 | Pass | api-billing-observations.json, api-wire.json |
| CNHK-HTTP-02 | CNHK02/03 权限销售过滤/下钻 | 正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL | PM只公司2;sales5只公司3;原项目下钻保持原口径 | 过滤符合;下钻HTTP200,原全周期项目值问题另列THREE-DEF-01 | Pass | api-billing-filter-detail.json, api-wire.json |
| CNHK-PG-01 | CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻 | PostgreSQL Django APIRequestFactory | 原回归断言全部通过 | 该用例OK;6项执行exit0;专用test库正常销毁 | Pass | legacy-pg-results.json, legacy-pg-stderr.log, legacy-pg-stdout.log |
| CNHK-PG-02 | CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻 | PostgreSQL Django APIRequestFactory | 原回归断言全部通过 | 该用例OK;6项执行exit0;专用test库正常销毁 | Pass | legacy-pg-results.json, legacy-pg-stderr.log, legacy-pg-stdout.log |
| CNHK-PG-03 | CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻 | PostgreSQL Django APIRequestFactory | 原回归断言全部通过 | 该用例OK;6项执行exit0;专用test库正常销毁 | Pass | legacy-pg-results.json, legacy-pg-stderr.log, legacy-pg-stdout.log |
| CNHK-PG-04 | CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻 | PostgreSQL Django APIRequestFactory | 原回归断言全部通过 | 该用例OK;6项执行exit0;专用test库正常销毁 | Pass | legacy-pg-results.json, legacy-pg-stderr.log, legacy-pg-stdout.log |
| CNHK-PG-05 | CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻 | PostgreSQL Django APIRequestFactory | 原回归断言全部通过 | 该用例OK;6项执行exit0;专用test库正常销毁 | Pass | legacy-pg-results.json, legacy-pg-stderr.log, legacy-pg-stdout.log |
| CNHK-PG-06 | CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻 | PostgreSQL Django APIRequestFactory | 原回归断言全部通过 | 该用例OK;6项执行exit0;专用test库正常销毁 | Pass | legacy-pg-results.json, legacy-pg-stderr.log, legacy-pg-stdout.log |
| HOME-01 | HOME卡顺序 | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | 提醒卡在所有卡后,含出账项目之后 | Admin reminder last after billing projects; refresh 9 synthetic rows; screenshot home-admin-desktop.png | Pass | screenshots/home-admin-desktop.png, screenshots/home-admin-narrow-bottom-v2.png |
| BL-01 | BLACKLIST入口迁移 | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | 原页面保留状态/合作提示、无管理按钮;设置页可管 | Old expert list/detail retain blacklist status, no join/remove management button; own candidate3 observed blacklisted | Pass | browser-expert-detail.txt, browser-old-list.txt |
| BL-04 | BLACKLIST状态/审计 | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | 真实加入/解除成功,结束normal,历史保留 | UI empty reason rejected; real add and remove candidate3; reasons and two history entries; final normal; dialog remains open displaying updated history (expected) | Pass | browser-blacklist-added.txt, browser-blacklist-restored.txt, session-cleanup-receipt.json |
| CNHK-04 | CNHK04 Web列/金额/交互 | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | CN/HK显示RMB且金额/合计正确、独立排序和筛选正常;下钻保持基线 | CN317.00/HK547.01; November CN317.00/HK147.01; CN/HK independently sorted; month/customer scope/sales UI filters; sales5 only company3; detail original full-project amounts retained (primary baseline attribution); original mismatch THREE-DEF-01 separate | Pass | browser-billing-initial.txt, browser-billing-sorts.json, browser-billing-november.txt, browser-billing-sales-filter.txt, browser-billing-drilldown.txt |
| HOME-02 | HOME非财务/原行为 | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | PM末尾显示8条归属任务;共享链接进入/project_tasks/9 | PM last reminder card,8 own synthetic rows; refresh preserves results. Shared unchanged component link actually clicked as admin on #9, reached /project_tasks/9; PM-specific link click not repeated. Only one page (8/20), UI next-page disabled; no second-page fixture expansion. | Pass | browser-home-pm.txt, browser-home-task-link.txt |
| HOME-03 | HOME财务排除 | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | 卡不显示,zero-cost-reminders请求0 | Finance role8 normal login, reminder absent and zero /tasks/zero-cost-reminders resource requests after reload | Pass | browser-home-finance.json, screenshots/home-finance-clean-desktop.png |
| BL-02 | BLACKLIST非admin action | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | 真实PM可查看管理页面/原因历史 | Real PM role6 with original action enters settings blacklist, queries normal experts and opens candidate3 reason/history modal | Pass | browser-blacklist-pm.txt, browser-blacklist-pm-history.txt |
| BL-03 | BLACKLIST父级权限隔离 | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | 菜单隐藏、直达拒绝、零候选查询 | Settings-only role7 menu hidden; direct route redirected /settings with permission denial; candidateRequests0 | Pass | browser-settings-only.json, browser-settings-only.txt |
| BL-05 | BLACKLIST查询/分页/恢复 | 正常身份 + 本地真实浏览器UI + 真实HTTP/PG | 查询按钮/Enter正确参数各1GET,非法ID0GET;21条分20+1不重叠;恢复原2条 | 初测Fail保留;DEF02第1轮8子检查Pass;真实UI翻页Pass,精确19临时行已软删除,最终[3,4] | Pass | THREE-DEF-02-browser.json, THREE-DEF-02-regression.json, pagination-ui-proof.json, browser-blacklist-injected-error.txt, browser-blacklist-recovered.txt |
修复、原问题与分层复用
- THREE-DEF-02:初测点击姓名查询无请求、两行不变,原Fail证据THREE-DEF-02-browser.json/.txt及截图保留。主任务确认后Web仅加:model=filters;第1轮独立回归8项全部Pass:姓名点击/Enter、编号、手机号、非法编号零请求、全部/正常状态及重置。7个有效动作各仅1 GET、HTTP/code200和精确响应ID匹配;不以200独判。旧错误注入/解除后正常重试复用,未重复注入。
- BL-05真实分页:新建前专属库2正常专家;19条独立前缀THREE-20261103-PAGING-R1-,ID5–23,预先intent、准确ID入manifest。真实下一页page=2/page_size=20仅[3],页1[23..4]共20条,不重叠、总数21;上一页恢复相同20条。之后仅精确19条且前缀匹配行soft-delete,原行保留,正常UI/库均恢复[3,4]。pagination-ui-proof.json全链路保存。
- THREE-DEF-01:11月公司2行364.01、项目弹窗764.01含10月400。primary在defect-attribution.json确认原FinancialProjectsView/ProjectsListSerializers整类与BE基线逐字一致,月份仅筛项目集合、项目金额原全周期汇总。本包按用户其他列保持现状决定不改;原Observed/Fail历史不抹去,不称已修。
- 原有效开发自测不重跑:HOME lint/格式/build;BLACKLIST原19+5;CNHK BE5/Web2与旧账期其他5。来源preparation-plan.md/evidence-reuse.md与需求文档末节,旧候选/层级不升级;本轮只补原6 PG阻塞项。
- 同PG旧/新6组合差分:billing-oracle-comparisons.json,精确提取52a00635原函数,所有旧字段及类型一致,CN+HK准确对齐,单列为ORM差分,非正常HTTP。
- UI23张原生图视觉Pass含两增量缺口闭合;ui/receipt.json。表单绑定无视觉改动,复用此结论,不作业务Case。最终可用图与排除图见screenshots-final.json;含密码管理器提示/过渡帧只保留历史不上传。
未测范围与历史支持错误
- 完整迁移图、真实外部审批/通知/付款、远端测试站和生产均未测;没有因此阻塞本轮明确本地范围,也不能宣称对应层级通过。环境/发布后续由primary/Ops判断。
- PM独立任务链接未重复点击;复用admin真实点击同一未改共享组件到/project_tasks/9,边界保留。分页原UI第二页不足fixture缺口已按本次明确授权补齐。
- QA脚本曾Projects.pm字段错误事务回滚,修正manage_by后成功;会话清理脚本误查Accounts.is_deleted在更新前报错,修正QA脚本后只清4会话。错误证据留qa/,不算产品失败。
- 曾发生旧任务上下文漂移,只读了旧本地记录/Memory和旧工单journal;没有旧数据/文件/工单写或旧Space操作。primary已独立审计;恢复本包已有fixture/5HTTP/6PG,未重放旧任务或本包写链路。
清理与交付边界
- 正常UI退出;精确4账号会话已清空,账号仍active、密码/角色不变;BW四引用存在,见session-cleanup-receipt.json/account-final-vault-reference.json。黑名单专家3已normal,2条真实加入/解除历史保留。
- 临时分页19行已精确soft-delete;其他本轮合成财务fixture保留。BE/Web/PG仍运行,不删库卷/环境,交Ops统一收尾。
- 无产品源码/环境/分支修改、commit/push/部署/生产。QA写入仅本任务qa/、本轮获准隔离fixture和正确#40结果。
- 正确NDB #40 subject已写前核对。本报告及results.json与少量可用真图一次附入,随后完整journal逐字读回;写回收据另存redmine-writeback-receipt.json。Space3按最终放行finish一次,最终cleanup-receipt.json记录noFurtherHTTPUI,未完成读回前不宣称交付完成。