|
527
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/codex/push-recovery-20260328
|
0
|
{"Commits":[{"Sha1":"6cb389064 {"Commits":[{"Sha1":"6cb389064341dc405e5bfa488121e9a99a0f3d76","Message":"Add governance updates for IA alignment and acceptance coverage\n","AuthorEmail":"jh.sj@jhsjdeMac-Studio.local","AuthorName":"jh.sj","CommitterEmail":"jh.sj@jhsjdeMac-Studio.local","CommitterName":"jh.sj","Timestamp":"2026-03-28T12:11:54+08:00"},{"Sha1":"33b6296c224cf23dbec6bf12343b1fbc9c8b6ed6","Message":"Add fast-xml-parser dependency to lockfile\n","AuthorEmail":"jh.sj@jhsjdeMac-Studio.local","AuthorName":"jh.sj","CommitterEmail":"jh.sj@jhsjdeMac-Studio.local","CommitterName":"jh.sj","Timestamp":"2026-03-28T11:53:03+08:00"},{"Sha1":"e12c0c79e00cd7163d02403e6eb7441f7ae31389","Message":"Consolidate canonical routes and retire legacy module aliases\n","AuthorEmail":"jh.sj@jhsjdeMac-Studio.local","AuthorName":"jh.sj","CommitterEmail":"jh.sj@jhsjdeMac-Studio.local","CommitterName":"jh.sj","Timestamp":"2026-03-27T19:02:57+08:00"},{"Sha1":"f459bc3693e12bebd987606beef7821b79303193","Message":"Align HR and synergy IA docs with inventory supply APIs\n","AuthorEmail":"jh.sj@jhsjdeMac-Studio.local","AuthorName":"jh.sj","CommitterEmail":"jh.sj@jhsjdeMac-Studio.local","CommitterName":"jh.sj","Timestamp":"2026-03-27T18:15:35+08:00"},{"Sha1":"76f250090de52a408ae40384c2a298775a6a5033","Message":"Realign supply chain IA docs and E2E coverage\n","AuthorEmail":"jh.sj@jhsjdeMac-Studio.local","AuthorName":"jh.sj","CommitterEmail":"jh.sj@jhsjdeMac-Studio.local","CommitterName":"jh.sj","Timestamp":"2026-03-27T17:50:15+08:00"}],"HeadCommit":{"Sha1":"6cb389064341dc405e5bfa488121e9a99a0f3d76","Message":"Add governance updates for IA alignment and acceptance coverage\n","AuthorEmail":"jh.sj@jhsjdeMac-Studio.local","AuthorName":"jh.sj","CommitterEmail":"jh.sj@jhsjdeMac-Studio.local","CommitterName":"jh.sj","Timestamp":"2026-03-28T12:11:54+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/c09d9ff6160d851464fbce2a407409d4e8d2bc95...6cb389064341dc405e5bfa488121e9a99a0f3d76","Len":7}...
|
1774672177
|
Edit
Delete
|
|
1997
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/codex/push-recovery-20260328
|
0
|
|
1778625303
|
Edit
Delete
|
|
263
|
1
|
5
|
1
|
2
|
0
|
0
|
refs/heads/detached
|
0
|
|
1773748512
|
Edit
Delete
|
|
264
|
2
|
5
|
1
|
2
|
0
|
0
|
refs/heads/detached
|
0
|
|
1773748512
|
Edit
Delete
|
|
265
|
1
|
5
|
1
|
2
|
0
|
0
|
refs/heads/detached
|
0
|
{"Commits":[{"Sha1":"b6f9b8218 {"Commits":[{"Sha1":"b6f9b8218b26c820d37dd7cf6b2c406afbf656aa","Message":"同步所有\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-17T19:55:00+08:00"}],"HeadCommit":{"Sha1":"b6f9b8218b26c820d37dd7cf6b2c406afbf656aa","Message":"同步所有\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-17T19:55:00+08:00"},"CompareURL":"juhai/testpc/compare/82563bcddd8d32587bc08757c8fdba4bb728fdbe...b6f9b8218b26c820d37dd7cf6b2c406afbf656aa","Len":1}...
|
1773748512
|
Edit
Delete
|
|
266
|
2
|
5
|
1
|
2
|
0
|
0
|
refs/heads/detached
|
0
|
{"Commits":[{"Sha1":"b6f9b8218 {"Commits":[{"Sha1":"b6f9b8218b26c820d37dd7cf6b2c406afbf656aa","Message":"同步所有\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-17T19:55:00+08:00"}],"HeadCommit":{"Sha1":"b6f9b8218b26c820d37dd7cf6b2c406afbf656aa","Message":"同步所有\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-17T19:55:00+08:00"},"CompareURL":"juhai/testpc/compare/82563bcddd8d32587bc08757c8fdba4bb728fdbe...b6f9b8218b26c820d37dd7cf6b2c406afbf656aa","Len":1}...
|
1773748512
|
Edit
Delete
|
|
302
|
1
|
17
|
1
|
2
|
0
|
0
|
refs/heads/detached
|
0
|
|
1773911330
|
Edit
Delete
|
|
303
|
2
|
17
|
1
|
2
|
0
|
0
|
refs/heads/detached
|
0
|
|
1773911330
|
Edit
Delete
|
|
1110
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/docs/base-service-atomicity-rfc
|
0
|
|
1776396760
|
Edit
Delete
|
|
1111
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/docs/base-service-atomicity-rfc
|
0
|
{"Commits":[{"Sha1":"7e9fa6922 {"Commits":[{"Sha1":"7e9fa692276960419fa95d57ebe7395c49960b4c","Message":"docs(rfcs): RFC-0001 BaseService 真正原子化 + D-class 深挖续集\n\n本 PR 是 #36(D-class 首轮盘点)的续集,包含:\n\n1. docs/governance/outbox-d-class-deep-dive-2026-04-17.md\n - 逐个人工判读 11 个\"待查 override\" D-class 文件:\n * 8 个良性(仅 input 预处理 + super.xxx)\n * 4 个预检查微竞态(findFirst 在事务外):expense-category, hr-competency,\n commission-rule, channels\n - 深查 finance-credits 的 4 处 this.model:\n * 🔴 确认为真实假绿(模式 B:数组事务 + 事务外 publishLifecycleEvent)\n * 4 处 publishLifecycleEvent 全在 txn([...]) 外,事件与数据写集彻底分裂\n - 归纳三类系统性假绿:\n * 模式 A:BaseService 架构级(crud.createOne 的 model.create 绕过 tx)\n * 模式 B:数组事务 + 事务外事件\n * 模式 C:业务前置 side-effect 非同事务\n - D-class 43 最终分类:22 真 D / 6 A-override / 8 良性 override / 4 微竞态\n / 2 真假绿(contract-templates + finance-credits)\n\n2. docs/rfcs/0001-base-service-atomicity.md\n - 针对三类假绿模式提出 3 个重构候选方案对比:\n * 方案 A:crud.* 新增 modelOnTx 参数(最小侵入,但类型不安全)\n * 方案 B:BaseService 泛型约束 modelKey,编译期类型锁定(推荐)\n * 方案 C:引入 UnitOfWork 抽象(大侵入,延后到 Q3)\n - 推荐采用方案 B,Sprint 2 Week 5-6 分阶段实施:\n * W5 基础设施:BaseService 泛型 + 22 真 D 文件迁移 + contract-templates /\n finance-credits 手动修复\n * W6 迁移 override:6 A-override + 8 良性 override + 4 微竞态\n * W6 审计升级:audit-outbox-atomicity.ts 新增 TX-BOUND-WRITE /\n ARRAY-TXN-WITH-EVENT / PRE-SIDE-EFFECT 三个判据\n - 含详细迁移风险矩阵与验收标准\n\n纯文档 PR,无代码变更。audit:outbox-atomicity 保持 A=1633/D=43/原子化率 100%\n(未退化)。\n\n关联:Q2 12 周落地计划 Sprint 1 · Data/Governance Squad + Backend Architect\n前序 PR #36(D-class 首轮盘点)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T11:32:29+08:00"}],"HeadCommit":{"Sha1":"7e9fa692276960419fa95d57ebe7395c49960b4c","Message":"docs(rfcs): RFC-0001 BaseService 真正原子化 + D-class 深挖续集\n\n本 PR 是 #36(D-class 首轮盘点)的续集,包含:\n\n1. docs/governance/outbox-d-class-deep-dive-2026-04-17.md\n - 逐个人工判读 11 个\"待查 override\" D-class 文件:\n * 8 个良性(仅 input 预处理 + super.xxx)\n * 4 个预检查微竞态(findFirst 在事务外):expense-category, hr-competency,\n commission-rule, channels\n - 深查 finance-credits 的 4 处 this.model:\n * 🔴 确认为真实假绿(模式 B:数组事务 + 事务外 publishLifecycleEvent)\n * 4 处 publishLifecycleEvent 全在 txn([...]) 外,事件与数据写集彻底分裂\n - 归纳三类系统性假绿:\n * 模式 A:BaseService 架构级(crud.createOne 的 model.create 绕过 tx)\n * 模式 B:数组事务 + 事务外事件\n * 模式 C:业务前置 side-effect 非同事务\n - D-class 43 最终分类:22 真 D / 6 A-override / 8 良性 override / 4 微竞态\n / 2 真假绿(contract-templates + finance-credits)\n\n2. docs/rfcs/0001-base-service-atomicity.md\n - 针对三类假绿模式提出 3 个重构候选方案对比:\n * 方案 A:crud.* 新增 modelOnTx 参数(最小侵入,但类型不安全)\n * 方案 B:BaseService 泛型约束 modelKey,编译期类型锁定(推荐)\n * 方案 C:引入 UnitOfWork 抽象(大侵入,延后到 Q3)\n - 推荐采用方案 B,Sprint 2 Week 5-6 分阶段实施:\n * W5 基础设施:BaseService 泛型 + 22 真 D 文件迁移 + contract-templates /\n finance-credits 手动修复\n * W6 迁移 override:6 A-override + 8 良性 override + 4 微竞态\n * W6 审计升级:audit-outbox-atomicity.ts 新增 TX-BOUND-WRITE /\n ARRAY-TXN-WITH-EVENT / PRE-SIDE-EFFECT 三个判据\n - 含详细迁移风险矩阵与验收标准\n\n纯文档 PR,无代码变更。audit:outbox-atomicity 保持 A=1633/D=43/原子化率 100%\n(未退化)。\n\n关联:Q2 12 周落地计划 Sprint 1 · Data/Governance Squad + Backend Architect\n前序 PR #36(D-class 首轮盘点)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T11:32:29+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...7e9fa692276960419fa95d57ebe7395c49960b4c","Len":1}...
|
1776396760
|
Edit
Delete
|
|
1998
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/docs/base-service-atomicity-rfc
|
0
|
|
1778625303
|
Edit
Delete
|
|
1102
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/docs/q2-2026-landing-plan
|
0
|
|
1776389054
|
Edit
Delete
|
|
1103
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/docs/q2-2026-landing-plan
|
0
|
{"Commits":[{"Sha1":"faf34a7bb {"Commits":[{"Sha1":"faf34a7bb942869bf4cc111c51215701378d2397","Message":"docs(playbook): 归档 Q2 12 周生产落地计划(三轴并行)\n\n- 三阶段路线图(4+4+4 周)覆盖治理债清零、SRE 加固、灰度 GA\n- 6 个 Squad 编制与 RACI,覆盖 SRE/Data/Backend/Frontend/AI/BI\n- 成功标准含 3 组 OKR 共 13 个 KR,均可度量\n- 验收包含 harness 审计命令、SLO 查询、灾难演练场景\n- 关键文件清单明确必须修改/新增/复用的路径\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T09:23:33+08:00"}],"HeadCommit":{"Sha1":"faf34a7bb942869bf4cc111c51215701378d2397","Message":"docs(playbook): 归档 Q2 12 周生产落地计划(三轴并行)\n\n- 三阶段路线图(4+4+4 周)覆盖治理债清零、SRE 加固、灰度 GA\n- 6 个 Squad 编制与 RACI,覆盖 SRE/Data/Backend/Frontend/AI/BI\n- 成功标准含 3 组 OKR 共 13 个 KR,均可度量\n- 验收包含 harness 审计命令、SLO 查询、灾难演练场景\n- 关键文件清单明确必须修改/新增/复用的路径\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T09:23:33+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...faf34a7bb942869bf4cc111c51215701378d2397","Len":1}...
|
1776389054
|
Edit
Delete
|
|
1999
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/docs/q2-2026-landing-plan
|
0
|
|
1778625303
|
Edit
Delete
|
|
1114
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/docs/sprint-1-retro
|
0
|
|
1776405595
|
Edit
Delete
|
|
1115
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/docs/sprint-1-retro
|
0
|
{"Commits":[{"Sha1":"56a7df27f {"Commits":[{"Sha1":"56a7df27f1e7a0b2b9f9136862a817427c4704be","Message":"docs(retro): Q2 Sprint 1 复盘 - 三类假绿发现与 Sprint 2 修订建议\n\n整合 Sprint 1 执行的 6 个 PR(#33-#38)产出,归档本 Sprint 的发现、\n对 Q2 12 周计划的影响、以及 Sprint 2 的修订建议。\n\nTL;DR:Sprint 1 原计划主题 \"BLOCKER 清零 + 底座加固\",实际完成 1 个\nBLOCKER + 挖出 3 类系统性假绿 + 完成 RFC + 自动化审计升级。最重大发现:\nHarness v5.3 宣称的 \"原子化率 100%\" 是建立在有漏洞的审计判据之上的\n虚假基线,V2 审计扫出 297 处 TX-BOUND-WRITE + 5 处 ARRAY-TXN-WITH-EVENT\n系统性假绿。\n\n文档内容:\n- 6 个 PR 的交付清单与净增(代码 +274 / 文档 +1145)\n- 三类假绿模式(A 架构级 / B 数组事务 / C 业务前置 side-effect)\n 及各自影响面统计\n- 其他发现:4 个预检查微竞态 / 8 个良性 override / 6 个 A-override\n- 原计划 vs 实际进度对比(实际只完成 Data Squad,其他 Squad 未启动)\n- 超出原计划范围的 7 项高价值交付\n- 对 Q2 12 周计划的修订建议:\n * 阶段 A 验收门新增 v2TxBoundWrite + v2ArrayTxnWithEvent = 0\n * Sprint 2 工作量重估(+30% 架构重构开销)\n * 推荐选项 B 并行分攻(Backend Architect 主攻架构 /\n SRE/Data 并行推进原计划 SRE 项)\n- 执行层面洞察:做对了什么 + 应该做得更好\n- Sprint 2 启动清单\n\n纯文档 PR,无代码变更。作为技术委员会评审 Sprint 2 走向的依据。\n\n关联:Q2 12 周落地计划 Sprint 1 收尾\n前序 PR: #33 (计划) / #34 (BLOCKER) / #35 (bom 测试) /\n #36 (D-class 盘点) / #37 (RFC) / #38 (审计升级)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T13:59:46+08:00"}],"HeadCommit":{"Sha1":"56a7df27f1e7a0b2b9f9136862a817427c4704be","Message":"docs(retro): Q2 Sprint 1 复盘 - 三类假绿发现与 Sprint 2 修订建议\n\n整合 Sprint 1 执行的 6 个 PR(#33-#38)产出,归档本 Sprint 的发现、\n对 Q2 12 周计划的影响、以及 Sprint 2 的修订建议。\n\nTL;DR:Sprint 1 原计划主题 \"BLOCKER 清零 + 底座加固\",实际完成 1 个\nBLOCKER + 挖出 3 类系统性假绿 + 完成 RFC + 自动化审计升级。最重大发现:\nHarness v5.3 宣称的 \"原子化率 100%\" 是建立在有漏洞的审计判据之上的\n虚假基线,V2 审计扫出 297 处 TX-BOUND-WRITE + 5 处 ARRAY-TXN-WITH-EVENT\n系统性假绿。\n\n文档内容:\n- 6 个 PR 的交付清单与净增(代码 +274 / 文档 +1145)\n- 三类假绿模式(A 架构级 / B 数组事务 / C 业务前置 side-effect)\n 及各自影响面统计\n- 其他发现:4 个预检查微竞态 / 8 个良性 override / 6 个 A-override\n- 原计划 vs 实际进度对比(实际只完成 Data Squad,其他 Squad 未启动)\n- 超出原计划范围的 7 项高价值交付\n- 对 Q2 12 周计划的修订建议:\n * 阶段 A 验收门新增 v2TxBoundWrite + v2ArrayTxnWithEvent = 0\n * Sprint 2 工作量重估(+30% 架构重构开销)\n * 推荐选项 B 并行分攻(Backend Architect 主攻架构 /\n SRE/Data 并行推进原计划 SRE 项)\n- 执行层面洞察:做对了什么 + 应该做得更好\n- Sprint 2 启动清单\n\n纯文档 PR,无代码变更。作为技术委员会评审 Sprint 2 走向的依据。\n\n关联:Q2 12 周落地计划 Sprint 1 收尾\n前序 PR: #33 (计划) / #34 (BLOCKER) / #35 (bom 测试) /\n #36 (D-class 盘点) / #37 (RFC) / #38 (审计升级)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T13:59:46+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...56a7df27f1e7a0b2b9f9136862a817427c4704be","Len":1}...
|
1776405595
|
Edit
Delete
|
|
2000
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/docs/sprint-1-retro
|
0
|
|
1778625303
|
Edit
Delete
|
|
1118
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/docs/tx-bound-write-samples
|
0
|
|
1776408604
|
Edit
Delete
|
|
1119
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/docs/tx-bound-write-samples
|
0
|
{"Commits":[{"Sha1":"94bdd3e0c {"Commits":[{"Sha1":"94bdd3e0c36e7ba8e9380ddb74627492acc988dc","Message":"docs(governance): TX-BOUND-WRITE 规则精度抽样验证 · 10 处样本判定\n\n对 PR #38 新增的 TX-BOUND-WRITE 判据(297 处命中)做规则精度验证。\n抽样 10 处覆盖 TOP 2 文件(groupbuy-influencers / supply-chain-platform)\n+ 中等命中(ad-biddings / ad-placement / ai-autopilot / assembly /\nfinance-credits)+ 代表性小模块(alliance-campaigns / approvals /\ngeo-keywords),每处读 20-40 行上下文逐个判定。\n\n抽样结果:\n- 🔴 明确真阳性:4/10 = 40%\n * ad-biddings:124(create + 事务外事件)\n * alliance-campaign:46(super.create + 独立 createMany,模式 C)\n * geo-keywords:65(create + 事务外 publishLifecycleEvent)\n * supply-chain-platform:418(updateMany + create 分离,模式 C)\n- 🟠 归类错误(仍是假绿):1/10 = 10%\n * finance-credits:193 应归模式 B(txn([...]) 未被识别为事务)\n- ⚠️ 难判(偏真阳):3/10 = 30%\n * ai-autopilot:649(helper 函数,需追调用方)\n * assembly:404(紧跟 recalculateBomCost 语义未定)\n * groupbuy-influencers:153(createWithBizCodeRetry 包装)\n- ⚠️ 误报倾向:2/10 = 20%\n * ad-placement:405(方法内无事件发布)\n * approval:395(projection 同步非主写入)\n\n保守估计 297 处中:\n- ~50% (约 150 处) 明确真阳性假绿\n- ~30% (约 90 处) 需 helper 追踪确认\n- ~20% (约 60 处) 误报\n\n规则改进建议(V2.1):\n1. 方法作用域判定:仅当 write 所在方法体内也有 publishEvent 才命中\n → 解决 20% 误报\n2. 识别 txn/inTransaction/runInTransaction 别名为事务范围\n → 解决 10% 归类错\n3. helper 深度追踪(Sprint 3 / Q3 再升级)\n → 解决 30% 难判\n4. 可选:projection/refreshView/aggregate 方法白名单\n\n对 Sprint 2 迁移计划的影响:\n- 攻击清单从 297 收敛为 ~150 明确真阳 + ~90 需深挖\n- Sprint 2 W5 前置完成 V2.1 升级(改进 1+2),再用新 audit 重扫\n- Sprint 2 W5-W6 按 V2.1 精确列表迁移\n- Sprint 2 W6 末启用 --strict-v2 硬门禁\n\n本 PR 纯文档,无代码变更。依赖 #38 分支。合并顺序:#38 → 本 PR。\n\n关联:Q2 Sprint 2 迁移前置准备\n前序 PR:#38 V2 审计升级 / #40 BaseServiceV2 PoC\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T14:49:49+08:00"}],"HeadCommit":{"Sha1":"94bdd3e0c36e7ba8e9380ddb74627492acc988dc","Message":"docs(governance): TX-BOUND-WRITE 规则精度抽样验证 · 10 处样本判定\n\n对 PR #38 新增的 TX-BOUND-WRITE 判据(297 处命中)做规则精度验证。\n抽样 10 处覆盖 TOP 2 文件(groupbuy-influencers / supply-chain-platform)\n+ 中等命中(ad-biddings / ad-placement / ai-autopilot / assembly /\nfinance-credits)+ 代表性小模块(alliance-campaigns / approvals /\ngeo-keywords),每处读 20-40 行上下文逐个判定。\n\n抽样结果:\n- 🔴 明确真阳性:4/10 = 40%\n * ad-biddings:124(create + 事务外事件)\n * alliance-campaign:46(super.create + 独立 createMany,模式 C)\n * geo-keywords:65(create + 事务外 publishLifecycleEvent)\n * supply-chain-platform:418(updateMany + create 分离,模式 C)\n- 🟠 归类错误(仍是假绿):1/10 = 10%\n * finance-credits:193 应归模式 B(txn([...]) 未被识别为事务)\n- ⚠️ 难判(偏真阳):3/10 = 30%\n * ai-autopilot:649(helper 函数,需追调用方)\n * assembly:404(紧跟 recalculateBomCost 语义未定)\n * groupbuy-influencers:153(createWithBizCodeRetry 包装)\n- ⚠️ 误报倾向:2/10 = 20%\n * ad-placement:405(方法内无事件发布)\n * approval:395(projection 同步非主写入)\n\n保守估计 297 处中:\n- ~50% (约 150 处) 明确真阳性假绿\n- ~30% (约 90 处) 需 helper 追踪确认\n- ~20% (约 60 处) 误报\n\n规则改进建议(V2.1):\n1. 方法作用域判定:仅当 write 所在方法体内也有 publishEvent 才命中\n → 解决 20% 误报\n2. 识别 txn/inTransaction/runInTransaction 别名为事务范围\n → 解决 10% 归类错\n3. helper 深度追踪(Sprint 3 / Q3 再升级)\n → 解决 30% 难判\n4. 可选:projection/refreshView/aggregate 方法白名单\n\n对 Sprint 2 迁移计划的影响:\n- 攻击清单从 297 收敛为 ~150 明确真阳 + ~90 需深挖\n- Sprint 2 W5 前置完成 V2.1 升级(改进 1+2),再用新 audit 重扫\n- Sprint 2 W5-W6 按 V2.1 精确列表迁移\n- Sprint 2 W6 末启用 --strict-v2 硬门禁\n\n本 PR 纯文档,无代码变更。依赖 #38 分支。合并顺序:#38 → 本 PR。\n\n关联:Q2 Sprint 2 迁移前置准备\n前序 PR:#38 V2 审计升级 / #40 BaseServiceV2 PoC\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T14:49:49+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/8a95110c2f089d5e800363910dee9bd22993258c...94bdd3e0c36e7ba8e9380ddb74627492acc988dc","Len":1}...
|
1776408604
|
Edit
Delete
|
|
2001
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/docs/tx-bound-write-samples
|
0
|
|
1778625303
|
Edit
Delete
|
|
1106
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/api-tests-bom-crud
|
0
|
|
1776391397
|
Edit
Delete
|
|
1107
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/api-tests-bom-crud
|
0
|
{"Commits":[{"Sha1":"7031b8c0b {"Commits":[{"Sha1":"7031b8c0b8d37548dac36f74e76bc0e887ba8005","Message":"test(bom): 扩充 API 测试至完整 CRUD + 状态机 + 租户隔离\n\napi-test-coverage 审计之前将 bom 标为 probe-only (缺 detail/create/update/delete),\n仅覆盖 list / stats / auth401 三个浅层断言。本次扩充将 bom 升级至 complete-crud:\n\n覆盖维度:\n- create / detail / update / delete 全链路(含 draft 状态守卫)\n- 状态机:activate → update 被拒 / delete 被拒 / deactivate 回滚\n- 跨租户隔离:foreign tenant 对 detail / update / delete 均返回 404\n- auth401:未携带 token 请求返回 401\n- list / stats:保留原结构化响应校验\n\naudit:api-test-coverage 复跑验证 bom.status = \"complete-crud\",\ncoverage.list/detail/create/update/delete/stats/auth401 全部 true,\n覆盖 activate action。全量 complete-crud 模块数由 62 升至 63。\n\n⚠️ 本地 Docker daemon 未运行,依赖 postgres-test / redis-test 的 supertest\n执行未在本地跑通。依靠 GitHub Actions CI 的 e2e-tests.yml / migration-safety.yml\n在真实容器中执行验证。\n\nTypeScript 类型检查通过(tsc --noEmit 无 bom.test.ts 相关错误)。\n\n关联:Q2 12 周落地计划 Sprint 1 · Backend Quality Squad · KR2.2\n(API 测试覆盖 probe-only 93 → ≤ 20 / 完整 CRUD 62 → ≥ 140)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T10:03:09+08:00"}],"HeadCommit":{"Sha1":"7031b8c0b8d37548dac36f74e76bc0e887ba8005","Message":"test(bom): 扩充 API 测试至完整 CRUD + 状态机 + 租户隔离\n\napi-test-coverage 审计之前将 bom 标为 probe-only (缺 detail/create/update/delete),\n仅覆盖 list / stats / auth401 三个浅层断言。本次扩充将 bom 升级至 complete-crud:\n\n覆盖维度:\n- create / detail / update / delete 全链路(含 draft 状态守卫)\n- 状态机:activate → update 被拒 / delete 被拒 / deactivate 回滚\n- 跨租户隔离:foreign tenant 对 detail / update / delete 均返回 404\n- auth401:未携带 token 请求返回 401\n- list / stats:保留原结构化响应校验\n\naudit:api-test-coverage 复跑验证 bom.status = \"complete-crud\",\ncoverage.list/detail/create/update/delete/stats/auth401 全部 true,\n覆盖 activate action。全量 complete-crud 模块数由 62 升至 63。\n\n⚠️ 本地 Docker daemon 未运行,依赖 postgres-test / redis-test 的 supertest\n执行未在本地跑通。依靠 GitHub Actions CI 的 e2e-tests.yml / migration-safety.yml\n在真实容器中执行验证。\n\nTypeScript 类型检查通过(tsc --noEmit 无 bom.test.ts 相关错误)。\n\n关联:Q2 12 周落地计划 Sprint 1 · Backend Quality Squad · KR2.2\n(API 测试覆盖 probe-only 93 → ≤ 20 / 完整 CRUD 62 → ≥ 140)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T10:03:09+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...7031b8c0b8d37548dac36f74e76bc0e887ba8005","Len":1}...
|
1776391397
|
Edit
Delete
|
|
2002
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/feat/api-tests-bom-crud
|
0
|
|
1778625303
|
Edit
Delete
|
|
1112
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/audit-outbox-tx-bound
|
0
|
|
1776402871
|
Edit
Delete
|
|
1113
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/audit-outbox-tx-bound
|
0
|
{"Commits":[{"Sha1":"8a95110c2 {"Commits":[{"Sha1":"8a95110c2f089d5e800363910dee9bd22993258c","Message":"feat(audit): outbox-atomicity 新增 V2 判据 TX-BOUND-WRITE / ARRAY-TXN-WITH-EVENT\n\n对应 RFC-0001(BaseService 真正原子化)的审计脚本升级。在保留原有\nA/B/C/D 四分类判据不变的前提下,新增两类 WARNING 级判据暴露 Sprint 1 手工\n盘点中发现的两类系统性假绿:\n\n1. TX-BOUND-WRITE(模式 A · BaseService 架构级)\n - 扫描任一含 publishEvent/publishLifecycleEvent 调用的 service 文件\n - 对所有 this.model.\u003cwrite\u003e / prisma.\u003cmodel\u003e.\u003cwrite\u003e 出现位置,若其不在\n 任何 $transaction 回调 / tx-helper 函数范围内,记为 TX-BOUND-WRITE\n - 语义:data write 在默认 prisma client 上执行(未绑定 tx),publishEvent\n 失败或 tx 回滚时数据与事件会分裂\n\n2. ARRAY-TXN-WITH-EVENT(模式 B · 数组事务 + 事务外事件)\n - 扫描 prisma.$transaction([...]) / txn([...]) 数组形式事务\n - 若其所在方法体内(数组事务结束行之后)还有事务外的 publishEvent /\n publishLifecycleEvent 调用,则判 ARRAY-TXN-WITH-EVENT\n - 语义:数组事务无法传递 tx 客户端,后续事件必然独立事务\n\n输出设计:\n- V2 判据默认输出为 WARNING 级(不阻塞 CI),summary 新增\n v2TxBoundWrite / v2ArrayTxnWithEvent 两个计数\n- JSON 报告新增 v2Findings 数组记录 {ruleId, severity, file, line, code, hint}\n- 控制台输出前 15 条 finding,其余存档 JSON\n- 新增 --strict-v2 flag(B+C 为 0 时才触发),Sprint 2 完成迁移后可启用为\n 硬门禁\n\n首次运行结果(main HEAD):\n- A=1633 / B=0 / C=0 / D=43 / 原子化率 100%(未退化)\n- TX-BOUND-WRITE: 297 命中(顶部文件 groupbuy-influencers=20 /\n supply-chain-platform=19 / geo-keywords=10 / price-books=10 /\n finance-credits=9)\n- ARRAY-TXN-WITH-EVENT: 5 命中(finance-credits 4 处 + 新发现\n price-books 1 处)\n\nARRAY-TXN-WITH-EVENT 5 处 100% 对应 Sprint 1 手工盘点(finance-credits 4 处\n+ 1 处 price-books 新发现),印证规则精度高。TX-BOUND-WRITE 297 处为 Sprint 2\n架构级迁移的全量攻击清单。\n\ntsc --noEmit 无新增错误。\n\n关联:Q2 Sprint 1 · Backend Architect RFC-0001 预研\n前序:#36 D-class 首轮盘点 / #37 D-class 深挖 + RFC-0001\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T13:14:22+08:00"}],"HeadCommit":{"Sha1":"8a95110c2f089d5e800363910dee9bd22993258c","Message":"feat(audit): outbox-atomicity 新增 V2 判据 TX-BOUND-WRITE / ARRAY-TXN-WITH-EVENT\n\n对应 RFC-0001(BaseService 真正原子化)的审计脚本升级。在保留原有\nA/B/C/D 四分类判据不变的前提下,新增两类 WARNING 级判据暴露 Sprint 1 手工\n盘点中发现的两类系统性假绿:\n\n1. TX-BOUND-WRITE(模式 A · BaseService 架构级)\n - 扫描任一含 publishEvent/publishLifecycleEvent 调用的 service 文件\n - 对所有 this.model.\u003cwrite\u003e / prisma.\u003cmodel\u003e.\u003cwrite\u003e 出现位置,若其不在\n 任何 $transaction 回调 / tx-helper 函数范围内,记为 TX-BOUND-WRITE\n - 语义:data write 在默认 prisma client 上执行(未绑定 tx),publishEvent\n 失败或 tx 回滚时数据与事件会分裂\n\n2. ARRAY-TXN-WITH-EVENT(模式 B · 数组事务 + 事务外事件)\n - 扫描 prisma.$transaction([...]) / txn([...]) 数组形式事务\n - 若其所在方法体内(数组事务结束行之后)还有事务外的 publishEvent /\n publishLifecycleEvent 调用,则判 ARRAY-TXN-WITH-EVENT\n - 语义:数组事务无法传递 tx 客户端,后续事件必然独立事务\n\n输出设计:\n- V2 判据默认输出为 WARNING 级(不阻塞 CI),summary 新增\n v2TxBoundWrite / v2ArrayTxnWithEvent 两个计数\n- JSON 报告新增 v2Findings 数组记录 {ruleId, severity, file, line, code, hint}\n- 控制台输出前 15 条 finding,其余存档 JSON\n- 新增 --strict-v2 flag(B+C 为 0 时才触发),Sprint 2 完成迁移后可启用为\n 硬门禁\n\n首次运行结果(main HEAD):\n- A=1633 / B=0 / C=0 / D=43 / 原子化率 100%(未退化)\n- TX-BOUND-WRITE: 297 命中(顶部文件 groupbuy-influencers=20 /\n supply-chain-platform=19 / geo-keywords=10 / price-books=10 /\n finance-credits=9)\n- ARRAY-TXN-WITH-EVENT: 5 命中(finance-credits 4 处 + 新发现\n price-books 1 处)\n\nARRAY-TXN-WITH-EVENT 5 处 100% 对应 Sprint 1 手工盘点(finance-credits 4 处\n+ 1 处 price-books 新发现),印证规则精度高。TX-BOUND-WRITE 297 处为 Sprint 2\n架构级迁移的全量攻击清单。\n\ntsc --noEmit 无新增错误。\n\n关联:Q2 Sprint 1 · Backend Architect RFC-0001 预研\n前序:#36 D-class 首轮盘点 / #37 D-class 深挖 + RFC-0001\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T13:14:22+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...8a95110c2f089d5e800363910dee9bd22993258c","Len":1}...
|
1776402871
|
Edit
Delete
|
|
2003
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/feat/audit-outbox-tx-bound
|
0
|
|
1778625303
|
Edit
Delete
|
|
1134
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/audit-v2.1-improvements
|
0
|
|
1776410323
|
Edit
Delete
|
|
1135
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/audit-v2.1-improvements
|
0
|
{"Commits":[{"Sha1":"280c26d50 {"Commits":[{"Sha1":"280c26d501e997899fd203579d774521be2fe166","Message":"feat(audit): V2.1 规则精度改进 - 方法作用域 + 数组事务豁免 + txn 别名\n\n基于 PR #41 的抽样验证(V2 规则 20% 误报 / 10% 归类错),对 V2 判据做三项\n改进,命中数从 297 降至 64(↓78%),且修复 finance-credits 9 处 TX-BOUND-WRITE\n假归类问题。\n\n改进 1 · 方法作用域判定(解决误报)\n detectTxBoundWrite 升级为方法级作用域:仅当 this.model.\u003cwrite\u003e 或\n prisma.\u003cmodel\u003e.\u003cwrite\u003e 所在方法体内也存在 publishEvent/publishLifecycleEvent\n 调用时才命中。消除 \"同文件其他方法发事件但本方法只是 updateMany/projection\n 同步\" 类误报(如 ad-placement:405 updateCampaign / approval:395\n syncProjectionAfterWorkflowDecision 两处抽样已被正确豁免)。\n\n改进 2 · txn 别名识别(解决归类错)\n findArrayTransactionRanges 正则扩展以识别 txn/inTransaction/runInTransaction\n 作为 prisma.$transaction 的内部 helper 别名。\n\n改进 3 · detectTxBoundWrite 豁免数组事务范围(抽样报告未覆盖的缺陷)\n V2 版本 detectTxBoundWrite 只豁免 $transaction callback 与 tx-helper 函数,\n 未豁免数组事务范围,导致 finance-credits L193 this.model.upsert 虽在\n txn([...]) 内却被错报为 TX-BOUND-WRITE。补齐:detectTxBoundWrite 现同时\n 豁免 arrayTxRanges,避免与 ARRAY-TXN-WITH-EVENT 重复归类。\n\n验证(对比 V2 vs V2.1):\n- TX-BOUND-WRITE: 297 → 64 (↓78%)\n- ARRAY-TXN-WITH-EVENT: 5 → 5 (不变,finance-credits 4 + price-books 1)\n- A-class: 1633 → 1633 (不变)\n- B/C/D-class: 全部不变\n- ad-placement:405 (误报) → 已豁免\n- approval:395 (误报) → 已豁免\n- finance-credits L193-267 / L454-503 (9 处归类错) → 已豁免,只剩\n L224/273/477/518 四处正确的 ARRAY-TXN-WITH-EVENT\n- geo-keywords / ad-biddings / price-books 等真阳性 → 仍命中\n\n抽样报告 PR #41 预测 V2.1 会收敛到 ~150 处,实际 64 处,说明方法作用域 +\n数组事务豁免联合比预期更有效。这 64 处即 Sprint 2 的精确攻击清单。\n\ntsc --noEmit 无新增错误。\n\nSprint 2 路径微调:原计划 W5 需要先实施 V2.1 再迁移,现在 V2.1 已预实施\n(本 PR),Sprint 2 W5 直接按 64 处清单启动迁移即可。\n\n关联:Q2 Sprint 2 迁移前置\n前序:#38 V2 审计升级 / #41 精度抽样验证\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T15:18:26+08:00"}],"HeadCommit":{"Sha1":"280c26d501e997899fd203579d774521be2fe166","Message":"feat(audit): V2.1 规则精度改进 - 方法作用域 + 数组事务豁免 + txn 别名\n\n基于 PR #41 的抽样验证(V2 规则 20% 误报 / 10% 归类错),对 V2 判据做三项\n改进,命中数从 297 降至 64(↓78%),且修复 finance-credits 9 处 TX-BOUND-WRITE\n假归类问题。\n\n改进 1 · 方法作用域判定(解决误报)\n detectTxBoundWrite 升级为方法级作用域:仅当 this.model.\u003cwrite\u003e 或\n prisma.\u003cmodel\u003e.\u003cwrite\u003e 所在方法体内也存在 publishEvent/publishLifecycleEvent\n 调用时才命中。消除 \"同文件其他方法发事件但本方法只是 updateMany/projection\n 同步\" 类误报(如 ad-placement:405 updateCampaign / approval:395\n syncProjectionAfterWorkflowDecision 两处抽样已被正确豁免)。\n\n改进 2 · txn 别名识别(解决归类错)\n findArrayTransactionRanges 正则扩展以识别 txn/inTransaction/runInTransaction\n 作为 prisma.$transaction 的内部 helper 别名。\n\n改进 3 · detectTxBoundWrite 豁免数组事务范围(抽样报告未覆盖的缺陷)\n V2 版本 detectTxBoundWrite 只豁免 $transaction callback 与 tx-helper 函数,\n 未豁免数组事务范围,导致 finance-credits L193 this.model.upsert 虽在\n txn([...]) 内却被错报为 TX-BOUND-WRITE。补齐:detectTxBoundWrite 现同时\n 豁免 arrayTxRanges,避免与 ARRAY-TXN-WITH-EVENT 重复归类。\n\n验证(对比 V2 vs V2.1):\n- TX-BOUND-WRITE: 297 → 64 (↓78%)\n- ARRAY-TXN-WITH-EVENT: 5 → 5 (不变,finance-credits 4 + price-books 1)\n- A-class: 1633 → 1633 (不变)\n- B/C/D-class: 全部不变\n- ad-placement:405 (误报) → 已豁免\n- approval:395 (误报) → 已豁免\n- finance-credits L193-267 / L454-503 (9 处归类错) → 已豁免,只剩\n L224/273/477/518 四处正确的 ARRAY-TXN-WITH-EVENT\n- geo-keywords / ad-biddings / price-books 等真阳性 → 仍命中\n\n抽样报告 PR #41 预测 V2.1 会收敛到 ~150 处,实际 64 处,说明方法作用域 +\n数组事务豁免联合比预期更有效。这 64 处即 Sprint 2 的精确攻击清单。\n\ntsc --noEmit 无新增错误。\n\nSprint 2 路径微调:原计划 W5 需要先实施 V2.1 再迁移,现在 V2.1 已预实施\n(本 PR),Sprint 2 W5 直接按 64 处清单启动迁移即可。\n\n关联:Q2 Sprint 2 迁移前置\n前序:#38 V2 审计升级 / #41 精度抽样验证\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T15:18:26+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/8a95110c2f089d5e800363910dee9bd22993258c...280c26d501e997899fd203579d774521be2fe166","Len":1}...
|
1776410323
|
Edit
Delete
|
|
1136
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/audit-v2.1-improvements
|
0
|
{"Commits":[{"Sha1":"5c3113137 {"Commits":[{"Sha1":"5c31131371cccf1842c6ed8aa4df13df09861249","Message":"refactor(geo-keywords): 原子化 7 个写链 - RFC-0001 方案 B 端到端样板\n\n将 createKeyword / updateKeyword / deleteKeyword / recordRanking /\ntoggleKeywordStatus / batchDeleteKeywords / checkRanking 全部收口为\n`$transaction + tx.\u003cmodel\u003e.* + publishLifecycleEvent({ tx })`,\n让业务写集与 outbox 事件共享同一事务边界。\n\n- V2.1 TX-BOUND-WRITE: 全局命中 64→54,geo-keyword 模块 10→0\n- batchDelete 的 Promise.all 事件改串行,避免在事务回调内并发写同一 TransactionClient\n- 单测:$transaction mock 兼容 callback/array 两种语义并把 mockPrisma 作为\n TransactionClient 透回,5 个写链新增 `tx: mockPrisma` 透传断言(8/8 pass)\n\n作为 RFC-0001 方案 B 的端到端样板,剩余 54 条 TX-BOUND-WRITE 与 5 条\nARRAY-TXN-WITH-EVENT 按 Sprint 2 W6 依此模板批量处理。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-22T22:02:35+08:00"}],"HeadCommit":{"Sha1":"5c31131371cccf1842c6ed8aa4df13df09861249","Message":"refactor(geo-keywords): 原子化 7 个写链 - RFC-0001 方案 B 端到端样板\n\n将 createKeyword / updateKeyword / deleteKeyword / recordRanking /\ntoggleKeywordStatus / batchDeleteKeywords / checkRanking 全部收口为\n`$transaction + tx.\u003cmodel\u003e.* + publishLifecycleEvent({ tx })`,\n让业务写集与 outbox 事件共享同一事务边界。\n\n- V2.1 TX-BOUND-WRITE: 全局命中 64→54,geo-keyword 模块 10→0\n- batchDelete 的 Promise.all 事件改串行,避免在事务回调内并发写同一 TransactionClient\n- 单测:$transaction mock 兼容 callback/array 两种语义并把 mockPrisma 作为\n TransactionClient 透回,5 个写链新增 `tx: mockPrisma` 透传断言(8/8 pass)\n\n作为 RFC-0001 方案 B 的端到端样板,剩余 54 条 TX-BOUND-WRITE 与 5 条\nARRAY-TXN-WITH-EVENT 按 Sprint 2 W6 依此模板批量处理。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-22T22:02:35+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/280c26d501e997899fd203579d774521be2fe166...5c31131371cccf1842c6ed8aa4df13df09861249","Len":1}...
|
1776867159
|
Edit
Delete
|
|
1207
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/audit-v2.1-improvements
|
0
|
{"Commits":[{"Sha1":"fa2dbcdf3 {"Commits":[{"Sha1":"fa2dbcdf3ad8d2db0a53e7c03d418f402bdfddbc","Message":"chore: 阶段性更新 - Sentry 集成 + 限流分档 + P0 链路测试 + 审计报告刷新\n\n- backend: 接入 Sentry 错误追踪 + uncaughtException 处理;advanced-rate-limiter\n 分档配置(standard/batch/write/sensitive);ticket-workflow / product-categories /\n alliance-agreement schema 修复 + 单测补齐\n- e2e: 新增 P0 链路测试运行器(ui-chain-runner / chain-context / chain-runner /\n stability-trend)及 trend 分析脚本;helpers 单测覆盖\n- deploy: blue-green compose / k8s configmap / api-deployment 调整;\n 新增 docs/deploy/blue-green-runbook.md\n- reports: 刷新审计快照(prisma-zod-contract 4-17/4-22、模块评分、\n 租户安全、API 覆盖率、approval-governance 等)\n- env.example: 文档化 SENTRY_DSN / RATE_LIMIT_* 分档 / EXIT_ON_UNCAUGHT_EXCEPTION\n\n排除:backend/.env(含真实开发密钥)、deploy/kubernetes/secrets.yaml(k8s 密钥模板)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-24T23:28:12+08:00"}],"HeadCommit":{"Sha1":"fa2dbcdf3ad8d2db0a53e7c03d418f402bdfddbc","Message":"chore: 阶段性更新 - Sentry 集成 + 限流分档 + P0 链路测试 + 审计报告刷新\n\n- backend: 接入 Sentry 错误追踪 + uncaughtException 处理;advanced-rate-limiter\n 分档配置(standard/batch/write/sensitive);ticket-workflow / product-categories /\n alliance-agreement schema 修复 + 单测补齐\n- e2e: 新增 P0 链路测试运行器(ui-chain-runner / chain-context / chain-runner /\n stability-trend)及 trend 分析脚本;helpers 单测覆盖\n- deploy: blue-green compose / k8s configmap / api-deployment 调整;\n 新增 docs/deploy/blue-green-runbook.md\n- reports: 刷新审计快照(prisma-zod-contract 4-17/4-22、模块评分、\n 租户安全、API 覆盖率、approval-governance 等)\n- env.example: 文档化 SENTRY_DSN / RATE_LIMIT_* 分档 / EXIT_ON_UNCAUGHT_EXCEPTION\n\n排除:backend/.env(含真实开发密钥)、deploy/kubernetes/secrets.yaml(k8s 密钥模板)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-24T23:28:12+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/5c31131371cccf1842c6ed8aa4df13df09861249...fa2dbcdf3ad8d2db0a53e7c03d418f402bdfddbc","Len":1}...
|
1777044501
|
Edit
Delete
|
|
2004
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/feat/audit-v2.1-improvements
|
0
|
|
1778625303
|
Edit
Delete
|
|
1116
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/base-service-v2-poc
|
0
|
|
1776406532
|
Edit
Delete
|
|
1117
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/feat/base-service-v2-poc
|
0
|
{"Commits":[{"Sha1":"c438f31da {"Commits":[{"Sha1":"c438f31dae2fd15bc8ae3fd5419a19394c7191cc","Message":"feat(shared): BaseServiceV2 PoC(RFC-0001 方案 B 类型签名验证)\n\nSprint 2 样本 PoC:验证 RFC-0001 方案 B 的 TypeScript 泛型约束\n(TModelKey extends keyof Prisma.TransactionClient) 在 Prisma 5.22 下可\n编译,且能让子类在编译期被强制声明真实的 Prisma model key。\n\n核心设计(对应 RFC-0001 方案 B):\n\n1. backend/src/shared/services/base-service-v2.ts(226 行)\n - abstract class BaseServiceV2\u003cTEntity, TCreate, TUpdate, TModelKey\u003e\n - TModelKey 泛型约束:extends keyof Prisma.TransactionClient\n - 子类通过 protected abstract readonly modelKey: TModelKey 声明\n - create/update/delete 内部 prisma.$transaction(async tx =\u003e ...):\n * 数据写入走 tx[this.modelKey](绑定到 tx 客户端)\n * 事件发布走 publishEventInTransaction(tx, ...)(同事务)\n * 共享同一 $transaction → 彻底消除模式 A \"data write 绕 tx\" 假绿\n - 30s 事务超时默认值\n\n2. backend/src/shared/services/__examples__/base-service-v2-samples.ts(144 行)\n - 3 个样本子类演示 modelKey 泛型锁定:\n * ReconciliationServiceV2Sample(modelKey='auto_match_rules')\n * RenewalsServiceV2Sample(modelKey='renewals')\n * CourseServiceV2Sample(modelKey='hr_courses')\n - 含反例注释:bogus_table 会触发 TypeScript 编译错误\n \"Type '\\\"not_a_real_table\\\"' does not satisfy the constraint\n 'keyof TransactionClient'\",证明编译期约束有效\n\n验证:\n- tsc --noEmit 对新增文件零错误(全工作区其他错误均来自预存在的\n journey-orchestration 模块 Prisma schema 不同步问题,与本 PR 无关)\n- 本 PoC 不在生产路径上使用,不导入任何生产 controller/routes/main.ts\n- 纯技术可行性验证,供技术委员会评审 RFC-0001 方案 B\n\nSprint 2 正式迁移路线(RFC-0001 W5-W6):\n1. 合并本 PoC 后,Backend Architect 基于 BaseServiceV2 产出 PR\n2. 按优先级顺序迁移:22 真 D → 6 A-override → 8 良性 override → 4 微竞态\n3. 用 V2 审计判据(PR #38)作为 gate,迁移完成后启用 --strict-v2\n\n关联:Q2 Sprint 2 预研 · RFC-0001 方案 B 技术可行性验证\n前序:#36 D-class 盘点 / #37 RFC-0001 / #38 V2 审计升级 / #39 Sprint 1 复盘\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T14:15:21+08:00"}],"HeadCommit":{"Sha1":"c438f31dae2fd15bc8ae3fd5419a19394c7191cc","Message":"feat(shared): BaseServiceV2 PoC(RFC-0001 方案 B 类型签名验证)\n\nSprint 2 样本 PoC:验证 RFC-0001 方案 B 的 TypeScript 泛型约束\n(TModelKey extends keyof Prisma.TransactionClient) 在 Prisma 5.22 下可\n编译,且能让子类在编译期被强制声明真实的 Prisma model key。\n\n核心设计(对应 RFC-0001 方案 B):\n\n1. backend/src/shared/services/base-service-v2.ts(226 行)\n - abstract class BaseServiceV2\u003cTEntity, TCreate, TUpdate, TModelKey\u003e\n - TModelKey 泛型约束:extends keyof Prisma.TransactionClient\n - 子类通过 protected abstract readonly modelKey: TModelKey 声明\n - create/update/delete 内部 prisma.$transaction(async tx =\u003e ...):\n * 数据写入走 tx[this.modelKey](绑定到 tx 客户端)\n * 事件发布走 publishEventInTransaction(tx, ...)(同事务)\n * 共享同一 $transaction → 彻底消除模式 A \"data write 绕 tx\" 假绿\n - 30s 事务超时默认值\n\n2. backend/src/shared/services/__examples__/base-service-v2-samples.ts(144 行)\n - 3 个样本子类演示 modelKey 泛型锁定:\n * ReconciliationServiceV2Sample(modelKey='auto_match_rules')\n * RenewalsServiceV2Sample(modelKey='renewals')\n * CourseServiceV2Sample(modelKey='hr_courses')\n - 含反例注释:bogus_table 会触发 TypeScript 编译错误\n \"Type '\\\"not_a_real_table\\\"' does not satisfy the constraint\n 'keyof TransactionClient'\",证明编译期约束有效\n\n验证:\n- tsc --noEmit 对新增文件零错误(全工作区其他错误均来自预存在的\n journey-orchestration 模块 Prisma schema 不同步问题,与本 PR 无关)\n- 本 PoC 不在生产路径上使用,不导入任何生产 controller/routes/main.ts\n- 纯技术可行性验证,供技术委员会评审 RFC-0001 方案 B\n\nSprint 2 正式迁移路线(RFC-0001 W5-W6):\n1. 合并本 PoC 后,Backend Architect 基于 BaseServiceV2 产出 PR\n2. 按优先级顺序迁移:22 真 D → 6 A-override → 8 良性 override → 4 微竞态\n3. 用 V2 审计判据(PR #38)作为 gate,迁移完成后启用 --strict-v2\n\n关联:Q2 Sprint 2 预研 · RFC-0001 方案 B 技术可行性验证\n前序:#36 D-class 盘点 / #37 RFC-0001 / #38 V2 审计升级 / #39 Sprint 1 复盘\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T14:15:21+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...c438f31dae2fd15bc8ae3fd5419a19394c7191cc","Len":1}...
|
1776406533
|
Edit
Delete
|
|
2005
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/feat/base-service-v2-poc
|
0
|
|
1778625303
|
Edit
Delete
|
|
11155
|
1
|
5
|
1
|
32
|
0
|
0
|
refs/heads/feat/miniprogram-pdf-zoom-sync
|
1
|
|
1781069343
|
Edit
Delete
|
|
11156
|
1
|
5
|
1
|
32
|
0
|
0
|
refs/heads/feat/miniprogram-pdf-zoom-sync
|
1
|
{"Commits":[{"Sha1":"bf0fa1fd7 {"Commits":[{"Sha1":"bf0fa1fd77ef2f5f91a18bac9168709f8abb4889","Message":"feat: 小程序PDF缩放、弹幕同步、个人中心完整功能\n\n- 修复 PDF page API 500 错误(pdftoppm 输出文件名零填充问题)\n- 修复小程序 WebSocket SocketTask 引用丢失,改用全局 API\n- 小程序增加双指捏合缩放、拖动、全屏查看功能\n- 小程序增加点赞、红包动画、弹幕发送功能\n- 小程序个人中心支付订单/红包记录字段对齐 h5/meeting\n- 小程序增加口播稿面板、历史演讲、刷新按钮\n- 小程序修复 page-count API 获取 PDF 页数失败(shell 命令转义)\n- admin/play 弹幕容器改为 position:fixed + z-index 1000000\n- WebSocket 服务端增加广播日志\n- admin/play 修复 JS try/catch 语法错误导致弹幕不显示\n- 新增小程序控制器 Miniapp/Minapi\n- 新增小程序登录、二维码、支付相关 API\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-06-10T13:28:57+08:00"}],"HeadCommit":{"Sha1":"bf0fa1fd77ef2f5f91a18bac9168709f8abb4889","Message":"feat: 小程序PDF缩放、弹幕同步、个人中心完整功能\n\n- 修复 PDF page API 500 错误(pdftoppm 输出文件名零填充问题)\n- 修复小程序 WebSocket SocketTask 引用丢失,改用全局 API\n- 小程序增加双指捏合缩放、拖动、全屏查看功能\n- 小程序增加点赞、红包动画、弹幕发送功能\n- 小程序个人中心支付订单/红包记录字段对齐 h5/meeting\n- 小程序增加口播稿面板、历史演讲、刷新按钮\n- 小程序修复 page-count API 获取 PDF 页数失败(shell 命令转义)\n- admin/play 弹幕容器改为 position:fixed + z-index 1000000\n- WebSocket 服务端增加广播日志\n- admin/play 修复 JS try/catch 语法错误导致弹幕不显示\n- 新增小程序控制器 Miniapp/Minapi\n- 新增小程序登录、二维码、支付相关 API\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-06-10T13:28:57+08:00"},"CompareURL":"zhangjunnan/zhouhui/compare/ffa513a52387f5624f52f14b3a56e99c9411087b...bf0fa1fd77ef2f5f91a18bac9168709f8abb4889","Len":1}...
|
1781069343
|
Edit
Delete
|
|
11157
|
1
|
5
|
1
|
32
|
0
|
0
|
refs/heads/feat/miniprogram-pdf-zoom-sync
|
1
|
{"Commits":[{"Sha1":"22bc33a1f {"Commits":[{"Sha1":"22bc33a1f0f14a757dfd4b280668e152617b65d7","Message":"fix: admin/play PDF渲染重复canvas报错+内容翻转\n\n- 添加 pdfRenderingTask 变量跟踪当前渲染任务\n- renderPDFPage 开始时取消之前的渲染(cancel)\n- 忽略 RenderingCancelledException 错误\n- 清理多余 console.log 减少噪声\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-06-10T13:32:05+08:00"}],"HeadCommit":{"Sha1":"22bc33a1f0f14a757dfd4b280668e152617b65d7","Message":"fix: admin/play PDF渲染重复canvas报错+内容翻转\n\n- 添加 pdfRenderingTask 变量跟踪当前渲染任务\n- renderPDFPage 开始时取消之前的渲染(cancel)\n- 忽略 RenderingCancelledException 错误\n- 清理多余 console.log 减少噪声\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-06-10T13:32:05+08:00"},"CompareURL":"zhangjunnan/zhouhui/compare/bf0fa1fd77ef2f5f91a18bac9168709f8abb4889...22bc33a1f0f14a757dfd4b280668e152617b65d7","Len":1}...
|
1781069530
|
Edit
Delete
|
|
11455
|
1
|
5
|
1
|
32
|
0
|
0
|
refs/heads/feat/miniprogram-pdf-zoom-sync
|
1
|
{"Commits":[{"Sha1":"2bdc17dcf {"Commits":[{"Sha1":"2bdc17dcf4587d11fa13e8961a83da952426fa3e","Message":"最新\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-06-11T13:28:40+08:00"}],"HeadCommit":{"Sha1":"2bdc17dcf4587d11fa13e8961a83da952426fa3e","Message":"最新\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-06-11T13:28:40+08:00"},"CompareURL":"zhangjunnan/zhouhui/compare/22bc33a1f0f14a757dfd4b280668e152617b65d7...2bdc17dcf4587d11fa13e8961a83da952426fa3e","Len":1}...
|
1781155803
|
Edit
Delete
|
|
1104
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/fix/ticket-workflow-defs-format
|
0
|
|
1776390832
|
Edit
Delete
|
|
1105
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/fix/ticket-workflow-defs-format
|
0
|
{"Commits":[{"Sha1":"27f01c5f3 {"Commits":[{"Sha1":"27f01c5f3786ed44f603c6ca9a35156d956b1315","Message":"fix(ticket-workflows): workflow_defs 写链显式携带 format 字段\n\napproval-governance 审计通过 WORKFLOW_DEF_WRITE 正则扫描 workflow_defs.(create|update|upsert) 调用点后 800 字符范围,若未命中 `format:` 即判 BLOCKER。原 update 函数 updateData 未包含 format,BPMN/GRAPH_JSON 可能隐式漂移。\n\n本次修复:\n- schema.ts 新增 workflowFormatSchema 枚举(BPMN/GRAPH_JSON),createSchema/updateSchema body 加入 format 字段(create 默认 GRAPH_JSON,update 可选)\n- service.ts create/update 函数签名扩展 format 参数,写入 data 时显式落盘;update 未显式传入则保留 existing.format 而非隐式默认\n- docs.ts workflowSchema/createUpdateSchema 同步暴露 format 枚举,保证 OpenAPI 真源一致\n\n验证:\n- audit:approval-governance blockers=0 warnings=0 workflow_format_drift_files=0\n- audit:outbox-atomicity A=1633 / B=0 / C=0,原子化率 100%\n- ticket-workflow.service.test.ts 19/19 全通过\n- backend tsc --noEmit 无新增错误\n\n关联:Q2 12 周落地计划 Sprint 1 · Data Squad · KR2.1\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T09:53:33+08:00"}],"HeadCommit":{"Sha1":"27f01c5f3786ed44f603c6ca9a35156d956b1315","Message":"fix(ticket-workflows): workflow_defs 写链显式携带 format 字段\n\napproval-governance 审计通过 WORKFLOW_DEF_WRITE 正则扫描 workflow_defs.(create|update|upsert) 调用点后 800 字符范围,若未命中 `format:` 即判 BLOCKER。原 update 函数 updateData 未包含 format,BPMN/GRAPH_JSON 可能隐式漂移。\n\n本次修复:\n- schema.ts 新增 workflowFormatSchema 枚举(BPMN/GRAPH_JSON),createSchema/updateSchema body 加入 format 字段(create 默认 GRAPH_JSON,update 可选)\n- service.ts create/update 函数签名扩展 format 参数,写入 data 时显式落盘;update 未显式传入则保留 existing.format 而非隐式默认\n- docs.ts workflowSchema/createUpdateSchema 同步暴露 format 枚举,保证 OpenAPI 真源一致\n\n验证:\n- audit:approval-governance blockers=0 warnings=0 workflow_format_drift_files=0\n- audit:outbox-atomicity A=1633 / B=0 / C=0,原子化率 100%\n- ticket-workflow.service.test.ts 19/19 全通过\n- backend tsc --noEmit 无新增错误\n\n关联:Q2 12 周落地计划 Sprint 1 · Data Squad · KR2.1\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T09:53:33+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...27f01c5f3786ed44f603c6ca9a35156d956b1315","Len":1}...
|
1776390832
|
Edit
Delete
|
|
2006
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/fix/ticket-workflow-defs-format
|
0
|
|
1778625303
|
Edit
Delete
|
|
5124
|
1
|
5
|
1
|
6
|
0
|
0
|
refs/heads/fix/ws100-web-tracking-custom-events
|
0
|
|
1779697540
|
Edit
Delete
|
|
5125
|
5
|
5
|
1
|
6
|
0
|
0
|
refs/heads/fix/ws100-web-tracking-custom-events
|
0
|
|
1779697540
|
Edit
Delete
|
|
5126
|
1
|
5
|
1
|
6
|
0
|
0
|
refs/heads/fix/ws100-web-tracking-custom-events
|
0
|
{"Commits":[{"Sha1":"2ab1720f6 {"Commits":[{"Sha1":"2ab1720f6739fcfbfd35e92c861197d4891873e2","Message":"fix(web-tracking): 添加 customEvents 自定义事件表单 UI\n\n- 在追踪配置表单中添加自定义事件列表区域\n- 支持动态添加/删除自定义事件(name, selector, eventType)\n- 编辑配置时正确回填 customEvents 数据\n- 重置表单时清空 customEvents\n- 后端 schema 支持 settings.customEvents[] 配置\n\nCloses: WS-100\n","AuthorEmail":"admin@g-hi.com","AuthorName":"Admin","CommitterEmail":"admin@g-hi.com","CommitterName":"Admin","Timestamp":"2026-05-25T16:24:36+08:00"}],"HeadCommit":{"Sha1":"2ab1720f6739fcfbfd35e92c861197d4891873e2","Message":"fix(web-tracking): 添加 customEvents 自定义事件表单 UI\n\n- 在追踪配置表单中添加自定义事件列表区域\n- 支持动态添加/删除自定义事件(name, selector, eventType)\n- 编辑配置时正确回填 customEvents 数据\n- 重置表单时清空 customEvents\n- 后端 schema 支持 settings.customEvents[] 配置\n\nCloses: WS-100\n","AuthorEmail":"admin@g-hi.com","AuthorName":"Admin","CommitterEmail":"admin@g-hi.com","CommitterName":"Admin","Timestamp":"2026-05-25T16:24:36+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/d9e0ab1d9cbc0d7707781f8b0c9a5a49103ace8b...2ab1720f6739fcfbfd35e92c861197d4891873e2","Len":1}...
|
1779697540
|
Edit
Delete
|
|
5127
|
5
|
5
|
1
|
6
|
0
|
0
|
refs/heads/fix/ws100-web-tracking-custom-events
|
0
|
{"Commits":[{"Sha1":"2ab1720f6 {"Commits":[{"Sha1":"2ab1720f6739fcfbfd35e92c861197d4891873e2","Message":"fix(web-tracking): 添加 customEvents 自定义事件表单 UI\n\n- 在追踪配置表单中添加自定义事件列表区域\n- 支持动态添加/删除自定义事件(name, selector, eventType)\n- 编辑配置时正确回填 customEvents 数据\n- 重置表单时清空 customEvents\n- 后端 schema 支持 settings.customEvents[] 配置\n\nCloses: WS-100\n","AuthorEmail":"admin@g-hi.com","AuthorName":"Admin","CommitterEmail":"admin@g-hi.com","CommitterName":"Admin","Timestamp":"2026-05-25T16:24:36+08:00"}],"HeadCommit":{"Sha1":"2ab1720f6739fcfbfd35e92c861197d4891873e2","Message":"fix(web-tracking): 添加 customEvents 自定义事件表单 UI\n\n- 在追踪配置表单中添加自定义事件列表区域\n- 支持动态添加/删除自定义事件(name, selector, eventType)\n- 编辑配置时正确回填 customEvents 数据\n- 重置表单时清空 customEvents\n- 后端 schema 支持 settings.customEvents[] 配置\n\nCloses: WS-100\n","AuthorEmail":"admin@g-hi.com","AuthorName":"Admin","CommitterEmail":"admin@g-hi.com","CommitterName":"Admin","Timestamp":"2026-05-25T16:24:36+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/d9e0ab1d9cbc0d7707781f8b0c9a5a49103ace8b...2ab1720f6739fcfbfd35e92c861197d4891873e2","Len":1}...
|
1779697540
|
Edit
Delete
|
|
12626
|
12
|
5
|
12
|
42
|
0
|
0
|
refs/heads/freeze_bugly_version
|
1
|
|
1781583201
|
Edit
Delete
|
|
12627
|
12
|
5
|
12
|
42
|
0
|
0
|
refs/heads/freeze_bugly_version
|
1
|
{"Commits":[{"Sha1":"312566e65 {"Commits":[{"Sha1":"312566e654a18e93951ee37ef31d1b7be8dfba5a","Message":"Freeze the bugly version.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-11-01T14:37:27+08:00"},{"Sha1":"048dd1e50c8271d41ba654e43e907a02ccb7c07d","Message":"v1.1.8\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-11-01T14:18:13+08:00"}],"HeadCommit":{"Sha1":"312566e654a18e93951ee37ef31d1b7be8dfba5a","Message":"Freeze the bugly version.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-11-01T14:37:27+08:00"},"CompareURL":"zhengpeizhong/cocos2d-x/compare/618682362fce9a5137de51396b369147715317b0...312566e654a18e93951ee37ef31d1b7be8dfba5a","Len":2}...
|
1781583201
|
Edit
Delete
|
|
12628
|
12
|
5
|
12
|
42
|
0
|
0
|
refs/heads/gamescenter
|
1
|
|
1781583202
|
Edit
Delete
|
|
12629
|
12
|
5
|
12
|
42
|
0
|
0
|
refs/heads/gamescenter
|
1
|
{"Commits":[{"Sha1":"58db3f7bc {"Commits":[{"Sha1":"58db3f7bc24c9283ffb69330fe16ca88ba26b1c7","Message":"tests:lua-game-controller-test:AppDelegate: fix forget to call lua_module_register\n\nMany modules are missing if we don't call lua_module_register.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2019-11-22T17:14:41+08:00"},{"Sha1":"1e728576768c6e9ab8510aa9463986843c5e9e58","Message":"android:libcocos2dx-with-controller:build.gradle: exclude libraries which match the name pattern \"*-debug.aar\"\n\ngamescenter project doesn't need the jhplayerlibrary-debug.aar right now.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2019-11-22T14:28:52+08:00"},{"Sha1":"819488894984c7d5ac84da2bd2b685e2d6ed322b","Message":"android:ControllerManualAdapter:GameControllerSHANWAN: map BUTTON_C to BUTTON_START and map BUTTON_Z to BUTTON_SELECT\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2019-11-22T14:25:04+08:00"},{"Sha1":"5c66924f42c13d50cb943f2581e1106cb3792b41","Message":"tests:lua-game-controller-test: disable __thread\n\nI use the __thread to add support to run more than one cocos2dx instance\nin one process, this way has its shortage in some situation (async tasks),\nso I decide to disable it in gamescenter project, because this project\ndoesn't need to run more than one instance in one process.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2019-11-22T11:39:44+08:00"},{"Sha1":"6894feaaffd2fd5272d5b628990f20f15c1932cd","Message":"ipvod:ipvodasync: use 60007 as the udp port for gamescenter project\n\nGamescenter project needs a different udp port from juhaiktv project.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2019-11-19T13:39:51+08:00"}],"HeadCommit":{"Sha1":"58db3f7bc24c9283ffb69330fe16ca88ba26b1c7","Message":"tests:lua-game-controller-test:AppDelegate: fix forget to call lua_module_register\n\nMany modules are missing if we don't call lua_module_register.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2019-11-22T17:14:41+08:00"},"CompareURL":"zhengpeizhong/cocos2d-x/compare/640cb1070f0249fa06b076404d3673f32cbb52f9...58db3f7bc24c9283ffb69330fe16ca88ba26b1c7","Len":10}...
|
1781583202
|
Edit
Delete
|
|
2756
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/governance/launch-hardening-2026-05-18
|
0
|
|
1779154936
|
Edit
Delete
|