Skip to content

fix: [M010] 补列表搜索契约及旧BSON参数兼容 - #235

Merged
makewheels merged 1 commit into
masterfrom
fix-m010-catalog-contract-20261030
Oct 30, 2026
Merged

makewheels merged 1 commit into
masterfrom
fix-m010-catalog-contract-20261030

Conversation

@makewheels

@makewheels makewheels commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

交付

基于已合并 #234 的 4ac865867a7d74847d7bc5686ae7744f57f9b783,按固定 M001–M090 台账交付 M010,不新增字母任务/业务字段/规则。先补需求设计再写代码,保持旧接口、数据及错误行为。

  • 真实旧 Java MVC 生成并固定 144 组公开列表/搜索/分类 HTTP + 完整前后 BSON(94/49/1;123 原成功、21 原错误),显式 null、未知字段、字段顺序、只读不变性和日志数量均比较。
  • 修已复现的重复 String 参数逗号拼接、Spring BSON 字符串/Document/CSV tags 与 Long 日期转换、明确 null watch 及非法空嵌套;数值参数仍取首值,不“修好”旧分页/溢出/空值或增加校验。
  • Document 使用驱动 relaxed JSON/UTF16 代理转义,Double 以实际 JDK 证据兼容。仅本域私有适配及既有装配变动,未改共享 user mapper/数值格式器。
  • 新 Java 清理入口在 BeforeEach/AfterEach 都拒绝非 test 库;mock 负例证明先拒绝后枚举,无生产库连接。

本次实际验证

  • Java 最终一次:新增矩阵/清理保护 2 项 + 原公开列表 5/搜索 9,16 passed、0 failure/error/skip;Checkstyle 零违规,2026-10-30 16:16:49 +08:00 结束。144 组是参数化语料,不是 144 个 JUnit 方法。
  • Python 3.12 锁定环境、独享回环 Mongo:新增 144 + 原公开列表 13/搜索 8,一次 165 passed、0 skipped,1 个既有 Starlette warning;Serverless Ruff 全目录通过。
  • 同一永久 144 组对基线四个原 Python 文件,独立进程只在内存加载 Git blob,实际 31 failed / 113 passed / 0 error/skip;工作区未被还原。现版全通过,证明用例能击中修复。
  • 真实 JDK21 的 46 组 Double 文本对照全一致,包括正负极小 subnormal;提交后针对私有两位科学形式的正确性,再对正负前 4096 个 subnormal 和固定种子 8192 个有限随机位型作原生 JDK 差分,实际 16384 组、0 差异,无需改提交。运行时不依赖 Java。
  • 10 份变更 Markdown、144 个本地链接、代码围栏、固定 90 任务/真实依赖无环、空白及既有 500 行门禁全部通过。

边界与回退

没有真实 FC/生产流量切换、M009 各端或 M011 有效封面 URL/云网络验收;外部媒体签名禁止。没有业务集合/字段/索引/状态、依赖、收费资源或生产配置变动。旧协议/主路径已存在不等于生产验收完成,仍保留约 25% 人工工作量粗估,不按 144 组/7 个任务重算百分比。

固定 90 项现 7 已交付、0 进行中、1 阻塞、82 待做,剩余 83;本 PR 合并前不当作主干已交付。回退本 PR 的四个 Python 文件及测试/语料/文档即可,无业务数据回写或在途任务改变。

需求/设计及精确命令见 docs/requirements/2026-10-14-serverless-backend/video/search-category.md、verification.md;测试说明和变更日志同步。

最终 head CI

最终 head 2969b027ceb4fd7ff2cec8eda829c827dad73079 的 CI 41026290259 已实际完成:

  • 12 个成功、2 个条件跳过;跳过的是浏览器 E2E/API E2E,不称为真实端到端通过。
  • Serverless API 全量 1760 passed、0 skipped、1 既有 warning,Ruff 通过。
  • Java 后端全量 789 passed、0 failure/error/skip,构建成功。
  • Linux Git 来源/可重现构建、质量门禁、Worker、前端、CLI、AI Agent、Android、iOS、E2E 构建和汇总门禁成功;这些不是 Python 生产部署/切流证明。

写入后回读本证据,并再次匹配精确 head 的已完成检查,再按用户“分批 merge”授权普通合并,不跳过检查。

已合并回读

2026-10-30 16:33:46 +08:00 普通 merge,已回读状态 MERGED、最终 head 不变,合并提交 a48c53233965ceb75879f2bf2f4353780caf6401。本地 master 已快进到同一合并提交且工作区干净。上述 CI 为精确 PR head 的实际证据,不替代合并后线上部署或 Python 真实 FC 验收。

合并提交的自动 CI 41027281175 也已实际成功,14 项全部成功、0 条件跳过,包括现有 Java JAR/Web 的 API/浏览器隔离 E2E;不是 Python FC/各端验收。已核对合并树和通过 PR CI 的树完全相同,均为 2e33f28cd9f713ce60b2fdc8b729b372891ee133。

同一合并提交按既有 master 流程自动触发的 Java/控制台部署 41027281060 已成功,含服务器 Smoke check。没有额外手工发起部署、修改生产配置或将 Python 原型切成生产入口。独享 Mongo13905 已停止并核验监听消失,一次性环境/脚本/数据清理;M007 仅看过源码,未实现、不算已交付。

Record 144 real legacy MVC/full BSON cases and repair 31 reproduced Python compatibility gaps. Guard catalog fixture cleanup and document isolated evidence and remaining cloud gates.
@makewheels
makewheels merged commit a48c532 into master Oct 30, 2026
14 checks passed
@makewheels
makewheels deleted the fix-m010-catalog-contract-20261030 branch October 30, 2026 08:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant