QA验收 #40
open三功能联合验收:首页布局、黑名单设置页、账期CN/HK收入
Added by Redmine Admin 8 days ago. Updated 8 days ago.
0%
Description
联合测试三个本地未提交功能:首页无成本任务卡移到底部;专家黑名单管理迁到设置;账期总收入按合同主体拆CN/HK两列,其他统计保持。
两仓集成分支 feature/home-blacklist-income-integration。候选BE52a00635及本地2文件、FE1a756e16及本地12文件,完整文件哈希见共享索引candidate.json。
共享索引:outputs/three-feature-integration-20261103/index.md。
已有开发自测直接复用;QA补本地真实应用、PG账期回归及权限/交互/真实截图,逐项记录并批量写回本工单。尚未正式QA,不将合成页面或构建作为验收通过。
本次不提交、不推送、不部署、不操作生产,不关闭其他工单。
Files
| final-report.md (12.3 KB) final-report.md | Redmine Admin, 11/03/2026 05:22 AM | ||
| results.json (23.9 KB) results.json | Redmine Admin, 11/03/2026 05:22 AM | ||
| home-admin-narrow-bottom-v2.png (76 KB) home-admin-narrow-bottom-v2.png | Redmine Admin, 11/03/2026 05:22 AM | ||
| billing-narrow-cn-v2.png (44.7 KB) billing-narrow-cn-v2.png | Redmine Admin, 11/03/2026 05:22 AM | ||
| blacklist-restored-history.png (224 KB) blacklist-restored-history.png | Redmine Admin, 11/03/2026 05:22 AM | ||
| qa-review.md (5.74 KB) qa-review.md | Redmine Admin, 11/03/2026 06:29 AM | ||
| receipt.json (4.78 KB) receipt.json | Redmine Admin, 11/03/2026 06:29 AM | ||
| results.json (4.1 KB) results.json | Redmine Admin, 11/03/2026 07:52 AM | ||
| without-alert-desktop.png (110 KB) without-alert-desktop.png | Redmine Admin, 11/03/2026 07:52 AM | ||
| without-alert-390.png (49.3 KB) without-alert-390.png | Redmine Admin, 11/03/2026 07:52 AM | ||
| release-review.md (6.31 KB) release-review.md | Redmine Admin, 11/03/2026 08:12 AM | ||
| receipt.json (10.9 KB) receipt.json | Redmine Admin, 11/03/2026 08:12 AM |
RA Updated by Redmine Admin 8 days ago Actions #1
- File final-report.md final-report.md added
- File results.json results.json added
- File home-admin-narrow-bottom-v2.png home-admin-narrow-bottom-v2.png added
- File billing-narrow-cn-v2.png billing-narrow-cn-v2.png added
- File blacklist-restored-history.png blacklist-restored-history.png added
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,未完成读回前不宣称交付完成。
RA Updated by Redmine Admin 8 days ago Actions #2
- File qa-review.md qa-review.md added
- File receipt.json receipt.json added
THREE-STAGING-20261103 / NDB #40 发布回执QA审核¶
2026-11-03 14:29 Asia/Shanghai。发布回执审核Pass:9项核对全部通过,无新增阻断。 本次是对Operations同一原始发布证据的离线审核,不是新一轮业务QA。QA未登录测试站、未请求版本/接口、未操作浏览器/部署/Git,也未重跑20项或23图。
发布结果与精确候选¶
| 项目 | source提交 | preview cherry-pick | 版本提交/最终candidate | 精确tag/实际版本 | CI |
|---|---|---|---|---|---|
| BE | 9773ed150ed88714a7fd6bd8664f98b128dd1d5e | ff6c6ace0084cbca3102cfc9a4614a1b174eafb5 | 45c9786ee7727e7674ed1c3859411021398c0d30 | v1.20.18b0 / 1.20.18b0 | cnb-u2f-1k6g0qm2f success |
| FE | c48a0fba4ed7eda9f9c7fa81c2851b3d6ca3b42e | dee3521496d301c609e851d45e33d00fa62bf0fc | c9d1c8f17be5669ebb9305fae1aaf35bc79d0f75 | v2.16.10-beta.0 / 2.16.10-beta.0 | cnb-3og-1k6g0v9kl success |
- BE镜像推送digest:sha256:04c9f5ac90fcb2f62b06f1ba73e9a8c8ac6293b508599bd02dc4f3017005f0ee。
- FE镜像推送digest:sha256:4dc45210496df5b0478a63178523fa842ba959d0ccfe13b0f573891ee2b2a4d4。
- 原验收candidate-after-THREE-DEF-02.json的BE2/FE12文件,在source提交及实际tagged preview Git对象中的整SHA全部相等;唯一修复model绑定已含。preview额外仅BE api/init.py/.cz.toml、FE package.json版本元数据。只选取当次source提交cherry-pick,不合整源。
一次原始证据审核¶
以下9项是发布回执核对,不新增或重复计入业务Case。证据均位于本任务release/,完整独立比对结果与叶证据摘要见qa-review-receipt.json。
| 编号 | 核对点 | 实际证据与结论 | 结果 | 来源 |
|---|---|---|---|---|
| REL-01 | 准确候选和范围 | 独立读source/tagged preview Git对象,14文件整SHA匹配;额外仅BE2/FE1版本文件 | Pass | ../candidate-after-THREE-DEF-02.json, backend-git.json, frontend-git.json, git-closure.json |
| REL-02 | 提交/tag/整合边界 | 每仓source1提交、preview仅cherry-pick+metadata2提交;本地tag剥离精确candidate;源分支保留未推送 | Pass | backend-git.json, frontend-git.json |
| REL-03 | 实际tagged CI测试路由 | candidate/tag/SN一致;staging镜像/触发成功;production2阶段各skipped;tagged .cnb.yml原始字节SHA匹配 | Pass | backend-ci.json, frontend-ci.json, backend-git.json, frontend-git.json |
| REL-04 | 后端先实际生效 | BE实际版本06:19:00.490Z;FE推送06:19:02.396Z,先后关系一致 | Pass | backend-runtime.json, frontend-git.json |
| REL-05 | 实际版本和前端资源 | Ops直接版本BE1.20.18b0/FE2.16.10-beta.0,CI镜像digest一致;入口/登录与新设置chunk HTTP200。QA不重复GET或容器字节比对 | Pass | backend-runtime.json, frontend-runtime.json |
| REL-06 | 一次最小只读运行 | 专用测试管理员正常登录;现有账期10条CN+HK=原total;无fixture/共享黑名单/审批/付款/通知写 | Pass | readonly-smoke.json, readonly_smoke.py |
| REL-07 | Git收尾与main不动 | Ops实时remote回执:两仓clean preview=origin/preview,main未动,其他preview历史保留;正式main收尾不适用 | Pass | git-closure.json |
| REL-08 | 本轮会话和空间清理 | 仅本次staging账号20且tokenHash匹配会话撤销1条,账号active;Space4已finish、终端退出;QA未新建或操作空间 | Pass | session-cleanup.json, browser-state.json, cleanup_session.mjs |
| REL-09 | 复用与原失败边界 | 原20本地/23图复用;DEF02初测Fail和回归保留;两次准备脚本误报历史未抹去,非CI或业务失败,无重复提交部署 | Pass | ../qa/results.json, ../qa/redmine-writeback-receipt.json, ../ui/receipt.json, preparation-status-parser-failure.json, preparation-pipeline-newline-failure.json |
适用性与边界¶
- 20项本地独立验收(HTTP5/PG6/浏览器9)与UI23图直接复用,原#40 journal370及附件保持。初测19 Pass/1 Fail、THREE-DEF-02第1轮8子回归和真实UI分页闭合证据仍保留,本次不重算业务执行次数。
- 测试站实际版本、10条账期新字段合计与前端入口资源,属于Ops一次最小只读运行核验;不升级为整套staging UI/状态流转/角色验收。
- preview保留原有额外功能;只确认这14路径及已识别依赖同验收,不宣称整棵树相同或其余功能已重验。
- 无新migration,无手工迁移或全面schema检查;本地原schema为models同步,完整迁移图未验证。生产、真实外部审批/付款/通知不在本次授权/验证范围。
- 前端链为验收源SHA→tagged CI→构建资源名→已服务资源,不声称容器源码逐字比对。CI阶段名含.env.production不代表生产发布;实际beta路由与production skipped共同核对。
- THREE-DEF-01原项目下钻全周期金额问题未修,按主任务决定作为原有相邻问题单列;不能把本次发布说成修复该问题。
- 准备期status解析器去掉前导空格、pipeline文本helper丢尾换行两次误报均保留。实际CI文件未改,已核只发生预期提交/tag及一次目标流水线,未重复部署触发。
收尾与QA动作边界¶
Ops回执确认两仓clean preview等实时origin/preview;main本地/远端未动,只推preview及准确beta tags。源分支保留未推;无新分支/worktree,无生产或正式tag操作。
本次staging专用管理员会话由Ops按账号20和精确tokenHash撤销1条,读回为空且账号仍active;Space4已finish、终端退出。无共享业务改动或fixture新增。QA仅审同一记录,没有重复现场请求或Coolify状态查询。
本报告只向正确NDB #40追加一次发布结果,附本报告及非秘密Ops总回执;不关闭issue或覆盖journal370/初测Fail。写回及整段读回结果记录qa-review-receipt.json。
RA Updated by Redmine Admin 8 days ago Actions #3
- File results.json results.json added
- File without-alert-desktop.png without-alert-desktop.png added
- File without-alert-390.png without-alert-390.png added
THREE-PROD-20261103 / #40 删除静态说明增量QA¶
2026-11-03 15:52 Asia/Shanghai。本次仅3项必要增量,3 Pass / 0 Fail / 0 Blocked / 0 Skipped。 原20项本地验收、23图及j370/371直接复用,原初测Fail/修复回归和发布边界保留,不重跑、不升级为生产冒烟。
候选:production/candidate-without-alert.json;前端src/views/expertBlacklist/index.vue SHA256 2b572848bc5009e16ebc2dd25a763360f392653c7c59e92ae73b11de213595cf。仅删除顶部静态info Alert的7行,script、:model绑定、权限/查询JS和动态错误Alert逐字未变;14文件hash匹配。环境为复用的本任务本地PG/账号/fixture(API18073、Web18074),源版本1.20.17/2.16.9是本地源码元数据,非正式上线实际版本。管理员5正常BW登录,唯一新阶段Space6。
| 编号 | 层级与操作/预期 | 实际 | 状态 | 证据 |
|---|---|---|---|---|
| ALERT-DEL-DESKTOP | 真实UI1440px;蓝框/占位空白消失,标题后表单清楚;姓名查询仅1 GET并返回正确对象 | 蓝框消失,form为首个内容元素;一次GET HTTP200/code200,name=THREE-20261103-R1 expert 1,DOM/响应ID3 | Pass | desktop-result.json、without-alert-desktop.png |
| ALERT-DEL-390 | 真实UI390px;同一布局规则和一次正常查询 | 稳定390px截图可读、无蓝框和残余空白;一次GET HTTP200/code200,name=THREE-20261103-R1 expert 2,DOM/响应ID4 | Pass | narrow-result.json、without-alert-390.png |
| ALERT-DEL-PRESERVE | 源差异确认原查询:model/权限/JS/动态错误提示保留 | script/form绑定/动态错误Alert与原c48a0fba源逐字相同;原原因历史与失败恢复证据复用,未重复故障注入 | Pass | source-review.json |
两张原生真图¶
QA已实际目视两图,原始文件未修图。
- without-alert-desktop.png:SHA256 66d7e84294d7aa67247fe377be1e64b9ea0a93e481e06aa745f369a26fd510e5
- without-alert-390.png:SHA256 b289e0ccba236437d9af16ea29aaa99f39ad7ab6b7b90e37064a5880179611f6
UI跟进与技术边界¶
主统筹依据release.md4.6.5纠正额外门禁:此次静态说明删除不新增用户操作,已有桌面/390px实际观察和原UI23图足够技术验收;UI聊天的离线增量复核是非阻塞跟进,不是未测业务风险或发布等待条件。本条不宣称该独立UI聊天已经审完。人类已明确本次验证通过后立即生产的时间例外;QA未执行生产发布或生产冒烟。
精确收尾¶
正常UI退出;仅本轮新登录的隔离账号5、精确token SHA匹配会话撤销1条并读回为空,密码/角色未变、账号active;未创建账号/fixture或改动业务状态。观察器移除,Space6仅finish一次且成功,noFurtherHTTPUI=true。原Space3/4未复开。本地服务留Ops按新PID收尾,未停改环境。
附件为当前results.json和这两张图。清理详见production/qa/session-cleanup.json、browser-state.json;本逻辑批次只追加正确NDB #40并全文/附件读回,不关闭工单,不覆盖j370/371。
RA Updated by Redmine Admin 8 days ago Actions #4
- File release-review.md release-review.md added
- File receipt.json receipt.json added
THREE-PROD-20261103 / NDB #40 正式发布回执QA审核¶
2026-11-03 16:12 Asia/Shanghai。正式发布回执审核Pass,9项离线核对通过,无候选漂移或新阻断。 QA仅审同一Ops原始证据及必要本地Git对象,没有重复公网版本抓取、登录、业务请求、浏览器或CI监控,也不重跑原验收。人类本次已明确验证后立即生产的22点前例外。
提交、正式tag、CI与实际运行分层¶
| 项目 | 原feature最终提交 | 正常merge main | 版本/最终candidate | 正式tag及Ops直接版本 | CI |
|---|---|---|---|---|---|
| BE | 9773ed150ed88714a7fd6bd8664f98b128dd1d5e | 2414b6c8530627cedaacf62db95fdf4242176445 | f551aee4f75976295715b13f786d522b05e01fe3 | v1.20.18 / 1.20.18 | cnb-lrl-1k6g6oo94 success |
| FE | d93f03a53d625c05c50b65c890a2e7c1a0a6f0f1 | d81d742245c20220fcf7f5c5080bc6f1cc0baf8a | a3a808c400162f1a837300c97a01b429da52d7ba | v2.16.10 / 2.16.10 | cnb-lbk-1k6g6u37j success |
BE推送镜像digest sha256:952d70b30acdd130091a755fa79feabfcd01a1f4f4ef49d57c3aac7307ef3b8b;FE sha256:8a7c81ef0ecabc2e0332433b38cd32c3cf52cb2678ce4e07b8667def0b74e346。发布通过CI生产alias/部署触发结果与实际公网版本分开核验,不由CI成功推断线上已替换。
一次回执审核¶
这些是发布证据核对项,不是新增9条业务Case。完整证据hash/源对象比对见production/qa/release-review-receipt.json,叶回执均位于production/ops(../ui为新增UI回执)。
| 编号 | 核对点 | 实际及验证层级 | 结果 | 证据 |
|---|---|---|---|---|
| PROD-REL-01 | 授权和验收适用性 | 人类明确验证后立即生产例外;原20本地/23图+删除说明3增量及staging只读证据复用,不重跑或升级层级 | Pass | receipt.json, ../qa/results.json, ../qa/redmine-writeback-receipt.json |
| PROD-REL-02 | 候选/正常merge/正式tag | 独立Git对象比对14文件;正常merge父节点为mainBase和原feature;额外仅版本/CHANGELOG元数据,正式tag剥离精确candidate | Pass | git-scope-readback.json, backend-git.json, frontend-git.json |
| PROD-REL-03 | 实际tagged CI和镜像路由 | 两CI candidate/tag/SN一致success;生产alias/部署触发success,staging阶段skipped;tagged .cnb.yml原字节未改,镜像digest上下游一致 | Pass | backend-ci.json, frontend-ci.json, backend-git.json, frontend-git.json |
| PROD-REL-04 | 一次直接实际版本与顺序 | BE公网1.20.18核验08:03:05.891Z,先于FE推送08:03:14.517Z;FE公网2.16.10,QA仅审原回执无重复GET | Pass | backend-runtime.json, frontend-runtime.json, frontend-git.json |
| PROD-REL-05 | 实际后端源码和纯契约 | 实际运行容器BE2源码SHA匹配;CN/HK字段纯契约及空值/空格归一化通过,SQL0;不是生产鉴权业务HTTP或数据查询 | Pass | backend-deployed-code.json |
| PROD-REL-06 | 前端正式资源/静态说明移除 | 正式入口/登录/设置chunk资源200并关联tagged CI;编译生产API、新路由和删除说明特征成立;不声称容器前端源码逐字比对 | Pass | frontend-runtime.json |
| PROD-REL-07 | main收尾和preview保护 | 根check_release_main一次原始结果两仓clean main=实时remote;preview本地/远端未动;源分支保留,无reset/restore/clean/worktree | Pass | main-closure.json, git-scope-readback.json |
| PROD-REL-08 | 身份/会话/环境收尾与回退参考 | 生产专用身份不存在,未借真实员工/测试凭据,未造账号或生产业务session;Ops Space7已收尾,本地服务停止但卷/库保留;旧正式制品仅元数据可用核验,未执行回滚/下载 | Pass | identity-and-session-disposition.json, browser-state.json, local-cleanup.json, rollback-artifacts.json |
| PROD-REL-09 | UI增量闭环/历史边界 | 两张新增本地真实图UI离线Pass,现引用本批,不重写预发布结果;原初测Fail/DEF02回归与j370/371/372保留,DEF01原有问题仍未修 | Pass | ../ui/receipt.json |
复用与未验证边界¶
- 原20项本地独立业务记录、23图与DEF02初测Fail/第1轮回归、真实分页闭合证据继续适用;删除静态说明3项本地增量及其2图复用,#40 j370/371/372原样保留。本次不增加或重算业务用例分母。
- 新增两图已由UI离线Pass(production/ui/receipt.json);这只是本地视觉证据,不升级为生产界面验收。此前UI非阻塞跟进已在本批闭环,不单独重复发布前记录。
- 生产验证层级严格为公网BE1.20.18/FE2.16.10、实际后端容器2源码hash、SQL0的纯CN/HK字段及主体归一化契约、正式前端已服务资源与静态说明移除特征。没有执行生产鉴权业务HTTP、完整登录业务流程或生产业务数据查询。 BW专用测试目录未找到生产身份,未借员工/测试身份、未新造账号或session;该层不宣称Pass,按本次明确发布范围复用已有非空staging10条API及本地验收。
- 前端证据链是验收源SHA→正式tagged CI→输出/已服务资源;不声称容器前端源码逐字比较。无新migration,不重新全面查schema或迁移图;完整迁移图仍不属于已验证层级。
- 无真实审批/付款/通知验证或生产业务写。THREE-DEF-01原项目下钻全周期金额口径仍未修;本次不虚称覆盖或修复。
- 回退参考为旧正式BEv1.20.17/FEv2.16.9及linux/amd64制品官方鉴权元数据可达;匿名401是访问限制,后续官方鉴权已核可用,未执行回滚或镜像下载。没有发布备份新增/旧备份修改。
Git及清理¶
Ops根check_release_main一次结果两仓当前clean main=实时remote main=上述candidate;只main和准确正式tag推送,preview本地/远端保持原beta状态。原feature正常merge,不带preview/beta历史;源分支保留,无force/reset/restore/clean/分支删除或新worktree。
生产没有业务登录session,因而不需要撤销生产业务会话;Ops Space7 finish一次、终端退出。本地增量QA的Space6和精确会话此前已清;Ops停本地专属服务/容器但卷/库/账号/fixture/证据保留。未查询Coolify app/service/health/deployment状态。
本QA只写这两份审核文件,并向正确NDB #40一次追加本发布逻辑批次、附报告及非秘密Ops总回执,随后全文/附件hash读回。原j370/371/372不覆盖,工单不自动关闭;未做任何新现场运行操作。