| content |
{"Commits":[{"Sha1":"8ae98649e {"Commits":[{"Sha1":"8ae98649e077fa188f8e9c1b0a11b78a2377c836","Message":"Merge pull request #11 from laoluojuhai/feat/product-catalog-search-and-image-upload\n\nfeat(products): 商品库服务端搜索筛选 + 图片上传至对象存储","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T04:16:44-07:00"},{"Sha1":"6a67a7abf58201b2b407aab3e500b463d3f08bc7","Message":"Merge branch 'feat/product-catalog-search-and-image-upload' of https://github.com/laoluojuhai/juhai-quotation-system into feat/product-catalog-search-and-image-upload\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T04:04:06-07:00"},{"Sha1":"874115874d1ce6a322367e0553a620a531ebdaf9","Message":"fix(e2e): 修两条潜伏五天的失效断言——\u0026\u0026 串行链把 UI 验收挡在门外\n\n上一条提交让 static governance 转绿后,CI 的 Runtime and UI acceptance 才**首次真正\n跑起来**(自 2026-08-06 起每轮都是 SKIPPED),当场暴露两条 E2E 失效断言。二者均由\n35ebc86(2026-08-12)改文案引入而断言没跟上,与本轮重构无关:\n\n① 侧栏入口叫「报价审核」,子页标题已改为「待我审核」——入口名与标题是两个口径,\n 不能因为同一个入口就复用同一个词。\n② 版本徽标由「版本 1」改为紧凑的「v1」(与版本中心的「V1」看齐)。\n 断言收紧为 /·\\s*v1\\s*·/:裸 `v1` 会被报价号或客户名里任何含 v1 的片段撞上,\n 会让断言以错误理由变绿,那恰恰是它该防的漂移。\n\nmodule-integration 的浏览器证据标记同步跟到**标题**而非入口名——写成入口名会被\nopenWorkspaceEntry(page, \"报价审核\") 白白喂饱,标记就不再证明任何事(负向实测:\n把 E2E 里该断言改掉即 exit=1 并命中 browser-name: \"待我审核\")。\n\n顺带删掉上一条提交遗留的死代码:权限判据已随创建卡下沉进 QuotationCreateCard,\nQuotationWorkbench 里的 userCan 不再有消费者,留着会让下一个人以为还有权限逻辑要接。\n\n三级门禁证据(作用域=本地工作区):\n- 静态 pnpm check:22 项全绿 exit=0,16 组负向自检有牙\n- check:runtime:548/548(地板 503;contracts 436 + NestJS 56 + Fastify 56)\n- check:ui:12/12 全绿\n\n教训已回灌 CLAUDE.md:串行 \u0026\u0026 门禁链报出的违规数是**下界不是总数**,\n本轮 CI 报「共 1 处违规」,实际是 4 处静态 + 2 处 E2E。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T04:03:39-07:00"},{"Sha1":"c7d8d5944215315512254bb9a8f6cc2bd937c88f","Message":"Merge branch 'main' into feat/product-catalog-search-and-image-upload","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T03:48:25-07:00"},{"Sha1":"3afb568a1d13a2ceeaf49a2a9bf1d8634f422c23","Message":"fix(gate): 版本中心断言重锚为结构式——距离窗口误杀且漏杀,顺带逼出报价域拆分\n\nPR #11 的 CI 红在 quotation-version-detail-visible。查证为**门禁误杀**:版本中心的\n快照详情一直正常渲染(浏览器实测展开 V1 可见「经济方案 ¥910,000.00 · 1 项明细」),\n只是行内补了 diff 段落与三段设计裁决注释后,两个锚点间距涨到 1309 字符、超过\n{0,500} 距离窗口(after-sales-order-options-hook 同型,本仓第二次踩)。\n\n断言重锚为否定环视 (?:(?!\u003c\\/details\u003e)[\\s\\S])*,语义由「两锚点挨得近」改为\n「快照摘要在版本行元素内部」。差分真值表显示旧写法 4 例错 2 例、两个方向都错:\n不仅误杀,还漏杀「快照挪到行外但离得近」——重锚顺手补上那个洞,并固化为\ncontract-integration.test.mjs 第 24b 条负向用例(实跑 exit=1 且命中预期断言 id)。\n\ncomponent-size 同轮逼出真拆分(门禁明说「先拆分而不是上调登记值」):\n- QuotationWorkbench 661→169:创建卡连同表单状态提为 QuotationCreateCard、\n 单档编辑器提为 QuotationOptionEditor、版本中心提为 QuotationVersionCenter\n- MobileOverview 473→413:报价经营四指标卡提为 OverviewQuoteMetrics\n全部抽为**同文件兄弟组件**——搬到独立文件会让按路径锚定的门禁锚点落空。\nQuotationCreateCard 刻意始终挂载、在 hooks 之后才 return null,保证候选查询的\n发起时机与重构前逐字一致(只搬行不改行为)。登记值同步下调/毕业锁住进步。\n\n⚠️ 抽 OverviewQuoteMetrics 时一度把三元中段当 JSX 搬走并用 \u003c\u003e 包裹,`) : (`\n降格为文本节点原样上屏,且两个分支同时渲染——给有权限的管理员显示「未向当前\n角色开放」。tsc 与 22 项静态门禁全绿,只有浏览器截图抓得到。已修并留档。\n\n证据(作用域=本地工作区):pnpm check 22 项全绿 exit=0、16 组负向自检有牙、\n浏览器实测总览/新建报价/版本中心三处渲染正常。未重跑 check:runtime / check:ui\n(两后端与 contracts 一行未动,那两级证据仍绑定上一轮 commit)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T03:47:39-07:00"}],"HeadCommit":{"Sha1":"8ae98649e077fa188f8e9c1b0a11b78a2377c836","Message":"Merge pull request #11 from laoluojuhai/feat/product-catalog-search-and-image-upload\n\nfeat(products): 商品库服务端搜索筛选 + 图片上传至对象存储","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T04:16:44-07:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/7619cf79681794bf28a8dceeb606c9dcfec21a5c...8ae98649e077fa188f8e9c1b0a11b78a2377c836","Len":41}... |