|
1078
|
10
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"51cc21548 {"Commits":[{"Sha1":"51cc21548a54b54fc06b91cacbc3e3eb45364e29","Message":"自助报表新增预购商品类型\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-15T15:19:38+08:00"}],"HeadCommit":{"Sha1":"51cc21548a54b54fc06b91cacbc3e3eb45364e29","Message":"自助报表新增预购商品类型\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-15T15:19:38+08:00"},"CompareURL":"vodtest/pc/compare/c4ab834d36a688468e5cda7ca2c1bb79ea9880ef...51cc21548a54b54fc06b91cacbc3e3eb45364e29","Len":1}...
|
1776237585
|
Edit
Delete
|
|
1079
|
11
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"51cc21548 {"Commits":[{"Sha1":"51cc21548a54b54fc06b91cacbc3e3eb45364e29","Message":"自助报表新增预购商品类型\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-15T15:19:38+08:00"}],"HeadCommit":{"Sha1":"51cc21548a54b54fc06b91cacbc3e3eb45364e29","Message":"自助报表新增预购商品类型\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-15T15:19:38+08:00"},"CompareURL":"vodtest/pc/compare/c4ab834d36a688468e5cda7ca2c1bb79ea9880ef...51cc21548a54b54fc06b91cacbc3e3eb45364e29","Len":1}...
|
1776237585
|
Edit
Delete
|
|
1087
|
11
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"75f055c2f {"Commits":[{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"}],"HeadCommit":{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"},"CompareURL":"vodtest/pc/compare/51cc21548a54b54fc06b91cacbc3e3eb45364e29...75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Len":1}...
|
1776251849
|
Edit
Delete
|
|
1088
|
9
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"75f055c2f {"Commits":[{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"}],"HeadCommit":{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"},"CompareURL":"vodtest/pc/compare/51cc21548a54b54fc06b91cacbc3e3eb45364e29...75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Len":1}...
|
1776251849
|
Edit
Delete
|
|
1089
|
1
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"75f055c2f {"Commits":[{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"}],"HeadCommit":{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"},"CompareURL":"vodtest/pc/compare/51cc21548a54b54fc06b91cacbc3e3eb45364e29...75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Len":1}...
|
1776251849
|
Edit
Delete
|
|
1090
|
3
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"75f055c2f {"Commits":[{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"}],"HeadCommit":{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"},"CompareURL":"vodtest/pc/compare/51cc21548a54b54fc06b91cacbc3e3eb45364e29...75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Len":1}...
|
1776251849
|
Edit
Delete
|
|
1091
|
7
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"75f055c2f {"Commits":[{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"}],"HeadCommit":{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"},"CompareURL":"vodtest/pc/compare/51cc21548a54b54fc06b91cacbc3e3eb45364e29...75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Len":1}...
|
1776251849
|
Edit
Delete
|
|
1092
|
8
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"75f055c2f {"Commits":[{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"}],"HeadCommit":{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"},"CompareURL":"vodtest/pc/compare/51cc21548a54b54fc06b91cacbc3e3eb45364e29...75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Len":1}...
|
1776251849
|
Edit
Delete
|
|
1093
|
10
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"75f055c2f {"Commits":[{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"}],"HeadCommit":{"Sha1":"75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Message":"dist打包\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-15T19:14:15+08:00"},"CompareURL":"vodtest/pc/compare/51cc21548a54b54fc06b91cacbc3e3eb45364e29...75f055c2f1488c1c9d7fe9d225c5894998ea14fd","Len":1}...
|
1776251849
|
Edit
Delete
|
|
1101
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"7b47df318 {"Commits":[{"Sha1":"7b47df3186db279cfc071517a6c034aa213d926d","Message":"Merge gitea/main: harness/outbox/migration updates\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T08:50:00+08:00"},{"Sha1":"debdf5680e9bd056fb75e681e4d79cb74c02de9f","Message":"fix: override existing env vars in dev mode to prevent empty REDIS_PASSWORD issue\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-13T22:22:30+08:00"}],"HeadCommit":{"Sha1":"7b47df3186db279cfc071517a6c034aa213d926d","Message":"Merge gitea/main: harness/outbox/migration updates\n","AuthorEmail":"mluo@MluodeMacBook-Air.local","AuthorName":"Mluo","CommitterEmail":"mluo@MluodeMacBook-Air.local","CommitterName":"Mluo","Timestamp":"2026-04-17T08:50:00+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/fd1878b707f31b05ee314173ac91491adb28bc30...7b47df3186db279cfc071517a6c034aa213d926d","Len":2}...
|
1776387182
|
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
|
|
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
|
|
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
|
|
1108
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/chore/outbox-d-class-audit
|
0
|
|
1776392173
|
Edit
Delete
|
|
1109
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/chore/outbox-d-class-audit
|
0
|
{"Commits":[{"Sha1":"b213d6b0c {"Commits":[{"Sha1":"b213d6b0c2dbf7d8a481f02c4a65e5fca8069a3d","Message":"docs(governance): Outbox D-class 43 处深度盘点 + 假绿告警\n\n对 audit:outbox-atomicity 计入\"已原子化\"的 43 个 D-class 文件(isBaseService=true\n且自身无 publishEvent 直接调用)做细粒度代码分析,按 override/this.model/tx.model/\ntransaction 四维分类,输出 docs/governance/outbox-d-class-audit-2026-04-17.md。\n\n关键发现:\n\n1. 🔴 contract-templates/contract-template.service.ts 存在 business-logic 竞态\n create/update/setDefault 在 super.create 之前用 this.model.updateMany 取消其他\n default,两者不在同一事务内;如 super.create 失败,留下\"默认被取消但新模板未\n 创建\"的数据不一致。\n\n2. 🟠 BaseService 架构级假绿(系统性问题)\n backend/src/shared/services/base.service.ts#L206 的 $transaction 回调把 tx 只\n 传给 publishEvent,而 crud.createOne 内部 model.create 用的是默认 prisma\n client,未绑定到 tx。结果:data 在独立连接上自动 commit,outbox 事件在外层 tx\n commit 时写入;publishEvent 失败时 data 已落库 outbox 丢事件。\n 此问题跨所有 BaseService 派生模块(43 D + 6 A-override),但 audit 脚本只看\n \"publishEvent 是否传 tx\"无法识别。\n\n3. ✅ 已正确原子化的 override 6 个(shipments/quotes/contracts/orders/\n price-books/invoice),override 了 CRUD 且全部用 tx.\u003cmodel\u003e.\u003cop\u003e。\n\n4. 🟡 11 个 override 文件需 Sprint 2 人工细查(override 存在但无直接写库命中,\n 多数可能只做业务前处理 + 调 super.xxx())。\n\n5. 🟡 finance-credits 4 处 this.model 无 override,应为查询类方法(非 CRUD),\n 需 Sprint 2 人工判读。\n\n本 PR 纯诊断输出,无代码变更,audit:outbox-atomicity 保持 A=1633/D=43/原子化率\n100%(未退化)。建议的修复动作按优先级归入 Q2 Sprint 2 路线:\n- P0: 修 contract-templates 竞态 + BaseService 架构级重构\n- P0: audit-outbox-atomicity.ts 新增 \"tx-bound data write\" 维度\n- P1: 细查 11 个 override / finance-credits\n\n关联:Q2 12 周落地计划 Sprint 1 · Data/Governance 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-17T10:16:06+08:00"}],"HeadCommit":{"Sha1":"b213d6b0c2dbf7d8a481f02c4a65e5fca8069a3d","Message":"docs(governance): Outbox D-class 43 处深度盘点 + 假绿告警\n\n对 audit:outbox-atomicity 计入\"已原子化\"的 43 个 D-class 文件(isBaseService=true\n且自身无 publishEvent 直接调用)做细粒度代码分析,按 override/this.model/tx.model/\ntransaction 四维分类,输出 docs/governance/outbox-d-class-audit-2026-04-17.md。\n\n关键发现:\n\n1. 🔴 contract-templates/contract-template.service.ts 存在 business-logic 竞态\n create/update/setDefault 在 super.create 之前用 this.model.updateMany 取消其他\n default,两者不在同一事务内;如 super.create 失败,留下\"默认被取消但新模板未\n 创建\"的数据不一致。\n\n2. 🟠 BaseService 架构级假绿(系统性问题)\n backend/src/shared/services/base.service.ts#L206 的 $transaction 回调把 tx 只\n 传给 publishEvent,而 crud.createOne 内部 model.create 用的是默认 prisma\n client,未绑定到 tx。结果:data 在独立连接上自动 commit,outbox 事件在外层 tx\n commit 时写入;publishEvent 失败时 data 已落库 outbox 丢事件。\n 此问题跨所有 BaseService 派生模块(43 D + 6 A-override),但 audit 脚本只看\n \"publishEvent 是否传 tx\"无法识别。\n\n3. ✅ 已正确原子化的 override 6 个(shipments/quotes/contracts/orders/\n price-books/invoice),override 了 CRUD 且全部用 tx.\u003cmodel\u003e.\u003cop\u003e。\n\n4. 🟡 11 个 override 文件需 Sprint 2 人工细查(override 存在但无直接写库命中,\n 多数可能只做业务前处理 + 调 super.xxx())。\n\n5. 🟡 finance-credits 4 处 this.model 无 override,应为查询类方法(非 CRUD),\n 需 Sprint 2 人工判读。\n\n本 PR 纯诊断输出,无代码变更,audit:outbox-atomicity 保持 A=1633/D=43/原子化率\n100%(未退化)。建议的修复动作按优先级归入 Q2 Sprint 2 路线:\n- P0: 修 contract-templates 竞态 + BaseService 架构级重构\n- P0: audit-outbox-atomicity.ts 新增 \"tx-bound data write\" 维度\n- P1: 细查 11 个 override / finance-credits\n\n关联:Q2 12 周落地计划 Sprint 1 · Data/Governance 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-17T10:16:06+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...b213d6b0c2dbf7d8a481f02c4a65e5fca8069a3d","Len":1}...
|
1776392173
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1120
|
11
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"00dc1bb23 {"Commits":[{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"}],"HeadCommit":{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"},"CompareURL":"vodtest/pc/compare/75f055c2f1488c1c9d7fe9d225c5894998ea14fd...00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Len":1}...
|
1776409746
|
Edit
Delete
|
|
1121
|
9
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"00dc1bb23 {"Commits":[{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"}],"HeadCommit":{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"},"CompareURL":"vodtest/pc/compare/75f055c2f1488c1c9d7fe9d225c5894998ea14fd...00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Len":1}...
|
1776409746
|
Edit
Delete
|
|
1122
|
1
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"00dc1bb23 {"Commits":[{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"}],"HeadCommit":{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"},"CompareURL":"vodtest/pc/compare/75f055c2f1488c1c9d7fe9d225c5894998ea14fd...00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Len":1}...
|
1776409746
|
Edit
Delete
|
|
1123
|
3
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"00dc1bb23 {"Commits":[{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"}],"HeadCommit":{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"},"CompareURL":"vodtest/pc/compare/75f055c2f1488c1c9d7fe9d225c5894998ea14fd...00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Len":1}...
|
1776409746
|
Edit
Delete
|
|
1124
|
7
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"00dc1bb23 {"Commits":[{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"}],"HeadCommit":{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"},"CompareURL":"vodtest/pc/compare/75f055c2f1488c1c9d7fe9d225c5894998ea14fd...00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Len":1}...
|
1776409746
|
Edit
Delete
|
|
1125
|
8
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"00dc1bb23 {"Commits":[{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"}],"HeadCommit":{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"},"CompareURL":"vodtest/pc/compare/75f055c2f1488c1c9d7fe9d225c5894998ea14fd...00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Len":1}...
|
1776409746
|
Edit
Delete
|
|
1126
|
10
|
5
|
11
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"00dc1bb23 {"Commits":[{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"}],"HeadCommit":{"Sha1":"00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Message":"样式修改\n","AuthorEmail":"1091045324@qq.com","AuthorName":"caihongyuchy","CommitterEmail":"1091045324@qq.com","CommitterName":"caihongyuchy","Timestamp":"2026-04-17T15:07:56+08:00"},"CompareURL":"vodtest/pc/compare/75f055c2f1488c1c9d7fe9d225c5894998ea14fd...00dc1bb23c34b5a7d0737e7e02c271debac54f4a","Len":1}...
|
1776409746
|
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
|
|
1137
|
7
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"66e25c89a {"Commits":[{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},{"Sha1":"dfd54b89a8904f9ed9c1983c3bc512bcb19aac11","Message":"账单的预订详情微信预订的增加显示预订单号\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:35+08:00"}],"HeadCommit":{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},"CompareURL":"vodtest/pc/compare/00dc1bb23c34b5a7d0737e7e02c271debac54f4a...66e25c89a3c19ed3ae57ea5775e3c885fed86675","Len":2}...
|
1776931439
|
Edit
Delete
|
|
1138
|
9
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"66e25c89a {"Commits":[{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},{"Sha1":"dfd54b89a8904f9ed9c1983c3bc512bcb19aac11","Message":"账单的预订详情微信预订的增加显示预订单号\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:35+08:00"}],"HeadCommit":{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},"CompareURL":"vodtest/pc/compare/00dc1bb23c34b5a7d0737e7e02c271debac54f4a...66e25c89a3c19ed3ae57ea5775e3c885fed86675","Len":2}...
|
1776931439
|
Edit
Delete
|
|
1139
|
1
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"66e25c89a {"Commits":[{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},{"Sha1":"dfd54b89a8904f9ed9c1983c3bc512bcb19aac11","Message":"账单的预订详情微信预订的增加显示预订单号\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:35+08:00"}],"HeadCommit":{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},"CompareURL":"vodtest/pc/compare/00dc1bb23c34b5a7d0737e7e02c271debac54f4a...66e25c89a3c19ed3ae57ea5775e3c885fed86675","Len":2}...
|
1776931439
|
Edit
Delete
|
|
1140
|
3
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"66e25c89a {"Commits":[{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},{"Sha1":"dfd54b89a8904f9ed9c1983c3bc512bcb19aac11","Message":"账单的预订详情微信预订的增加显示预订单号\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:35+08:00"}],"HeadCommit":{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},"CompareURL":"vodtest/pc/compare/00dc1bb23c34b5a7d0737e7e02c271debac54f4a...66e25c89a3c19ed3ae57ea5775e3c885fed86675","Len":2}...
|
1776931439
|
Edit
Delete
|
|
1141
|
8
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"66e25c89a {"Commits":[{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},{"Sha1":"dfd54b89a8904f9ed9c1983c3bc512bcb19aac11","Message":"账单的预订详情微信预订的增加显示预订单号\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:35+08:00"}],"HeadCommit":{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},"CompareURL":"vodtest/pc/compare/00dc1bb23c34b5a7d0737e7e02c271debac54f4a...66e25c89a3c19ed3ae57ea5775e3c885fed86675","Len":2}...
|
1776931439
|
Edit
Delete
|
|
1142
|
10
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"66e25c89a {"Commits":[{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},{"Sha1":"dfd54b89a8904f9ed9c1983c3bc512bcb19aac11","Message":"账单的预订详情微信预订的增加显示预订单号\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:35+08:00"}],"HeadCommit":{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},"CompareURL":"vodtest/pc/compare/00dc1bb23c34b5a7d0737e7e02c271debac54f4a...66e25c89a3c19ed3ae57ea5775e3c885fed86675","Len":2}...
|
1776931439
|
Edit
Delete
|
|
1143
|
11
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"66e25c89a {"Commits":[{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},{"Sha1":"dfd54b89a8904f9ed9c1983c3bc512bcb19aac11","Message":"账单的预订详情微信预订的增加显示预订单号\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:35+08:00"}],"HeadCommit":{"Sha1":"66e25c89a3c19ed3ae57ea5775e3c885fed86675","Message":"Merge remote-tracking branch 'origin/pc-260519' into pc-260519\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:03:53+08:00"},"CompareURL":"vodtest/pc/compare/00dc1bb23c34b5a7d0737e7e02c271debac54f4a...66e25c89a3c19ed3ae57ea5775e3c885fed86675","Len":2}...
|
1776931439
|
Edit
Delete
|
|
1151
|
7
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"6bcdab446 {"Commits":[{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"}],"HeadCommit":{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"},"CompareURL":"vodtest/pc/compare/66e25c89a3c19ed3ae57ea5775e3c885fed86675...6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Len":1}...
|
1776932404
|
Edit
Delete
|
|
1152
|
9
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"6bcdab446 {"Commits":[{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"}],"HeadCommit":{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"},"CompareURL":"vodtest/pc/compare/66e25c89a3c19ed3ae57ea5775e3c885fed86675...6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Len":1}...
|
1776932404
|
Edit
Delete
|
|
1153
|
1
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"6bcdab446 {"Commits":[{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"}],"HeadCommit":{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"},"CompareURL":"vodtest/pc/compare/66e25c89a3c19ed3ae57ea5775e3c885fed86675...6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Len":1}...
|
1776932404
|
Edit
Delete
|
|
1154
|
3
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"6bcdab446 {"Commits":[{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"}],"HeadCommit":{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"},"CompareURL":"vodtest/pc/compare/66e25c89a3c19ed3ae57ea5775e3c885fed86675...6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Len":1}...
|
1776932404
|
Edit
Delete
|
|
1155
|
8
|
5
|
7
|
18
|
0
|
0
|
refs/heads/pc-260519
|
0
|
{"Commits":[{"Sha1":"6bcdab446 {"Commits":[{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"}],"HeadCommit":{"Sha1":"6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Message":"预定字样都改成预订\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-04-23T16:19:54+08:00"},"CompareURL":"vodtest/pc/compare/66e25c89a3c19ed3ae57ea5775e3c885fed86675...6bcdab446d0880f44f197ecfe6d19d8ada9e25ee","Len":1}...
|
1776932404
|
Edit
Delete
|