Project

General

Profile

QA验收 #29 » results.md

Redmine Admin, 11/01/2026 02:32 PM

 

LEGACY-MEETING-EXPERT-01 独立QA收口 — R2

记录时间:2026-11-01T22:32:03+08:00(Asia/Shanghai)。主任务01a192ac-9cf0-7953-952b-caf9170e234b;唯一工单Redmine NDB #29。

恢复纠正及写入审计

错误恢复旧Issue102期间,仅exec读取旧QA/手册文件、规则及memory关键词,调用旧#13/#15 get_issue只读工具。没有旧任务文件/Redmine写入、浏览器操作、凭据读取或业务请求。错误final不属于本任务验收结论。当前遵循主任务最新纠正消息;未收到另一个要求切换业务任务的新的人类指令。该纠正后只写本任务qa产物及#29结果。

环境、候选和计数

本地独占真实PG55439,Backend8019→BFF3019,H5 QA代理8897。无生产。三仓bugfix/legacy-meeting-expert-display;candidate-r2.json共17文件哈希全部匹配,final-candidate-check.json含逐文件摘要、分支/HEAD/status及三仓diff --check=0。candidate-runtime-receipt.json记录授权的Backend精确重启及真实R2行为;没有仅以磁盘hash冒充已加载代码。

  • R1历史实际执行:11 Pass / 1 Fail;LEGACY-IDENTITY-01由主任务确认真实缺陷,原Fail保留。早期checkpoint中的Blocked为未裁决中间记录,最终pg-http-results-r1.json明确Fail。
  • R2实际执行:核心10 Pass,另BOUND-OR-LATE相邻补充1 Pass;合计11 Pass / 0 Fail。
  • 界面实际执行:6 Pass / 3 Blocked / 0 Fail / 0 Skipped。此处不把API、视觉、MCP自动化层级混合。
  • R2+界面收口执行记录为17 Pass / 3 Blocked;R1的11项有效证据另列复用,不算新执行。开发Backend52/BFF80/Mini34及43详情全量相等仅引用开发层证据,不加独立QA数量。
  • 不声称完整验收、微信自动化/真机、生产迁移或上线完成。

R1历史逐项(原证据不改写)

共同前置:任务隔离PG和应用、明确自有fixture;操作/预期结合independent_pg_http.py及逐项actual复现;HTTP见http-observations.jsonl。

编号 结果 实际/可判定检查点 证据
LEGACY-QA-SOURCE-BOUNDARIES Pass {"mappedMeetings": 43, "independentBoundaryDetails": [9, 46], "full43Equality": "developer evidence reused, not rerun", "missing5NotCreated": true} pg-http-results-r1.json;2026-11-01T14:07:24Z
LEGACY-QA-PREVIEW-ZERO-WRITE Pass {"accepted": true, "result": {"mode": "preview", "sha256": "db2670f845b846ccc140e63a21024c3d3bd6f7c0bfaccca952fe63fad89e0dca", "create": 2, "skip": 0, "rows": 2, "tasks_created": 0}} pg-http-results-r1.json;2026-11-01T14:07:24Z
LEGACY-QA-APPLY-NO-FINANCE Pass {"created": 2, "protectedFullModelsSame": true, "financeCounts": [0, 0, 0]} pg-http-results-r1.json;2026-11-01T14:07:24Z
LEGACY-QA-REPLAY-IDEMPOTENT Pass {"accepted": true, "result": {"mode": "apply", "sha256": "db2670f845b846ccc140e63a21024c3d3bd6f7c0bfaccca952fe63fad89e0dca", "create": 0, "skip": 2, "rows": 2, "tasks_created": 0}} pg-http-results-r1.json;2026-11-01T14:07:24Z
LEGACY-QA-CONFLICT-ATOMIC Pass {"newThenConflictRollback": true, "error": "Imported snapshot conflict; no rows were applied"} pg-http-results-r1.json;2026-11-01T14:07:24Z
LEGACY-QA-REJECT-WHITELIST-DIGEST-MAP Pass {"negativeInputs": 4, "unchanged": true} pg-http-results-r1.json;2026-11-01T14:07:24Z
LEGACY-QA-CROSS-APP Pass {"importRejected": true, "foreignMeetingHTTP": 404} pg-http-results-r1.json;2026-11-01T14:07:24Z
LEGACY-QA-LIVE-SNAPSHOT-BOUNDARY Pass {"cards": 2, "boundOnlyViaProfile": true, "unknownNotGuessed": true, "noPrivateFallback": true, "ordinaryExpertsUnchanged": []} pg-http-results-r1.json;2026-11-01T14:07:59Z
LEGACY-QA-NO-CATALOG-EXPANSION Pass {"profileDraftNoPlatforms": true, "publicExpertDirectoryTotal": 0} pg-http-results-r1.json;2026-11-01T14:08:47Z
LEGACY-QA-LIVE-SUPPRESSION-REFRESH Pass {"blacklistAndDelete": true, "freshRequestRestoresAfterOwnFixtureReset": true, "noExistingCandidateModified": true} pg-http-results-r1.json;2026-11-01T14:08:47Z
LEGACY-QA-WEB-INHERITED-PROJECTION Pass {"serializerOnlyNotWebHTTP": true, "historicalCards": 2} pg-http-results-r1.json;2026-11-01T14:08:47Z
LEGACY-QA-FUTURE-IDENTITY Fail {"stableId": "LEGACY-IDENTITY-01", "lateVerifiedProfileNowBlacklisted": true, "unknownSnapshotStillVisible": true, "storedExpertRemainsNull": true, "reimportRejected": true, "error": "Imported snapshot conflict; no rows were applied", "needsPolicyDecision": false, "existingProductionRowsTouched": false, "confirmedDefectByMain": true, "repairOwner": "task main Backend owner"} pg-http-results-r1.json;2026-11-01T14:08:47Z

R1失败关联本#29中的稳定缺陷LEGACY-IDENTITY-01:未绑定历史快照导入→晚出现同应用明确legacy Profile且Candidate已拉黑→卡片仍可见,重入误报来源冲突。预期立即抑制且来源未变重入skip。唯一修复负责人为主任务Backend;R2仅相关三文件变化;不抹去R1失败,不自动关闭工单。

R2定向回归逐项

共同预期:既有绑定或同应用晚到的已核验身份任一受抑制就隐藏;跨应用不关联;公开字段/原快照/财务不变;重入skip。实际操作见r2_identity_http.py、r2-http-observations.jsonl及r2-results.json。执行时间原样保留UTC,报告时区上海UTC+8。

编号 影响 结果 实际 证据
LEGACY-QA-R2-LATE-BLACKLIST IMP-01/02/03 Pass {"lateSameAppVerifiedProfileSuppresses": true, "readDoesNotBindOrWriteSnapshot": true, "remainingOtherUnboundVisible": true} r2-results.json;2026-11-01T14:16:02Z
LEGACY-QA-R2-LATE-DELETED IMP-01/02/03 Pass {"lateDeletedExpertSuppresses": true} r2-results.json;2026-11-01T14:16:02Z
LEGACY-QA-R2-REACTIVATE-SNAPSHOT IMP-01/02/03 Pass {"originalPublicFieldsUnchanged": true, "noPrivateFallback": true, "freshHTTPRestoresTwo": true} r2-results.json;2026-11-01T14:16:02Z
LEGACY-QA-R2-LATE-REPLAY-SKIP IMP-01/02/03 Pass {"skip": 2, "create": 0, "allStoredSourceAndPublicFieldsSame": true, "storedExpertStillNull": true} r2-results.json;2026-11-01T14:16:02Z
LEGACY-QA-R2-CROSSAPP-NULL-SAFETY IMP-01/02/03 Pass {"sameLegacyIdOtherAppBlacklistedDeletedDoesNotSuppress": true, "unknownStillUnbound": true} r2-results.json;2026-11-01T14:16:02Z
LEGACY-QA-R2-LIST-PROJECTION IMP-01/02/03 Pass {"sameSuppressionOnSignedList": true, "ordinaryExpertsUnchanged": []} r2-results.json;2026-11-01T14:16:02Z
LEGACY-QA-R2-MY-MEETINGS IMP-01/02/03 Pass {"realSignedHTTPNestedMeetingSuppression": true, "registrationFixtureWithoutTask": true} r2-results.json;2026-11-01T14:16:03Z
LEGACY-QA-R2-TOPIC-WEB-PROJECTIONS IMP-01/02/03 Pass {"topicRealSignedHTTP": true, "webSerializerOnlyNotWebLoginHTTP": true, "suppressedConsistently": true} r2-results.json;2026-11-01T14:16:52Z
LEGACY-QA-R2-BATCH-QUERY-BOUND IMP-01/02/03 Pass {"uniqueMeetings": [1, 2], "queryCounts": [4, 4], "notLoadOrLargePageBenchmark": true} r2-results.json;2026-11-01T14:16:52Z
LEGACY-QA-R2-NO-FINANCE-DIRECTORY-WRITE IMP-01/02/03 Pass {"taskCostMeetingExpert": [0, 0, 0], "snapshotFullRowsSame": true, "publicPlatformsUnchanged": []} r2-results.json;2026-11-01T14:16:52Z
LEGACY-QA-R2-BOUND-OR-LATE IMP-01/02/03 Pass [{"storedBoundBlacklisted": true, "lateMappedDeleted": false, "visibleCards": 0, "http": 200, "publicSnapshotAndStoredBindingUnchanged": true}, {"storedBoundBlacklisted": false, "lateMappedDeleted": true, "visibleCards": 0, "http": 200, "publicSnapshotAndStoredBindingUnchanged": true}, {"storedBoundBlacklisted": false, "lateMappedDeleted": false, "visibleCards": 1, "http": 200, "publicSnapshotAndStoredBindingUnchanged": true}] r2-results.json;r2-bound-or-late.json

批量查询仅1与2个不同会议比较4/4,不是大页或负载性能通过。Web只测继承serializer,未冒称Web登录HTTP;我的会议/专题为真实签名HTTP。

实际界面与未闭环项

前置:ego-browser Space7/p1,实际本地应用与自有合成fixture;H5构建仅QA输出和模板projectName补参,不改产品配置/源文件、不替换weapp dist。PNG窄屏390x844;单卡旧截图1200宽另标。

编号 影响 结果 操作/预期及实际 证据
H5-SINGLE IMP-04 Pass 旧会议9单卡仅旧公开字段,actions=0;1200宽桌面证据,不称390窄屏 h5-single-card.json; h5-single-card.png
H5-MULTI-MOBILE IMP-04 Pass 100002两卡、空名为专家、长文本;viewport/scrollWidth均390,无卡内动作控件 h5-mobile-two.json; h5-mobile-two.png
H5-EMPTY IMP-04 Pass 100001无卡且无特邀专家区 h5-empty.json; h5-mobile-empty.png
H5-PLAIN-TEXT IMP-04 Pass 自有900104字面渲染HTML样式文本;0 b/0 img,脚本标记false;390无溢出 h5-plain-text.json; h5-mobile-plain-text.png
H5-FAULT-CLEAR IMP-04 Pass QA本地代理受控503后旧卡清空并显示错误/重试;不是自然后端失败或恢复通过 h5-fault-clear.json; h5-mobile-error-clear.png; h5-network.jsonl
WECHAT-NATIVE-VISUAL IMP-04 Pass 已打开canonical项目,原生AX+只读滚动+真实窗口截图看到双卡;不证明MCP恢复/真机 wechat-native-visual.json; wechat-native-cards.png
H5-MANUAL-RETRY IMP-04 Blocked 重试点击目标在Taro刷新/焦点变化中消失或detach,未保存一次成功手动重试闭环;不再盲重试,后续仅补此项 h5-fault-clear.json; h5-network.jsonl
WECHAT-MCP-AUTOMATION IMP-04 Blocked querySelectorAll和simulator_screenshot均APPID_ERROR/TLS socket断开;未换AppID/登录或重发auth;原生视觉另项通过 wechat-blocker.json
ORDINARY-HISTORY-COEXIST IMP-04 Blocked 本地普通MeetingExpert=0,模型要求财务Task;未为展示造Task。普通/历史同页真实界面共存未测,需安全非财务前置或主任务处置 ui-cleanup.json; developer Mini34 tests at developer layer only

Blocked由主任务决定前置/处置,QA不新增财务fixture、不改AppID/环境绕过。手动重试未成功不记产品Fail或恢复Pass。卡内DOM无链接/按钮有证据,但一次点击detach,不声称完成真实点击无跳转验证。

影响覆盖及复用边界

唯一影响矩阵:docs/specs/cross-project/2026-11-01-legacy-meeting-expert-display.md。这里只关联证据,不另造第二套需求矩阵。

  • IMP-01:真实签名详情/列表/我的会议/专题,以及Web serializer;晚到/已有身份、跨应用、黑名单/删除R2通过。Web完整登录交互及未独立测嵌套入口仅开发层证据。
  • IMP-02:R1预览零写、两条apply无财务、skip、原子冲突、四负例、跨应用有真实PG证据;R2重入及原字段不变另测。模型/迁移未改,复用开发PG迁移收据。
  • IMP-03:真实BFF六字段和目录不扩展;adapter未变,开发80/build/lint复用。
  • IMP-04:上述H5及微信原生视觉独立证据;Mini34/weapp构建复用;普通共存、手动重试、MCP自动化仍Blocked;未测真机。
  • IMP-05:48源关系中的43既有目标映射;独立详情首尾9/46对照,完整43逐字段HTTP用开发local-http-results.json,不伪称QA重跑43。5条无目标保留,不造异常/未发布会议;生产fresh预览/导入/运行读回全未执行且无授权。

复用审核:本QA本次对照R1/R2候选,仅Backend三文件变;BFF/Mini和模型/迁移不变。11项R1通过记录保持原执行时间,不当作本轮新Pass;R2已补受影响读投影、身份重入及相邻查询。

保全与收尾

cleanup-receipt.json和r2-cleanup.json前后原完整行摘要相同;ui-cleanup.json确认仅自有fixture删除,原开发fixture保留。最终Meeting45、HistoricalMeetingExpert45、Candidates2、PublicExpertProfile0,Task/Cost/MeetingExpert均0。代理注入标记已移除。认证last_used正常技术日志不在保护业务行中,不夸称所有表绝对零写。
Backend8019按明确授权加载R2;BFF3019、PG55439、原H5/weapp产物保留。QA自有8897及Space7收尾以writeback-receipt.json记录为准;不关闭原生开发工具窗口。无真实账号登录/取凭据,无业务源码/配置修改、切分支、commit/push/部署或生产操作。

补充:QA runner序列号碰撞、对象属性索引、目录路径及专题published_at前置纠正均保留原日志;属支持脚本/fixture纠正,不冒称产品修复轮次或删除真实Fail。

回写

本报告以一次逻辑批次追加#29并附原结构化R1/R2及截图证据;写回及读回匹配见writeback-receipt.json。保留原#29历史journal,不更改issue状态。

(1-1/46)