|
24579
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"29718124b {"Commits":[{"Sha1":"29718124b1918bbc4d17c98875c6043ec5fa3048","Message":"fix(events)+test(learning): dispatcher 关闭等待在途 tick + ActorSkillState 并发学习用例(G18 盲区)\n\n- 两后端 outbox dispatcher close 原来只 clearInterval、不等在途 tick——\n tick 可越过 redis.quit() 撞死连接(CI 收尾竞态实锤形态之一);\n 现 clearInterval + await inFlight(收窄竞态面,不宣称根治偶发)\n- 两后端各 +2 真实 DB 双事务并发用例(行锁定序确定性编排):\n 乐观锁 0 行拒绝 / 经验恰好 +1 防双记账 / 失败侧全量回滚(P4)/\n 全新技能并发首建 P2002 防双行\n- 地板棘轮:testsPassed 354→358(专属基座 runtime_g18+Redis/12 全量 358/358)、\n ownTests→54、ownTestCases→354\n- CI run 32345463489(docs-only 提交偶发红)复跑即绿,判责=偶发成立,形态已记 G18\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T01:09:40-07:00"}],"HeadCommit":{"Sha1":"29718124b1918bbc4d17c98875c6043ec5fa3048","Message":"fix(events)+test(learning): dispatcher 关闭等待在途 tick + ActorSkillState 并发学习用例(G18 盲区)\n\n- 两后端 outbox dispatcher close 原来只 clearInterval、不等在途 tick——\n tick 可越过 redis.quit() 撞死连接(CI 收尾竞态实锤形态之一);\n 现 clearInterval + await inFlight(收窄竞态面,不宣称根治偶发)\n- 两后端各 +2 真实 DB 双事务并发用例(行锁定序确定性编排):\n 乐观锁 0 行拒绝 / 经验恰好 +1 防双记账 / 失败侧全量回滚(P4)/\n 全新技能并发首建 P2002 防双行\n- 地板棘轮:testsPassed 354→358(专属基座 runtime_g18+Redis/12 全量 358/358)、\n ownTests→54、ownTestCases→354\n- CI run 32345463489(docs-only 提交偶发红)复跑即绿,判责=偶发成立,形态已记 G18\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T01:09:40-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/66900427c855e2ce43d634de9c6107dd6e8d1224...29718124b1918bbc4d17c98875c6043ec5fa3048","Len":1}...
|
1787213384
|
Edit
Delete
|
|
24649
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"5e0044558 {"Commits":[{"Sha1":"5e0044558f1104cbbaefb759bd0d70c3a5049418","Message":"feat(skills)+feat(web): 技能目录治理与熟练度真实对接 + 响应式工作台 + G18/G21 收口\n\n技能管理治理(先登记后使用):\n- contracts 新增 skill.ts 单源:SKILL_NAME_PATTERN / registerSkillSchema /\n findUnknownSkills / toSkillProficiencySnapshot(两后端只做框架胶水,防 G17 漂移)\n- 两后端对等 GET/POST /api/skills 幂等登记(新建 201 + 同 tx 发 skill.registered,\n 重复 200 同行;P2002 窄捕获);任务/触发器模板 requiredSkills 构造性校验,\n 未登记 400 UNKNOWN_SKILLS 附清单(TaskDependency 同款先例,负向已验证:\n 拼错名不建任务、不污染目录、不再静默铸造 ActorSkillState 履历)\n- web SkillPicker 目录化表单(任务/自动化共用;显式登记新技能名)\n\n熟练度真实对接(修复蓝图与代码漂移):\n- 装配事务内读 ActorSkillState → 快照 skillProficiency → LLM prompt 渲染执行者履历\n (ANALYSIS_PROMPT_VERSION=2);两后端「二次装配快照携带 count=1」断言钉死\n\nG18 盲区收口:两后端 learning.concurrency.test.ts(行锁定序双事务:乐观锁 0 行拒绝\n+ 整事务回滚计数不丢不重 + 全新技能并发首建 P2002 防双行)\n\n响应式工作台改版:手机端底部导航 / PC 端侧栏 + 2 个响应式 e2e 用例;\nRoleAssignmentsPanel(G8 角色管理只读面);G21 agent-adapters 生成器与比对门禁接入\n\n治理回灌:registry 登记 skills 资产(fork-readiness/dual-backend/validation/outbox\n接管)、owner-matrix/work/learning 蓝图/词典/CLAUDE.md 动态区同步、\n棘轮收紧 testsPassed=368 / ownTests=54 / ownTestCases=360\n\n证据(本地工作区,2026-08-20):pnpm check 静态 12 项全绿;check:runtime 368/368\n(PG:55447/digital_employee_os_skills_20260820 + Redis:6397/9);check:ui 13/13\n(含 SkillPicker 全链路与响应式用例,端口 3151/3253)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T02:49:23-07:00"}],"HeadCommit":{"Sha1":"5e0044558f1104cbbaefb759bd0d70c3a5049418","Message":"feat(skills)+feat(web): 技能目录治理与熟练度真实对接 + 响应式工作台 + G18/G21 收口\n\n技能管理治理(先登记后使用):\n- contracts 新增 skill.ts 单源:SKILL_NAME_PATTERN / registerSkillSchema /\n findUnknownSkills / toSkillProficiencySnapshot(两后端只做框架胶水,防 G17 漂移)\n- 两后端对等 GET/POST /api/skills 幂等登记(新建 201 + 同 tx 发 skill.registered,\n 重复 200 同行;P2002 窄捕获);任务/触发器模板 requiredSkills 构造性校验,\n 未登记 400 UNKNOWN_SKILLS 附清单(TaskDependency 同款先例,负向已验证:\n 拼错名不建任务、不污染目录、不再静默铸造 ActorSkillState 履历)\n- web SkillPicker 目录化表单(任务/自动化共用;显式登记新技能名)\n\n熟练度真实对接(修复蓝图与代码漂移):\n- 装配事务内读 ActorSkillState → 快照 skillProficiency → LLM prompt 渲染执行者履历\n (ANALYSIS_PROMPT_VERSION=2);两后端「二次装配快照携带 count=1」断言钉死\n\nG18 盲区收口:两后端 learning.concurrency.test.ts(行锁定序双事务:乐观锁 0 行拒绝\n+ 整事务回滚计数不丢不重 + 全新技能并发首建 P2002 防双行)\n\n响应式工作台改版:手机端底部导航 / PC 端侧栏 + 2 个响应式 e2e 用例;\nRoleAssignmentsPanel(G8 角色管理只读面);G21 agent-adapters 生成器与比对门禁接入\n\n治理回灌:registry 登记 skills 资产(fork-readiness/dual-backend/validation/outbox\n接管)、owner-matrix/work/learning 蓝图/词典/CLAUDE.md 动态区同步、\n棘轮收紧 testsPassed=368 / ownTests=54 / ownTestCases=360\n\n证据(本地工作区,2026-08-20):pnpm check 静态 12 项全绿;check:runtime 368/368\n(PG:55447/digital_employee_os_skills_20260820 + Redis:6397/9);check:ui 13/13\n(含 SkillPicker 全链路与响应式用例,端口 3151/3253)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T02:49:23-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/29718124b1918bbc4d17c98875c6043ec5fa3048...5e0044558f1104cbbaefb759bd0d70c3a5049418","Len":1}...
|
1787219402
|
Edit
Delete
|
|
24651
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"e4b6a5e49 {"Commits":[{"Sha1":"e4b6a5e4925ba1a7234be9035af63c53fd77b945","Message":"docs(governance): 发布状态快照更新为远端三级门禁第二次全绿(run 32355865911)\n\n5e00445 已对齐 GitHub/Gitea 双远端;static + runtime/UI 两 job 干净 checkout 全绿\n(368 tests 地板硬校验 + 13 Playwright 用例,含技能目录治理与响应式用例)。\nG14 收尾项不变:branch protection / required checks 与受控失败 PR 拦截证据仍缺。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T03:03:03-07:00"}],"HeadCommit":{"Sha1":"e4b6a5e4925ba1a7234be9035af63c53fd77b945","Message":"docs(governance): 发布状态快照更新为远端三级门禁第二次全绿(run 32355865911)\n\n5e00445 已对齐 GitHub/Gitea 双远端;static + runtime/UI 两 job 干净 checkout 全绿\n(368 tests 地板硬校验 + 13 Playwright 用例,含技能目录治理与响应式用例)。\nG14 收尾项不变:branch protection / required checks 与受控失败 PR 拦截证据仍缺。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T03:03:03-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/5e0044558f1104cbbaefb759bd0d70c3a5049418...e4b6a5e4925ba1a7234be9035af63c53fd77b945","Len":1}...
|
1787220188
|
Edit
Delete
|
|
12801
|
10
|
5
|
10
|
43
|
0
|
0
|
refs/heads/lab-main
|
1
|
|
1781590077
|
Edit
Delete
|
|
12802
|
10
|
5
|
10
|
43
|
0
|
0
|
refs/heads/lab-main
|
1
|
{"Commits":[{"Sha1":"c75e0875c {"Commits":[{"Sha1":"c75e0875c743c320314cab8ca1c8441d89582640","Message":"Merge pull request 'Merge pull request '260519分支分支' (#3) from pay into pay-260616' (#308) from pay-260616 into pay\n\nReviewed-on: https://gitea.g-hi.com/vodtest/pay/pulls/308\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-06-11T09:38:51+08:00"}],"HeadCommit":{"Sha1":"c75e0875c743c320314cab8ca1c8441d89582640","Message":"Merge pull request 'Merge pull request '260519分支分支' (#3) from pay into pay-260616' (#308) from pay-260616 into pay\n\nReviewed-on: https://gitea.g-hi.com/vodtest/pay/pulls/308\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-06-11T09:38:51+08:00"},"CompareURL":"linyangrui/pay-lab/compare/4d40b955cab3e5bede94a249da333a532ffec85e...c75e0875c743c320314cab8ca1c8441d89582640","Len":1}...
|
1781590077
|
Edit
Delete
|
|
12853
|
10
|
17
|
10
|
43
|
0
|
0
|
refs/heads/lab-main
|
1
|
|
1781593601
|
Edit
Delete
|
|
12854
|
10
|
5
|
10
|
43
|
0
|
0
|
refs/heads/lab-main
|
1
|
|
1781593640
|
Edit
Delete
|
|
12855
|
10
|
5
|
10
|
43
|
0
|
0
|
refs/heads/lab-main
|
1
|
{"Commits":[{"Sha1":"3f387dae5 {"Commits":[{"Sha1":"3f387dae5333e71ab1224a27432c86850c455ce6","Message":"bug修复\n","AuthorEmail":"yangruilin888@gmail.com","AuthorName":"linyangrui","CommitterEmail":"yangruilin888@gmail.com","CommitterName":"linyangrui","Timestamp":"2026-06-16T14:37:48+08:00"},{"Sha1":"afbb1b7d6b070035db6a51b7f44f48ebf519d3f7","Message":"1\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-06-16T14:23:30+08:00"},{"Sha1":"fdd52049bb93c74346006644341bfbe1a8377bc3","Message":"1\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-06-16T14:21:08+08:00"},{"Sha1":"710ad86b8a19a9aa0941c3d834212b95cedb59a9","Message":"1\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-06-16T14:15:05+08:00"},{"Sha1":"f344dcf8d9bd9150b520dd95bd17099d0f3e1fad","Message":"Merge branch 'pay-260616' of https://gitea.g-hi.com/vodtest/pay into pay-260616\n","AuthorEmail":"11833999+littlemaidi@user.noreply.gitee.com","AuthorName":"LITTLEMAIDI","CommitterEmail":"11833999+littlemaidi@user.noreply.gitee.com","CommitterName":"LITTLEMAIDI","Timestamp":"2026-06-16T13:59:18+08:00"}],"HeadCommit":{"Sha1":"3f387dae5333e71ab1224a27432c86850c455ce6","Message":"bug修复\n","AuthorEmail":"yangruilin888@gmail.com","AuthorName":"linyangrui","CommitterEmail":"yangruilin888@gmail.com","CommitterName":"linyangrui","Timestamp":"2026-06-16T14:37:48+08:00"},"CompareURL":"linyangrui/pay-lab/compare/2d193b5f7c3be863dc8e5e0845187eee407ee313...3f387dae5333e71ab1224a27432c86850c455ce6","Len":9}...
|
1781593640
|
Edit
Delete
|
|
12995
|
10
|
5
|
10
|
43
|
0
|
0
|
refs/heads/lab-main
|
1
|
{"Commits":[{"Sha1":"e1a6c4d1e {"Commits":[{"Sha1":"e1a6c4d1e482b99be48e2b948f9e3b31ccb8b59e","Message":"文档初稿\n","AuthorEmail":"yangruilin888@gmail.com","AuthorName":"linyangrui","CommitterEmail":"yangruilin888@gmail.com","CommitterName":"linyangrui","Timestamp":"2026-06-16T18:26:45+08:00"}],"HeadCommit":{"Sha1":"e1a6c4d1e482b99be48e2b948f9e3b31ccb8b59e","Message":"文档初稿\n","AuthorEmail":"yangruilin888@gmail.com","AuthorName":"linyangrui","CommitterEmail":"yangruilin888@gmail.com","CommitterName":"linyangrui","Timestamp":"2026-06-16T18:26:45+08:00"},"CompareURL":"linyangrui/pay-lab/compare/3f387dae5333e71ab1224a27432c86850c455ce6...e1a6c4d1e482b99be48e2b948f9e3b31ccb8b59e","Len":1}...
|
1781605629
|
Edit
Delete
|
|
13053
|
10
|
5
|
10
|
43
|
0
|
0
|
refs/heads/lab-main
|
1
|
{"Commits":[{"Sha1":"1fdc100dd {"Commits":[{"Sha1":"1fdc100dd9a8d94f0c89f1ff0b52b988f0e13b49","Message":"完善门店详情模块flow\n","AuthorEmail":"yangruilin888@gmail.com","AuthorName":"linyangrui","CommitterEmail":"yangruilin888@gmail.com","CommitterName":"linyangrui","Timestamp":"2026-06-17T15:55:24+08:00"}],"HeadCommit":{"Sha1":"1fdc100dd9a8d94f0c89f1ff0b52b988f0e13b49","Message":"完善门店详情模块flow\n","AuthorEmail":"yangruilin888@gmail.com","AuthorName":"linyangrui","CommitterEmail":"yangruilin888@gmail.com","CommitterName":"linyangrui","Timestamp":"2026-06-17T15:55:24+08:00"},"CompareURL":"linyangrui/pay-lab/compare/e1a6c4d1e482b99be48e2b948f9e3b31ccb8b59e...1fdc100dd9a8d94f0c89f1ff0b52b988f0e13b49","Len":1}...
|
1781682958
|
Edit
Delete
|
|
13176
|
10
|
5
|
10
|
43
|
0
|
0
|
refs/heads/lab-main
|
1
|
{"Commits":[{"Sha1":"7b728ac19 {"Commits":[{"Sha1":"7b728ac19d7a3d0a899649c9b00ba4b861736def","Message":"黑名单相关功能和flow\n","AuthorEmail":"yangruilin888@gmail.com","AuthorName":"linyangrui","CommitterEmail":"yangruilin888@gmail.com","CommitterName":"linyangrui","Timestamp":"2026-06-17T18:15:01+08:00"}],"HeadCommit":{"Sha1":"7b728ac19d7a3d0a899649c9b00ba4b861736def","Message":"黑名单相关功能和flow\n","AuthorEmail":"yangruilin888@gmail.com","AuthorName":"linyangrui","CommitterEmail":"yangruilin888@gmail.com","CommitterName":"linyangrui","Timestamp":"2026-06-17T18:15:01+08:00"},"CompareURL":"linyangrui/pay-lab/compare/1fdc100dd9a8d94f0c89f1ff0b52b988f0e13b49...7b728ac19d7a3d0a899649c9b00ba4b861736def","Len":1}...
|
1781691346
|
Edit
Delete
|
|
12603
|
12
|
5
|
12
|
41
|
0
|
0
|
refs/heads/iptv_serial
|
1
|
|
1781582669
|
Edit
Delete
|
|
12604
|
12
|
5
|
12
|
41
|
0
|
0
|
refs/heads/iptv_serial
|
1
|
{"Commits":[{"Sha1":"be20ab44b {"Commits":[{"Sha1":"be20ab44b53eff18de137c8a2068e24d6149ce66","Message":"jni:jhplayer: add support for serial-based communication with the Effector\n\nThis patch ports lua_serial.c (comes from cocos2d-x repository) into jhplayer\nproject, and exports the interfaces to java instead of lua.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2019-09-12T14:38:08+08:00"}],"HeadCommit":{"Sha1":"be20ab44b53eff18de137c8a2068e24d6149ce66","Message":"jni:jhplayer: add support for serial-based communication with the Effector\n\nThis patch ports lua_serial.c (comes from cocos2d-x repository) into jhplayer\nproject, and exports the interfaces to java instead of lua.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2019-09-12T14:38:08+08:00"},"CompareURL":"zhengpeizhong/jhplayer/compare/c5dd7a7bfc6358f8e6783206058708f6decbd3dc...be20ab44b53eff18de137c8a2068e24d6149ce66","Len":1}...
|
1781582669
|
Edit
Delete
|
|
12601
|
12
|
5
|
12
|
41
|
0
|
0
|
refs/heads/iptv_juhai
|
1
|
|
1781582669
|
Edit
Delete
|
|
12602
|
12
|
5
|
12
|
41
|
0
|
0
|
refs/heads/iptv_juhai
|
1
|
{"Commits":[{"Sha1":"cd80fc782 {"Commits":[{"Sha1":"cd80fc782942966e9cde390e19ad89c5bf6d564e","Message":"v1.0.17\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-06-21T14:46:24+08:00"},{"Sha1":"4ee0ad719256bac7bbe2844e8c3017e839a697b4","Message":"jhplayer:MyTinyAlsa:hasSndCard: add support for a new usbid\n\nAdd new usbid:\n0c76:161f\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-06-21T14:42:29+08:00"},{"Sha1":"86d91d5e28330b5530164f78049865525699b347","Message":"v1.0.16\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-05-13T18:17:37+08:00"},{"Sha1":"8ff7d0ed6669229faee525e88bf81288c2f29fbc","Message":"jhplayer:MyTinyAlsa: add support to amplify audio\n\nThe amplification alogrithm I use is simple:\npcm = pcm * GAIN_FACTOR\n\nThe default value of GAIN_FACTOR is 30.0, user could\nchange its value through \"-usbgain\" parameter with the\nsetRecorderInitArgv function.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-05-13T18:12:33+08:00"},{"Sha1":"40dcd0382c87277a99a8a15cd941d222b122e45c","Message":"jhplayer:MyTinyAlsa: using usbid-based usb sound card detection logic\n\nMany peripheral devices have audio codec, e.g., infrared remote\ncontroller, camera, etc. So we need to use usbid to find out our\ndesired audio codec.\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-05-13T15:00:57+08:00"}],"HeadCommit":{"Sha1":"cd80fc782942966e9cde390e19ad89c5bf6d564e","Message":"v1.0.17\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-06-21T14:46:24+08:00"},"CompareURL":"zhengpeizhong/jhplayer/compare/5a319ed4213e1d2d91b0d9706f4e69bd7b446b81...cd80fc782942966e9cde390e19ad89c5bf6d564e","Len":10}...
|
1781582669
|
Edit
Delete
|
|
12599
|
12
|
5
|
12
|
41
|
0
|
0
|
refs/heads/iptv
|
1
|
|
1781582669
|
Edit
Delete
|
|
12600
|
12
|
5
|
12
|
41
|
0
|
0
|
refs/heads/iptv
|
1
|
{"Commits":[],"HeadCommit":{"S {"Commits":[],"HeadCommit":{"Sha1":"fc6f203023196b338f8ff0f2f79089de2c6e9e76","Message":"v1.0.13\n","AuthorEmail":"udknight@gmail.com","AuthorName":"Wang YanQing","CommitterEmail":"udknight@gmail.com","CommitterName":"Wang YanQing","Timestamp":"2020-04-28T10:54:10+08:00"},"CompareURL":"zhengpeizhong/jhplayer/compare/master...fc6f203023196b338f8ff0f2f79089de2c6e9e76","Len":0}...
|
1781582669
|
Edit
Delete
|
|
17178
|
7
|
5
|
7
|
50
|
0
|
0
|
refs/heads/hljTest
|
1
|
|
1783943233
|
Edit
Delete
|
|
17179
|
5
|
5
|
7
|
50
|
0
|
0
|
refs/heads/hljTest
|
1
|
|
1783943233
|
Edit
Delete
|
|
17180
|
7
|
5
|
7
|
50
|
0
|
0
|
refs/heads/hljTest
|
1
|
{"Commits":[],"HeadCommit":{"S {"Commits":[],"HeadCommit":{"Sha1":"87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Message":"chore(models): track model weights with lfs\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T01:00:28-07:00"},"CompareURL":"luoanwu/juhi-song-library-alignment/compare/main...87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Len":0}...
|
1783943233
|
Edit
Delete
|
|
17181
|
5
|
5
|
7
|
50
|
0
|
0
|
refs/heads/hljTest
|
1
|
{"Commits":[],"HeadCommit":{"S {"Commits":[],"HeadCommit":{"Sha1":"87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Message":"chore(models): track model weights with lfs\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T01:00:28-07:00"},"CompareURL":"luoanwu/juhi-song-library-alignment/compare/main...87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Len":0}...
|
1783943233
|
Edit
Delete
|
|
19837
|
7
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
|
1785386561
|
Edit
Delete
|
|
19838
|
5
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
|
1785386561
|
Edit
Delete
|
|
19839
|
7
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"8b0729c9b {"Commits":[{"Sha1":"8b0729c9b6d46b1dd46a9f2f4b7536a5106a812e","Message":"fix(engine): Tesla P4 出歌链路修复(fp32+int8量化+DiT CPU offload)\n\nP4(sm_61 Pascal, 8GB) 上出歌此前必失败,根因是四个耦合约束:\n- fp16(默认)在 DiT 采样溢出产 NaN latents;唯一数值稳定路径是 fp32\n- fp32 DiT 权重 ~7.3GB,引擎「先整体搬 GPU 再量化」,加载即 OOM\n- 引擎 HTTP 出歌懒加载路径漏传 quantization,tier3 的量化默认成死代码\n- Pascal 默认降级的 w8a8_dynamic 张量不支持跨设备搬运,与 DiT offload 冲突\n\n有效组合: fp32 + int8_weight_only 量化 + DiT CPU offload + expandable_segments,\nDiT 在 CPU 上量化为 int8 后分层搬 GPU,常驻显存仅 ~387MB。实测 30s 歌成功落盘 FLAC。\n\n- start-engine-p4.sh: 注入上述全部运行时开关\n- deploy/ace-step/patches/: 固化引擎侧改动(startup_model_init.py 接通 quantization)\n- bootstrap-engine.sh / Dockerfile.tesla-p4: 引擎重建时自动应用补丁(引擎目录 gitignored)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T12:42:31+08:00"},{"Sha1":"c53b6955d7851b95d797b90087813d6a2a83d32f","Message":"feat: 新增 Tesla P4 引擎启动脚本(禁用 cuDNN)\n\n随 torch 2.5.1+cu121 的 cuDNN 9.1.9 在 Pascal(sm_61) 上找不到卷积算法\n(DiT proj_in Conv1d 报 \"GET was unable to find an engine to execute this\ncomputation\",fp16/fp32 皆然)。P4 无 Tensor Core,cuDNN 不带来加速,\n故启动时注入 torch.backends.cudnn.enabled=False,卷积回退原生 CUDA kernel。\n同时套用 Pascal 兼容开关(5Hz LM/LLM 走 pt backend)。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T09:40:48+08:00"},{"Sha1":"51cd9fe059767d2377bd6292cf1913a9885f8cd7","Message":"feat: 歌词起草接入豆包大模型 + 本地/公网运行配置\n\n歌词起草从纯前端模板改为调用豆包(火山引擎 Ark,OpenAI 兼容)大模型:\n- contracts 新增 lyrics 域(draftLyricSchema 入参/响应契约)\n- 后端新建 lyrics 模块:POST /api/lyrics/draft,未配置 DOUBAO_API_KEY 时 503\n- 前端起草按钮改调后端,大模型不可用时降级回本地模板草稿,不阻断创作\n- .env.example 登记 DOUBAO_API_KEY/BASE_URL/MODEL(真实密钥仅在 gitignored 的 .env)\n\n运行配置:docker-compose Redis 端口参数化、前端 dev 绑 0.0.0.0 以支持公网访问\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-29T18:01:05+08:00"}],"HeadCommit":{"Sha1":"8b0729c9b6d46b1dd46a9f2f4b7536a5106a812e","Message":"fix(engine): Tesla P4 出歌链路修复(fp32+int8量化+DiT CPU offload)\n\nP4(sm_61 Pascal, 8GB) 上出歌此前必失败,根因是四个耦合约束:\n- fp16(默认)在 DiT 采样溢出产 NaN latents;唯一数值稳定路径是 fp32\n- fp32 DiT 权重 ~7.3GB,引擎「先整体搬 GPU 再量化」,加载即 OOM\n- 引擎 HTTP 出歌懒加载路径漏传 quantization,tier3 的量化默认成死代码\n- Pascal 默认降级的 w8a8_dynamic 张量不支持跨设备搬运,与 DiT offload 冲突\n\n有效组合: fp32 + int8_weight_only 量化 + DiT CPU offload + expandable_segments,\nDiT 在 CPU 上量化为 int8 后分层搬 GPU,常驻显存仅 ~387MB。实测 30s 歌成功落盘 FLAC。\n\n- start-engine-p4.sh: 注入上述全部运行时开关\n- deploy/ace-step/patches/: 固化引擎侧改动(startup_model_init.py 接通 quantization)\n- bootstrap-engine.sh / Dockerfile.tesla-p4: 引擎重建时自动应用补丁(引擎目录 gitignored)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T12:42:31+08:00"},"CompareURL":"luoanwu/song-generation/compare/d28a8594e6cf9091cdf9ccd0fad377041dfaf727...8b0729c9b6d46b1dd46a9f2f4b7536a5106a812e","Len":3}...
|
1785386561
|
Edit
Delete
|
|
19840
|
5
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"8b0729c9b {"Commits":[{"Sha1":"8b0729c9b6d46b1dd46a9f2f4b7536a5106a812e","Message":"fix(engine): Tesla P4 出歌链路修复(fp32+int8量化+DiT CPU offload)\n\nP4(sm_61 Pascal, 8GB) 上出歌此前必失败,根因是四个耦合约束:\n- fp16(默认)在 DiT 采样溢出产 NaN latents;唯一数值稳定路径是 fp32\n- fp32 DiT 权重 ~7.3GB,引擎「先整体搬 GPU 再量化」,加载即 OOM\n- 引擎 HTTP 出歌懒加载路径漏传 quantization,tier3 的量化默认成死代码\n- Pascal 默认降级的 w8a8_dynamic 张量不支持跨设备搬运,与 DiT offload 冲突\n\n有效组合: fp32 + int8_weight_only 量化 + DiT CPU offload + expandable_segments,\nDiT 在 CPU 上量化为 int8 后分层搬 GPU,常驻显存仅 ~387MB。实测 30s 歌成功落盘 FLAC。\n\n- start-engine-p4.sh: 注入上述全部运行时开关\n- deploy/ace-step/patches/: 固化引擎侧改动(startup_model_init.py 接通 quantization)\n- bootstrap-engine.sh / Dockerfile.tesla-p4: 引擎重建时自动应用补丁(引擎目录 gitignored)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T12:42:31+08:00"},{"Sha1":"c53b6955d7851b95d797b90087813d6a2a83d32f","Message":"feat: 新增 Tesla P4 引擎启动脚本(禁用 cuDNN)\n\n随 torch 2.5.1+cu121 的 cuDNN 9.1.9 在 Pascal(sm_61) 上找不到卷积算法\n(DiT proj_in Conv1d 报 \"GET was unable to find an engine to execute this\ncomputation\",fp16/fp32 皆然)。P4 无 Tensor Core,cuDNN 不带来加速,\n故启动时注入 torch.backends.cudnn.enabled=False,卷积回退原生 CUDA kernel。\n同时套用 Pascal 兼容开关(5Hz LM/LLM 走 pt backend)。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T09:40:48+08:00"},{"Sha1":"51cd9fe059767d2377bd6292cf1913a9885f8cd7","Message":"feat: 歌词起草接入豆包大模型 + 本地/公网运行配置\n\n歌词起草从纯前端模板改为调用豆包(火山引擎 Ark,OpenAI 兼容)大模型:\n- contracts 新增 lyrics 域(draftLyricSchema 入参/响应契约)\n- 后端新建 lyrics 模块:POST /api/lyrics/draft,未配置 DOUBAO_API_KEY 时 503\n- 前端起草按钮改调后端,大模型不可用时降级回本地模板草稿,不阻断创作\n- .env.example 登记 DOUBAO_API_KEY/BASE_URL/MODEL(真实密钥仅在 gitignored 的 .env)\n\n运行配置:docker-compose Redis 端口参数化、前端 dev 绑 0.0.0.0 以支持公网访问\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-29T18:01:05+08:00"}],"HeadCommit":{"Sha1":"8b0729c9b6d46b1dd46a9f2f4b7536a5106a812e","Message":"fix(engine): Tesla P4 出歌链路修复(fp32+int8量化+DiT CPU offload)\n\nP4(sm_61 Pascal, 8GB) 上出歌此前必失败,根因是四个耦合约束:\n- fp16(默认)在 DiT 采样溢出产 NaN latents;唯一数值稳定路径是 fp32\n- fp32 DiT 权重 ~7.3GB,引擎「先整体搬 GPU 再量化」,加载即 OOM\n- 引擎 HTTP 出歌懒加载路径漏传 quantization,tier3 的量化默认成死代码\n- Pascal 默认降级的 w8a8_dynamic 张量不支持跨设备搬运,与 DiT offload 冲突\n\n有效组合: fp32 + int8_weight_only 量化 + DiT CPU offload + expandable_segments,\nDiT 在 CPU 上量化为 int8 后分层搬 GPU,常驻显存仅 ~387MB。实测 30s 歌成功落盘 FLAC。\n\n- start-engine-p4.sh: 注入上述全部运行时开关\n- deploy/ace-step/patches/: 固化引擎侧改动(startup_model_init.py 接通 quantization)\n- bootstrap-engine.sh / Dockerfile.tesla-p4: 引擎重建时自动应用补丁(引擎目录 gitignored)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T12:42:31+08:00"},"CompareURL":"luoanwu/song-generation/compare/d28a8594e6cf9091cdf9ccd0fad377041dfaf727...8b0729c9b6d46b1dd46a9f2f4b7536a5106a812e","Len":3}...
|
1785386561
|
Edit
Delete
|
|
19869
|
7
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"ea37f6993 {"Commits":[{"Sha1":"ea37f699381c4dbc2445e6be1d3c1fa9bd0feb6a","Message":"chore(deploy): 纳入裸机常驻部署的 systemd 单元\n\n本地 pnpm 直跑方式对外部署时的三个 systemd 单元(引擎/后端/前端),\n开机自启 + 崩溃自动重启。当前生产机即用此方式部署。\n\n- acestep-engine.service: 引擎(8001),跑 start-engine-p4.sh\n- song-api.service: NestJS 后端(3201, start:prod)\n- song-web.service: Next.js 前端(3101, next start),对外唯一入口\n- README: 安装/build 前置/运维命令/注意事项\n\n单元内容与 /etc/systemd/system 已运行版本一致。DB/Redis 为 docker 容器,不在此管理。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T13:32:08+08:00"}],"HeadCommit":{"Sha1":"ea37f699381c4dbc2445e6be1d3c1fa9bd0feb6a","Message":"chore(deploy): 纳入裸机常驻部署的 systemd 单元\n\n本地 pnpm 直跑方式对外部署时的三个 systemd 单元(引擎/后端/前端),\n开机自启 + 崩溃自动重启。当前生产机即用此方式部署。\n\n- acestep-engine.service: 引擎(8001),跑 start-engine-p4.sh\n- song-api.service: NestJS 后端(3201, start:prod)\n- song-web.service: Next.js 前端(3101, next start),对外唯一入口\n- README: 安装/build 前置/运维命令/注意事项\n\n单元内容与 /etc/systemd/system 已运行版本一致。DB/Redis 为 docker 容器,不在此管理。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T13:32:08+08:00"},"CompareURL":"luoanwu/song-generation/compare/8b0729c9b6d46b1dd46a9f2f4b7536a5106a812e...ea37f699381c4dbc2445e6be1d3c1fa9bd0feb6a","Len":1}...
|
1785389542
|
Edit
Delete
|
|
19870
|
5
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"ea37f6993 {"Commits":[{"Sha1":"ea37f699381c4dbc2445e6be1d3c1fa9bd0feb6a","Message":"chore(deploy): 纳入裸机常驻部署的 systemd 单元\n\n本地 pnpm 直跑方式对外部署时的三个 systemd 单元(引擎/后端/前端),\n开机自启 + 崩溃自动重启。当前生产机即用此方式部署。\n\n- acestep-engine.service: 引擎(8001),跑 start-engine-p4.sh\n- song-api.service: NestJS 后端(3201, start:prod)\n- song-web.service: Next.js 前端(3101, next start),对外唯一入口\n- README: 安装/build 前置/运维命令/注意事项\n\n单元内容与 /etc/systemd/system 已运行版本一致。DB/Redis 为 docker 容器,不在此管理。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T13:32:08+08:00"}],"HeadCommit":{"Sha1":"ea37f699381c4dbc2445e6be1d3c1fa9bd0feb6a","Message":"chore(deploy): 纳入裸机常驻部署的 systemd 单元\n\n本地 pnpm 直跑方式对外部署时的三个 systemd 单元(引擎/后端/前端),\n开机自启 + 崩溃自动重启。当前生产机即用此方式部署。\n\n- acestep-engine.service: 引擎(8001),跑 start-engine-p4.sh\n- song-api.service: NestJS 后端(3201, start:prod)\n- song-web.service: Next.js 前端(3101, next start),对外唯一入口\n- README: 安装/build 前置/运维命令/注意事项\n\n单元内容与 /etc/systemd/system 已运行版本一致。DB/Redis 为 docker 容器,不在此管理。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T13:32:08+08:00"},"CompareURL":"luoanwu/song-generation/compare/8b0729c9b6d46b1dd46a9f2f4b7536a5106a812e...ea37f699381c4dbc2445e6be1d3c1fa9bd0feb6a","Len":1}...
|
1785389542
|
Edit
Delete
|
|
19910
|
7
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"e8b913f56 {"Commits":[{"Sha1":"e8b913f5667fb8a1812a240ef11d6dc579839351","Message":"chore(deploy): 纳入 nginx HTTPS 总入口配置与部署说明\n\ngeneration.g-hi.com 经 nginx(443) 分流:/ws→3201、其余→3101(Next),\nHTTP 跳转 HTTPS;IP/其它域名兜底回退到同机 voiceprint(8443)。\n配置与说明沉淀到 deploy/nginx/,并同步更新 systemd/README 的服务拓扑。\n证书与 .env 不入库。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T14:22:31+08:00"}],"HeadCommit":{"Sha1":"e8b913f5667fb8a1812a240ef11d6dc579839351","Message":"chore(deploy): 纳入 nginx HTTPS 总入口配置与部署说明\n\ngeneration.g-hi.com 经 nginx(443) 分流:/ws→3201、其余→3101(Next),\nHTTP 跳转 HTTPS;IP/其它域名兜底回退到同机 voiceprint(8443)。\n配置与说明沉淀到 deploy/nginx/,并同步更新 systemd/README 的服务拓扑。\n证书与 .env 不入库。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T14:22:31+08:00"},"CompareURL":"luoanwu/song-generation/compare/ea37f699381c4dbc2445e6be1d3c1fa9bd0feb6a...e8b913f5667fb8a1812a240ef11d6dc579839351","Len":1}...
|
1785392662
|
Edit
Delete
|
|
19911
|
5
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"e8b913f56 {"Commits":[{"Sha1":"e8b913f5667fb8a1812a240ef11d6dc579839351","Message":"chore(deploy): 纳入 nginx HTTPS 总入口配置与部署说明\n\ngeneration.g-hi.com 经 nginx(443) 分流:/ws→3201、其余→3101(Next),\nHTTP 跳转 HTTPS;IP/其它域名兜底回退到同机 voiceprint(8443)。\n配置与说明沉淀到 deploy/nginx/,并同步更新 systemd/README 的服务拓扑。\n证书与 .env 不入库。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T14:22:31+08:00"}],"HeadCommit":{"Sha1":"e8b913f5667fb8a1812a240ef11d6dc579839351","Message":"chore(deploy): 纳入 nginx HTTPS 总入口配置与部署说明\n\ngeneration.g-hi.com 经 nginx(443) 分流:/ws→3201、其余→3101(Next),\nHTTP 跳转 HTTPS;IP/其它域名兜底回退到同机 voiceprint(8443)。\n配置与说明沉淀到 deploy/nginx/,并同步更新 systemd/README 的服务拓扑。\n证书与 .env 不入库。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T14:22:31+08:00"},"CompareURL":"luoanwu/song-generation/compare/ea37f699381c4dbc2445e6be1d3c1fa9bd0feb6a...e8b913f5667fb8a1812a240ef11d6dc579839351","Len":1}...
|
1785392662
|
Edit
Delete
|
|
19933
|
7
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"04835a06e {"Commits":[{"Sha1":"04835a06e70f200230a21a912961afcbd6c503fd","Message":"docs: 重写 docs/README 为本项目(歌词→歌曲批量生产)说明\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T14:45:29+08:00"}],"HeadCommit":{"Sha1":"04835a06e70f200230a21a912961afcbd6c503fd","Message":"docs: 重写 docs/README 为本项目(歌词→歌曲批量生产)说明\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T14:45:29+08:00"},"CompareURL":"luoanwu/song-generation/compare/e8b913f5667fb8a1812a240ef11d6dc579839351...04835a06e70f200230a21a912961afcbd6c503fd","Len":1}...
|
1785395827
|
Edit
Delete
|
|
19934
|
5
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"04835a06e {"Commits":[{"Sha1":"04835a06e70f200230a21a912961afcbd6c503fd","Message":"docs: 重写 docs/README 为本项目(歌词→歌曲批量生产)说明\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T14:45:29+08:00"}],"HeadCommit":{"Sha1":"04835a06e70f200230a21a912961afcbd6c503fd","Message":"docs: 重写 docs/README 为本项目(歌词→歌曲批量生产)说明\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-30T14:45:29+08:00"},"CompareURL":"luoanwu/song-generation/compare/e8b913f5667fb8a1812a240ef11d6dc579839351...04835a06e70f200230a21a912961afcbd6c503fd","Len":1}...
|
1785395827
|
Edit
Delete
|
|
20362
|
7
|
5
|
7
|
72
|
0
|
0
|
refs/heads/hljTest
|
0
|
|
1785740632
|
Edit
Delete
|
|
20363
|
5
|
5
|
7
|
72
|
0
|
0
|
refs/heads/hljTest
|
0
|
|
1785740632
|
Edit
Delete
|
|
20364
|
7
|
5
|
7
|
72
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"d2c99c9fc {"Commits":[{"Sha1":"d2c99c9fc71e8a1c48d1aa3684c30ead3eb110c0","Message":"chore(dockerfile): drop leftover debug prints from prisma cp step\n\n前次 commit 进了 set -x + 多处 ls -la 调试输出。功能等价,纯粹清理。\ncp 失败时 echo message 从 \"cp ok for X\" 改成 \"cp prisma client for X: ok/FAIL\"\n以匹配同文件其他步骤的可读风格。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-03T15:03:44+08:00"},{"Sha1":"f97d67dbc0d53eeb203d205164c493a7b30a1116","Message":"chore: ship deployment integration + VM env layering\n\n合并远端 main 36 个新提交,并把本机部署整合的 basePath + BASE 双链路方案\n一起入仓;VM 镜像里 apt 镜像源抽成 APT_MIRROR build-arg,业务层/环境层解耦。\n\n业务/部署整合(来自 basePath 整合方案,对应 CLAUDE.md 真源地图「整合到\ngeneration.g-hi.com 的地址口径」):\n\n- apps/web/next.config.ts: basePath '/jh'(与 songGeneration/voicePrintRecognition\n 同款),同时取并集远端的 output: 'standalone' + outputFileTracingRoot\n- apps/web/src/hooks/useRealtime.ts: SSE_BASE = BASE;defaultWebSocketUrl 区分\n 绝对 URL / 相对前缀两种情况\n- apps/web/src/lib/api.ts: BASE = NEXT_PUBLIC_API_URL || NEXT_PUBLIC_BASE_PATH ||\n ''(必须 || 不是 ??,build 时 env 是字符串 '' 非 null,?? 不会把空串当\n fallback),USER_ROLE 改 runtime(data-user-role)来自 layout.tsx\n- deploy/vm/nginx.conf: gateway 加 = /jh/ws { proxy_pass http://api-nestjs:3001/ws; }\n (显式 URI 剥 /jh 前缀,转发到 NestJS WsAdapter 实际注册路径 /ws);/api/ /sse/\n 保留以便本机直连 8180(无前缀)调试\n- deploy/vm/compose.yaml: 与远端取并集(migrate 拆 target / non root / 资源\n 上限 / 日志轮转)\n- scripts/vm-deploy.sh: 显式注入 NEXT_PUBLIC_BASE_PATH 给 web 构建;与远端的\n IMAGE_TAG 时间戳机制取并集\n\n环境分层(Mac / 海外 CI / 国内 GFW 互不影响):\n\n- deploy/vm/Dockerfile: 硬编码的 aliyun 源 sed 抽成 ARG APT_MIRROR=;\n vm-deploy.sh 自动从 .env 注入所有 build target;空 = 走 deb.debian.org 官方源\n- deploy/vm/.env.example: 文档化 APT_MIRROR 留空行为\n- 理由:之前硬编码 mirrors.aliyun.com 在 Mac/海外 CI 上 build 会做无用 sed\n 且让外人看不出这是环境特化;现在抽成 build-arg 任何环境只需一行配置\n\n部署 bug 修(不分环境,本机 pnpm 9.15 行为差异):\n\n- deploy/vm/Dockerfile: 删 @repo/contracts 的 prepare 钩子(pnpm 9.15 跨\n workspace install 找不到子目录的 tsconfig.json)\n- deploy/vm/Dockerfile: 删 pnpm deploy --legacy(pnpm 9.7+ 已删除该 flag)\n- deploy/vm/Dockerfile: deploy 之后 cp -a --remove-destination 强制覆盖 .prisma/\n client;deploy 阶段的 @prisma/client postinstall 会把真实 client 还原成\n 2KB 占位,缺 17MB libquery_engine 二进制,runtime 抛 \"did not initialize\"\n- deploy/vm/Dockerfile: web 镜像 public 目录用 RUN mkdir -p 兜底(apps/web 当前\n 无 public 资产,但 next standalone 仍可能因目录存在与否决定路由)\n- deploy/vm/Dockerfile: runtime-base 阶段加 APT_MIRROR 注入(同 build 阶段)\n- packages/contracts/package.json: 删 prepare 字段(Dockerfile 显式\n pnpm --filter @repo/contracts build 触发)\n\nCLAUDE.md 同步(远端 36 提交 + 治理增量 +222 行)。\n\n验证:\n- pnpm check exit 0(5/5 packages,绿;ownTests=19, ownTestCases=227)\n- 部署到本机 tag 20260803T055150Z 后 /api/health 200,DB+Redis 探活正常\n- 5 个 juhai-quotation 容器 healthy(postgres/redis/api-nestjs/web/gateway)\n\n未覆盖:22 个 reports/*.latest.json(机器产物,commit 后下次 check 即变 dirty)\n与 packages/contracts/node-compile-cache/(node 22 编译缓存)未入 commit。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-03T14:34:32+08:00"}],"HeadCommit":{"Sha1":"d2c99c9fc71e8a1c48d1aa3684c30ead3eb110c0","Message":"chore(dockerfile): drop leftover debug prints from prisma cp step\n\n前次 commit 进了 set -x + 多处 ls -la 调试输出。功能等价,纯粹清理。\ncp 失败时 echo message 从 \"cp ok for X\" 改成 \"cp prisma client for X: ok/FAIL\"\n以匹配同文件其他步骤的可读风格。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-03T15:03:44+08:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/7619cf79681794bf28a8dceeb606c9dcfec21a5c...d2c99c9fc71e8a1c48d1aa3684c30ead3eb110c0","Len":2}...
|
1785740632
|
Edit
Delete
|
|
20365
|
5
|
5
|
7
|
72
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"d2c99c9fc {"Commits":[{"Sha1":"d2c99c9fc71e8a1c48d1aa3684c30ead3eb110c0","Message":"chore(dockerfile): drop leftover debug prints from prisma cp step\n\n前次 commit 进了 set -x + 多处 ls -la 调试输出。功能等价,纯粹清理。\ncp 失败时 echo message 从 \"cp ok for X\" 改成 \"cp prisma client for X: ok/FAIL\"\n以匹配同文件其他步骤的可读风格。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-03T15:03:44+08:00"},{"Sha1":"f97d67dbc0d53eeb203d205164c493a7b30a1116","Message":"chore: ship deployment integration + VM env layering\n\n合并远端 main 36 个新提交,并把本机部署整合的 basePath + BASE 双链路方案\n一起入仓;VM 镜像里 apt 镜像源抽成 APT_MIRROR build-arg,业务层/环境层解耦。\n\n业务/部署整合(来自 basePath 整合方案,对应 CLAUDE.md 真源地图「整合到\ngeneration.g-hi.com 的地址口径」):\n\n- apps/web/next.config.ts: basePath '/jh'(与 songGeneration/voicePrintRecognition\n 同款),同时取并集远端的 output: 'standalone' + outputFileTracingRoot\n- apps/web/src/hooks/useRealtime.ts: SSE_BASE = BASE;defaultWebSocketUrl 区分\n 绝对 URL / 相对前缀两种情况\n- apps/web/src/lib/api.ts: BASE = NEXT_PUBLIC_API_URL || NEXT_PUBLIC_BASE_PATH ||\n ''(必须 || 不是 ??,build 时 env 是字符串 '' 非 null,?? 不会把空串当\n fallback),USER_ROLE 改 runtime(data-user-role)来自 layout.tsx\n- deploy/vm/nginx.conf: gateway 加 = /jh/ws { proxy_pass http://api-nestjs:3001/ws; }\n (显式 URI 剥 /jh 前缀,转发到 NestJS WsAdapter 实际注册路径 /ws);/api/ /sse/\n 保留以便本机直连 8180(无前缀)调试\n- deploy/vm/compose.yaml: 与远端取并集(migrate 拆 target / non root / 资源\n 上限 / 日志轮转)\n- scripts/vm-deploy.sh: 显式注入 NEXT_PUBLIC_BASE_PATH 给 web 构建;与远端的\n IMAGE_TAG 时间戳机制取并集\n\n环境分层(Mac / 海外 CI / 国内 GFW 互不影响):\n\n- deploy/vm/Dockerfile: 硬编码的 aliyun 源 sed 抽成 ARG APT_MIRROR=;\n vm-deploy.sh 自动从 .env 注入所有 build target;空 = 走 deb.debian.org 官方源\n- deploy/vm/.env.example: 文档化 APT_MIRROR 留空行为\n- 理由:之前硬编码 mirrors.aliyun.com 在 Mac/海外 CI 上 build 会做无用 sed\n 且让外人看不出这是环境特化;现在抽成 build-arg 任何环境只需一行配置\n\n部署 bug 修(不分环境,本机 pnpm 9.15 行为差异):\n\n- deploy/vm/Dockerfile: 删 @repo/contracts 的 prepare 钩子(pnpm 9.15 跨\n workspace install 找不到子目录的 tsconfig.json)\n- deploy/vm/Dockerfile: 删 pnpm deploy --legacy(pnpm 9.7+ 已删除该 flag)\n- deploy/vm/Dockerfile: deploy 之后 cp -a --remove-destination 强制覆盖 .prisma/\n client;deploy 阶段的 @prisma/client postinstall 会把真实 client 还原成\n 2KB 占位,缺 17MB libquery_engine 二进制,runtime 抛 \"did not initialize\"\n- deploy/vm/Dockerfile: web 镜像 public 目录用 RUN mkdir -p 兜底(apps/web 当前\n 无 public 资产,但 next standalone 仍可能因目录存在与否决定路由)\n- deploy/vm/Dockerfile: runtime-base 阶段加 APT_MIRROR 注入(同 build 阶段)\n- packages/contracts/package.json: 删 prepare 字段(Dockerfile 显式\n pnpm --filter @repo/contracts build 触发)\n\nCLAUDE.md 同步(远端 36 提交 + 治理增量 +222 行)。\n\n验证:\n- pnpm check exit 0(5/5 packages,绿;ownTests=19, ownTestCases=227)\n- 部署到本机 tag 20260803T055150Z 后 /api/health 200,DB+Redis 探活正常\n- 5 个 juhai-quotation 容器 healthy(postgres/redis/api-nestjs/web/gateway)\n\n未覆盖:22 个 reports/*.latest.json(机器产物,commit 后下次 check 即变 dirty)\n与 packages/contracts/node-compile-cache/(node 22 编译缓存)未入 commit。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-03T14:34:32+08:00"}],"HeadCommit":{"Sha1":"d2c99c9fc71e8a1c48d1aa3684c30ead3eb110c0","Message":"chore(dockerfile): drop leftover debug prints from prisma cp step\n\n前次 commit 进了 set -x + 多处 ls -la 调试输出。功能等价,纯粹清理。\ncp 失败时 echo message 从 \"cp ok for X\" 改成 \"cp prisma client for X: ok/FAIL\"\n以匹配同文件其他步骤的可读风格。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-03T15:03:44+08:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/7619cf79681794bf28a8dceeb606c9dcfec21a5c...d2c99c9fc71e8a1c48d1aa3684c30ead3eb110c0","Len":2}...
|
1785740632
|
Edit
Delete
|
|
20459
|
7
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"da3f6895d {"Commits":[{"Sha1":"da3f6895d371408052023bc1698549e1f348f04a","Message":"chore(web): 整合服务器部署接入 basePath: '/song'\n\nnginx 整合服务器 (/etc/nginx/sites-enabled/00-incoming.conf) 已按\nbasePath 模式把 /song/* 反代到本仓 web(:3101)、/song-api/* 反代到\nAPI(:3201)。web 不加 basePath 时 next 端对 /_next/* 资源按根路径\n提供,nginx 转发到 :3101 后 404。\n\n改动:\n- 非 capacitor 构建启用 basePath: '/song'(capacitor 静态导出仍\n 走 out/,绝对 URL 直连后端,不需 basePath)。\n- 增补一段注释说明与 nginx /song 路由的对应关系。\n\ndev 访问 http://localhost:3101/song/,与 generation.g-hi.com\n线上 /song/ 同源。\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"luoanwu@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"luoanwu@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-04T14:13:00+08:00"}],"HeadCommit":{"Sha1":"da3f6895d371408052023bc1698549e1f348f04a","Message":"chore(web): 整合服务器部署接入 basePath: '/song'\n\nnginx 整合服务器 (/etc/nginx/sites-enabled/00-incoming.conf) 已按\nbasePath 模式把 /song/* 反代到本仓 web(:3101)、/song-api/* 反代到\nAPI(:3201)。web 不加 basePath 时 next 端对 /_next/* 资源按根路径\n提供,nginx 转发到 :3101 后 404。\n\n改动:\n- 非 capacitor 构建启用 basePath: '/song'(capacitor 静态导出仍\n 走 out/,绝对 URL 直连后端,不需 basePath)。\n- 增补一段注释说明与 nginx /song 路由的对应关系。\n\ndev 访问 http://localhost:3101/song/,与 generation.g-hi.com\n线上 /song/ 同源。\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"luoanwu@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"luoanwu@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-04T14:13:00+08:00"},"CompareURL":"luoanwu/song-generation/compare/04835a06e70f200230a21a912961afcbd6c503fd...da3f6895d371408052023bc1698549e1f348f04a","Len":1}...
|
1785824016
|
Edit
Delete
|
|
20460
|
5
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"da3f6895d {"Commits":[{"Sha1":"da3f6895d371408052023bc1698549e1f348f04a","Message":"chore(web): 整合服务器部署接入 basePath: '/song'\n\nnginx 整合服务器 (/etc/nginx/sites-enabled/00-incoming.conf) 已按\nbasePath 模式把 /song/* 反代到本仓 web(:3101)、/song-api/* 反代到\nAPI(:3201)。web 不加 basePath 时 next 端对 /_next/* 资源按根路径\n提供,nginx 转发到 :3101 后 404。\n\n改动:\n- 非 capacitor 构建启用 basePath: '/song'(capacitor 静态导出仍\n 走 out/,绝对 URL 直连后端,不需 basePath)。\n- 增补一段注释说明与 nginx /song 路由的对应关系。\n\ndev 访问 http://localhost:3101/song/,与 generation.g-hi.com\n线上 /song/ 同源。\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"luoanwu@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"luoanwu@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-04T14:13:00+08:00"}],"HeadCommit":{"Sha1":"da3f6895d371408052023bc1698549e1f348f04a","Message":"chore(web): 整合服务器部署接入 basePath: '/song'\n\nnginx 整合服务器 (/etc/nginx/sites-enabled/00-incoming.conf) 已按\nbasePath 模式把 /song/* 反代到本仓 web(:3101)、/song-api/* 反代到\nAPI(:3201)。web 不加 basePath 时 next 端对 /_next/* 资源按根路径\n提供,nginx 转发到 :3101 后 404。\n\n改动:\n- 非 capacitor 构建启用 basePath: '/song'(capacitor 静态导出仍\n 走 out/,绝对 URL 直连后端,不需 basePath)。\n- 增补一段注释说明与 nginx /song 路由的对应关系。\n\ndev 访问 http://localhost:3101/song/,与 generation.g-hi.com\n线上 /song/ 同源。\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"luoanwu@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"luoanwu@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-04T14:13:00+08:00"},"CompareURL":"luoanwu/song-generation/compare/04835a06e70f200230a21a912961afcbd6c503fd...da3f6895d371408052023bc1698549e1f348f04a","Len":1}...
|
1785824016
|
Edit
Delete
|
|
20994
|
7
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"109f2b36f {"Commits":[{"Sha1":"109f2b36f24f3ecc422affedfb31de25af25977c","Message":"Merge origin/main into hljTest\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-06T13:45:25+08:00"},{"Sha1":"5fc0d4e18a5b865a166b486b4836bc822e8392d0","Message":"Merge branch 'hljTest' into main\n\n集成豆包歌词起草、Tesla P4 出歌修复(fp32+int8+DiT offload)、\nnginx HTTPS 总入口 + systemd 常驻部署、web basePath '/song'。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-05T20:59:21-07:00"},{"Sha1":"67970c1b0a1dcb0e91d17be0a26611d01e28f35c","Message":"feat: 歌曲在线回放链路 + 曲库播放 UI\n\n- 新增 song-playback.service.ts:短时随机凭证签发,浏览器分段播放\n- songs.controller.ts:Range 响应支持 FLAC 分段流式回放,不预下载\n- LibraryView 接入在线播放交互;api.ts/contracts 同步回放契约\n- 刷新治理 reports 与 GPU 部署校验(check-deployment.mjs)\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-05T20:59:07-07:00"}],"HeadCommit":{"Sha1":"109f2b36f24f3ecc422affedfb31de25af25977c","Message":"Merge origin/main into hljTest\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-06T13:45:25+08:00"},"CompareURL":"luoanwu/song-generation/compare/da3f6895d371408052023bc1698549e1f348f04a...109f2b36f24f3ecc422affedfb31de25af25977c","Len":3}...
|
1785995712
|
Edit
Delete
|
|
20995
|
5
|
5
|
7
|
53
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"109f2b36f {"Commits":[{"Sha1":"109f2b36f24f3ecc422affedfb31de25af25977c","Message":"Merge origin/main into hljTest\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-06T13:45:25+08:00"},{"Sha1":"5fc0d4e18a5b865a166b486b4836bc822e8392d0","Message":"Merge branch 'hljTest' into main\n\n集成豆包歌词起草、Tesla P4 出歌修复(fp32+int8+DiT offload)、\nnginx HTTPS 总入口 + systemd 常驻部署、web basePath '/song'。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-05T20:59:21-07:00"},{"Sha1":"67970c1b0a1dcb0e91d17be0a26611d01e28f35c","Message":"feat: 歌曲在线回放链路 + 曲库播放 UI\n\n- 新增 song-playback.service.ts:短时随机凭证签发,浏览器分段播放\n- songs.controller.ts:Range 响应支持 FLAC 分段流式回放,不预下载\n- LibraryView 接入在线播放交互;api.ts/contracts 同步回放契约\n- 刷新治理 reports 与 GPU 部署校验(check-deployment.mjs)\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-05T20:59:07-07:00"}],"HeadCommit":{"Sha1":"109f2b36f24f3ecc422affedfb31de25af25977c","Message":"Merge origin/main into hljTest\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-06T13:45:25+08:00"},"CompareURL":"luoanwu/song-generation/compare/da3f6895d371408052023bc1698549e1f348f04a...109f2b36f24f3ecc422affedfb31de25af25977c","Len":3}...
|
1785995712
|
Edit
Delete
|
|
23583
|
7
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
|
1786959245
|
Edit
Delete
|
|
23584
|
5
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
|
1786959245
|
Edit
Delete
|
|
23585
|
7
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"549ea3144 {"Commits":[{"Sha1":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-17T17:34:04+08:00"}],"HeadCommit":{"Sha1":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-17T17:34:04+08:00"},"CompareURL":"luoanwu/image-generation/compare/27c04f193a6a4170b1e0f7839a18d0e7e9b529fb...549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Len":1}...
|
1786959245
|
Edit
Delete
|
|
23586
|
5
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"549ea3144 {"Commits":[{"Sha1":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-17T17:34:04+08:00"}],"HeadCommit":{"Sha1":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-17T17:34:04+08:00"},"CompareURL":"luoanwu/image-generation/compare/27c04f193a6a4170b1e0f7839a18d0e7e9b529fb...549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Len":1}...
|
1786959245
|
Edit
Delete
|
|
23991
|
7
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"5fbcad0bc {"Commits":[{"Sha1":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","Message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-18T16:58:46+08:00"},{"Sha1":"eb6483fa7aadc8d2d4e715274c2519f67005e135","Message":"Merge pull request 'feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图' (#3) from feat/llm-shooting-script into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/3\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-18T14:00:06+08:00"},{"Sha1":"b9d34cfb7e777377776325d7b2e73f1a15ff19e8","Message":"feat(script): 分镜可编辑、定格图可微调可回滚\n\nC10 交付后脚本是只读的——LLM 出完就不能改,定格图也只能整张重出。本轮补齐「改」。\n\n分镜编辑\n- 字段编辑 + 增删 + 重排;镜号唯一约束下走两阶段负号位移,1..N 恒连续不撞号\n- 重排要求全量顺序,拒绝增量语义歧义\n- 改角色 appearance 强制退回 DRAFT 并解绑参考图(描述与图不能各说各话);只改 name 不解绑\n- ARCHIVED / ROLES_LOCKED 从装饰性状态变成真实写约束\n\n定格图调整\n- 三模式:FROM_ROLES 从角色重出 / ADJUST 在当前图上按指令迭代微调 / VARIATION 换种子出候选\n- buildStillAdjustInstruction 把「只改这一点、构图与角色都别动」写死进指令\n (迭代微调最常见的失败是模型顺手重画整张)\n- 历史版本表 script_still_versions:每次出图/微调/换版追加一版,可回滚\n\n失效判据(契约单源,双端同源消费)\n- computeShotFingerprint 把所有影响成图的输入拼成规范串——刻意不哈希:\n 碰撞意味着「该失效却没标失效」,那是静默错误;规范串几百字节可肉眼比对\n- isShotStillStale 据此判断;策略是标记失效不自动删图\n (删掉人已满意的图是不可逆破坏,决定权留给人)\n\n三处刻意的「不静默」\n1. ADJUST 无底图 → NO_STILL_TO_ADJUST 明确报错,不悄悄改成整张重出\n2. 回滚连该版本的 fingerprint 一起还原,否则回滚回来的旧图会被误判成新鲜的\n3. 指纹用规范串而非哈希\n\n验收\n- contracts 新增 13 条失效判据单测(61 tests 全绿)\n- 双后端 acceptance 各 21 passed + 1 skipped-live(原 8)\n- pnpm check / check:runtime / check:script 均 exit 0;own-tests floor 14→15\n- 浏览器实测:过期横幅、编辑表单预填真实值、UI 改动落库并发 material.script.shot.updated、\n 新增与上移后镜号仍连续且未撞唯一约束\n\n诚实边界不变:liveLlmAsserted 仍为 false(本机无 DASHSCOPE_API_KEY);\ncheck:inference 仍因权重是 git-lfs 存根而红,与本轮无关。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:52:19-07:00"},{"Sha1":"4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02","Message":"feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图\n\n本仓此前零 LLM 接入(全仓只有 DashScope 的图像调用),「歌词成图」屏是纯前端\n原型(procedural.ts 画色块 + setTimeout 假装推理,不落库不接后端)。本轮把这条\n动线升级为真链路 + 真持久化。\n\n契约单源(packages/contracts/src/script.ts)\n- 角色确认状态机 scriptRoleMachine、脚本状态机 shootingScriptMachine\n- 景别/运镜用枚举而非自由文本:LLM 一旦自由发挥,下游 prompt 与统计就没有稳定口径\n- scriptDraftSchema 是 LLM 输出的唯一判据;prompt 构造器单源,两后端禁止各拼一份\n- evaluateRoleReadiness:本域核心不变量,双后端硬拦截 + 前端同源即时反馈\n- 前端私有的 findBannedHits 上收为 contracts 的 findBannedWords(后端也要逐镜标记,\n 两份并行就是双真源)\n\nLLM 不是权威\n- sidecar /v1/script 只保证「返回长得像脚本的 JSON」,两个后端各自再 parse 一次才落库\n- 模型引用未声明角色键 → 422 SCRIPT_ROLE_KEYS_DANGLING(幻觉护栏)\n- 连续给不出合法 JSON → 502 LLM_OUTPUT_UNPARSEABLE,绝不返回占位脚本\n- parse_json_object 只剥围栏、截首尾花括号,不做字段猜测或补齐\n\n角色必须先确认才允许出定格图\n- 判据 = status CONFIRMED 且有 referenceAssetId(没有参考图就没有一致性锚点)\n- CONFIRMED --reset--\u003e DRAFT 会解除参考图绑定:人确认的是那一张图,不是那个名字\n- 出图时按 roleKeys 顺序喂参考图,与指令里「第 N 张参考图」编号严格对齐\n\n写链纪律与物料链路同构:tenant 全覆盖、updateMany 带状态前置条件(0 行即 409)、\n终态与 outbox 同 tx、能力不可用 → job BLOCKED + 诚实 reason,禁止静默降级。\n品牌准绳只逐镜标记不拒绝整份脚本(脚本属创作内容),硬拦截点在出定格图这个受控出口,\n显式放行需带参数且落审计事件。\n\n顺带修掉三个既有缺陷\n1. 合并遗留:sidecarEdit 用 sidecarGenerateResponseSchema 校验响应(要求 steps/\n loadSeconds),但 run_hosted_edit 两个字段都不返回 —— 托管改字会在客户端边界\n 直接 Zod 抛错(本地路径返回这两个字段,所以一直没暴露)\n2. check-migrations 的列检查只扫 CREATE TABLE,凡 ALTER TABLE ADD COLUMN 追加的\n @map 列一律误报 drift(此前唯一的 ALTER 列 brand_kits.profile 没 @map 才没现形)\n3. ktv-poster-master.png 血统在合并两侧打架,git log --all 证明该文件自初始化提交后\n 从未重新生成,取诚实标注 prototype-demo-master\n\n验收\n- 新增 pnpm check:script → reports/script-acceptance.latest.json(双后端各 8 passed\n + 1 skipped-live);own-tests floor 10→14,棘轮已收紧\n- pnpm check / check:runtime 均 exit 0\n- 浏览器实测:未确认角色 → 按钮 disabled 且提示缺哪个角色;绕过前端直打后端 → 422\n ROLE_NOT_CONFIRMED;跨租户 404;无凭证生成 → UI 显示 503 且不产生占位脚本\n\n诚实边界(已写入 CLAUDE.md)\n- liveLlmAsserted=false:本机无 DASHSCOPE_API_KEY,真调 LLM 的 live 断言被 skip,\n 门禁成立 ≠ LLM 出脚本已验证\n- check:inference 在本机为 failed(动手前即为 failed):本工作副本的模型权重是\n git-lfs 指针存根,非本轮改动导致;基线表该行已从 GREEN 改为 OPEN\n- ui-acceptance 报告早于本屏,未覆盖 script 屏,已标 STALE\n- 新开缺口 G16(LLM 只做结构校验、无事实性校验)、G17(同步 HTTP 挂分钟级推理 /\n render_jobs 索引非 CONCURRENTLY / 本地多图 I2I 未在本机验证)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:04:48-07:00"},{"Sha1":"9af0a397ce69cf03623a495ee3ef49943598f5a4","Message":"Merge origin/main: 双推理路线合流为「本地优先 / 托管兜底」能力路由\n\n远端 PR #1(本地权重真跑,面向 128 GiB 主机)与本地 a3b0b41(托管 DashScope\nQwen-Image 3.0,面向 24 GiB 主机)各自独立实现了改字,在 /v1/edit 与双后端\nrender-pipeline 上正面冲突——同一事实两份运行时口径(违治理原则 1)。\n本次不做二选一,合流为一条按能力路由的通路。\n\ncontracts(路由单源)\n- 新增 RENDER_KIND_FALLBACK_CAPABILITIES + resolveRenderCapabilityKeys():\n 主能力=本地 qwen-image-edit,兜底=托管 qwen-image-3-api,双后端禁止各自\n 展开再拼一遍降级逻辑\n- 修掉三方自动合并留下的语义漂移:RENDER_KIND_CAPABILITIES 曾被并成\n 「改字 kind 只映射托管」,与本地优先矛盾\n- 新增 LOCAL_MODEL_KINDS;MATERIAL_MODEL_ROUTING 改字标签体现双通路\n- 契约测试同步断言新语义(主/兜底/解析顺序/无兜底 kind)\n\nsidecar\n- run_edit 改为路由版:本地可跑优先走本地(不外传底图、不产生云端调用费),\n 本地不可用才降到托管;显式传 modelKey 则锁定该条路径不做隐式回退\n- HEAD 的托管实现降为 run_hosted_edit() 分支,EditRequest / run_edit 各唯一\n- 两条都不可用 → 503 NO_EDIT_BACKEND_AVAILABLE 且同时带上两侧 capability,\n 禁止静默降级\n\n双后端\n- sidecarEdit 的 modelKey 由硬编码 'qwen-image-edit' 改为路由解析结果,\n 否则小内存主机上托管兜底永远走不到\n- BLOCKED reason 逐条列出每个候选能力为何不可用\n- 清理两处悬空的 hostedEdit 引用(声明在冲突块、使用在自动合并区,\n 靠 typecheck 兜住)——该分支只在 procedural 路径可达,直接调 sidecarRender\n\n前端\n- 血统标注按证据判定:ktv-poster-master.png 由初始化提交 fc2ce50 引入且\n 远端从未改动,远端将其标为「Qwen-Image-2512 产物」属误标,保留\n 「原型演示静态素材」口径(P3:不冒充模型产物)\n- constants.ts 模型口径一律从 MATERIAL_MODEL_ROUTING 派生,不留第二真源\n\n验收(诚实记录)\n- pnpm check 全项 exit 0\n- pnpm check:runtime 真实 DB+Redis 通过(迁移 deploy/status + 双后端测试)\n- pnpm check:inference 在本机失败:权重实体已删除、仅剩 git-lfs 指针,\n sidecar-health 阶段诚实报 PaddleOCR 权重不完整。属环境限制非代码缺陷,\n 已记为 G16,未因此放宽任何断言\n\nCLAUDE.md 回灌:C10 闭环记录、G14 合并两侧真实证据、G16 新增\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T21:19:49-07:00"}],"HeadCommit":{"Sha1":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","Message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-18T16:58:46+08:00"},"CompareURL":"luoanwu/image-generation/compare/549ea31448ec1e62e8f10039ed3f8c7d384e07f8...5fbcad0bceea9e81914ae6b7e8bfb05265845598","Len":7}...
|
1787043527
|
Edit
Delete
|
|
23992
|
5
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"5fbcad0bc {"Commits":[{"Sha1":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","Message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-18T16:58:46+08:00"},{"Sha1":"eb6483fa7aadc8d2d4e715274c2519f67005e135","Message":"Merge pull request 'feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图' (#3) from feat/llm-shooting-script into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/3\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-18T14:00:06+08:00"},{"Sha1":"b9d34cfb7e777377776325d7b2e73f1a15ff19e8","Message":"feat(script): 分镜可编辑、定格图可微调可回滚\n\nC10 交付后脚本是只读的——LLM 出完就不能改,定格图也只能整张重出。本轮补齐「改」。\n\n分镜编辑\n- 字段编辑 + 增删 + 重排;镜号唯一约束下走两阶段负号位移,1..N 恒连续不撞号\n- 重排要求全量顺序,拒绝增量语义歧义\n- 改角色 appearance 强制退回 DRAFT 并解绑参考图(描述与图不能各说各话);只改 name 不解绑\n- ARCHIVED / ROLES_LOCKED 从装饰性状态变成真实写约束\n\n定格图调整\n- 三模式:FROM_ROLES 从角色重出 / ADJUST 在当前图上按指令迭代微调 / VARIATION 换种子出候选\n- buildStillAdjustInstruction 把「只改这一点、构图与角色都别动」写死进指令\n (迭代微调最常见的失败是模型顺手重画整张)\n- 历史版本表 script_still_versions:每次出图/微调/换版追加一版,可回滚\n\n失效判据(契约单源,双端同源消费)\n- computeShotFingerprint 把所有影响成图的输入拼成规范串——刻意不哈希:\n 碰撞意味着「该失效却没标失效」,那是静默错误;规范串几百字节可肉眼比对\n- isShotStillStale 据此判断;策略是标记失效不自动删图\n (删掉人已满意的图是不可逆破坏,决定权留给人)\n\n三处刻意的「不静默」\n1. ADJUST 无底图 → NO_STILL_TO_ADJUST 明确报错,不悄悄改成整张重出\n2. 回滚连该版本的 fingerprint 一起还原,否则回滚回来的旧图会被误判成新鲜的\n3. 指纹用规范串而非哈希\n\n验收\n- contracts 新增 13 条失效判据单测(61 tests 全绿)\n- 双后端 acceptance 各 21 passed + 1 skipped-live(原 8)\n- pnpm check / check:runtime / check:script 均 exit 0;own-tests floor 14→15\n- 浏览器实测:过期横幅、编辑表单预填真实值、UI 改动落库并发 material.script.shot.updated、\n 新增与上移后镜号仍连续且未撞唯一约束\n\n诚实边界不变:liveLlmAsserted 仍为 false(本机无 DASHSCOPE_API_KEY);\ncheck:inference 仍因权重是 git-lfs 存根而红,与本轮无关。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:52:19-07:00"},{"Sha1":"4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02","Message":"feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图\n\n本仓此前零 LLM 接入(全仓只有 DashScope 的图像调用),「歌词成图」屏是纯前端\n原型(procedural.ts 画色块 + setTimeout 假装推理,不落库不接后端)。本轮把这条\n动线升级为真链路 + 真持久化。\n\n契约单源(packages/contracts/src/script.ts)\n- 角色确认状态机 scriptRoleMachine、脚本状态机 shootingScriptMachine\n- 景别/运镜用枚举而非自由文本:LLM 一旦自由发挥,下游 prompt 与统计就没有稳定口径\n- scriptDraftSchema 是 LLM 输出的唯一判据;prompt 构造器单源,两后端禁止各拼一份\n- evaluateRoleReadiness:本域核心不变量,双后端硬拦截 + 前端同源即时反馈\n- 前端私有的 findBannedHits 上收为 contracts 的 findBannedWords(后端也要逐镜标记,\n 两份并行就是双真源)\n\nLLM 不是权威\n- sidecar /v1/script 只保证「返回长得像脚本的 JSON」,两个后端各自再 parse 一次才落库\n- 模型引用未声明角色键 → 422 SCRIPT_ROLE_KEYS_DANGLING(幻觉护栏)\n- 连续给不出合法 JSON → 502 LLM_OUTPUT_UNPARSEABLE,绝不返回占位脚本\n- parse_json_object 只剥围栏、截首尾花括号,不做字段猜测或补齐\n\n角色必须先确认才允许出定格图\n- 判据 = status CONFIRMED 且有 referenceAssetId(没有参考图就没有一致性锚点)\n- CONFIRMED --reset--\u003e DRAFT 会解除参考图绑定:人确认的是那一张图,不是那个名字\n- 出图时按 roleKeys 顺序喂参考图,与指令里「第 N 张参考图」编号严格对齐\n\n写链纪律与物料链路同构:tenant 全覆盖、updateMany 带状态前置条件(0 行即 409)、\n终态与 outbox 同 tx、能力不可用 → job BLOCKED + 诚实 reason,禁止静默降级。\n品牌准绳只逐镜标记不拒绝整份脚本(脚本属创作内容),硬拦截点在出定格图这个受控出口,\n显式放行需带参数且落审计事件。\n\n顺带修掉三个既有缺陷\n1. 合并遗留:sidecarEdit 用 sidecarGenerateResponseSchema 校验响应(要求 steps/\n loadSeconds),但 run_hosted_edit 两个字段都不返回 —— 托管改字会在客户端边界\n 直接 Zod 抛错(本地路径返回这两个字段,所以一直没暴露)\n2. check-migrations 的列检查只扫 CREATE TABLE,凡 ALTER TABLE ADD COLUMN 追加的\n @map 列一律误报 drift(此前唯一的 ALTER 列 brand_kits.profile 没 @map 才没现形)\n3. ktv-poster-master.png 血统在合并两侧打架,git log --all 证明该文件自初始化提交后\n 从未重新生成,取诚实标注 prototype-demo-master\n\n验收\n- 新增 pnpm check:script → reports/script-acceptance.latest.json(双后端各 8 passed\n + 1 skipped-live);own-tests floor 10→14,棘轮已收紧\n- pnpm check / check:runtime 均 exit 0\n- 浏览器实测:未确认角色 → 按钮 disabled 且提示缺哪个角色;绕过前端直打后端 → 422\n ROLE_NOT_CONFIRMED;跨租户 404;无凭证生成 → UI 显示 503 且不产生占位脚本\n\n诚实边界(已写入 CLAUDE.md)\n- liveLlmAsserted=false:本机无 DASHSCOPE_API_KEY,真调 LLM 的 live 断言被 skip,\n 门禁成立 ≠ LLM 出脚本已验证\n- check:inference 在本机为 failed(动手前即为 failed):本工作副本的模型权重是\n git-lfs 指针存根,非本轮改动导致;基线表该行已从 GREEN 改为 OPEN\n- ui-acceptance 报告早于本屏,未覆盖 script 屏,已标 STALE\n- 新开缺口 G16(LLM 只做结构校验、无事实性校验)、G17(同步 HTTP 挂分钟级推理 /\n render_jobs 索引非 CONCURRENTLY / 本地多图 I2I 未在本机验证)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:04:48-07:00"},{"Sha1":"9af0a397ce69cf03623a495ee3ef49943598f5a4","Message":"Merge origin/main: 双推理路线合流为「本地优先 / 托管兜底」能力路由\n\n远端 PR #1(本地权重真跑,面向 128 GiB 主机)与本地 a3b0b41(托管 DashScope\nQwen-Image 3.0,面向 24 GiB 主机)各自独立实现了改字,在 /v1/edit 与双后端\nrender-pipeline 上正面冲突——同一事实两份运行时口径(违治理原则 1)。\n本次不做二选一,合流为一条按能力路由的通路。\n\ncontracts(路由单源)\n- 新增 RENDER_KIND_FALLBACK_CAPABILITIES + resolveRenderCapabilityKeys():\n 主能力=本地 qwen-image-edit,兜底=托管 qwen-image-3-api,双后端禁止各自\n 展开再拼一遍降级逻辑\n- 修掉三方自动合并留下的语义漂移:RENDER_KIND_CAPABILITIES 曾被并成\n 「改字 kind 只映射托管」,与本地优先矛盾\n- 新增 LOCAL_MODEL_KINDS;MATERIAL_MODEL_ROUTING 改字标签体现双通路\n- 契约测试同步断言新语义(主/兜底/解析顺序/无兜底 kind)\n\nsidecar\n- run_edit 改为路由版:本地可跑优先走本地(不外传底图、不产生云端调用费),\n 本地不可用才降到托管;显式传 modelKey 则锁定该条路径不做隐式回退\n- HEAD 的托管实现降为 run_hosted_edit() 分支,EditRequest / run_edit 各唯一\n- 两条都不可用 → 503 NO_EDIT_BACKEND_AVAILABLE 且同时带上两侧 capability,\n 禁止静默降级\n\n双后端\n- sidecarEdit 的 modelKey 由硬编码 'qwen-image-edit' 改为路由解析结果,\n 否则小内存主机上托管兜底永远走不到\n- BLOCKED reason 逐条列出每个候选能力为何不可用\n- 清理两处悬空的 hostedEdit 引用(声明在冲突块、使用在自动合并区,\n 靠 typecheck 兜住)——该分支只在 procedural 路径可达,直接调 sidecarRender\n\n前端\n- 血统标注按证据判定:ktv-poster-master.png 由初始化提交 fc2ce50 引入且\n 远端从未改动,远端将其标为「Qwen-Image-2512 产物」属误标,保留\n 「原型演示静态素材」口径(P3:不冒充模型产物)\n- constants.ts 模型口径一律从 MATERIAL_MODEL_ROUTING 派生,不留第二真源\n\n验收(诚实记录)\n- pnpm check 全项 exit 0\n- pnpm check:runtime 真实 DB+Redis 通过(迁移 deploy/status + 双后端测试)\n- pnpm check:inference 在本机失败:权重实体已删除、仅剩 git-lfs 指针,\n sidecar-health 阶段诚实报 PaddleOCR 权重不完整。属环境限制非代码缺陷,\n 已记为 G16,未因此放宽任何断言\n\nCLAUDE.md 回灌:C10 闭环记录、G14 合并两侧真实证据、G16 新增\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T21:19:49-07:00"}],"HeadCommit":{"Sha1":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","Message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-18T16:58:46+08:00"},"CompareURL":"luoanwu/image-generation/compare/549ea31448ec1e62e8f10039ed3f8c7d384e07f8...5fbcad0bceea9e81914ae6b7e8bfb05265845598","Len":7}...
|
1787043527
|
Edit
Delete
|
|
24190
|
7
|
5
|
7
|
72
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"083385f1c {"Commits":[{"Sha1":"083385f1c38217147aacf74d0f2251a65fbce450","Message":"feat(integrations): 接入报价优惠券核销\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-19T13:12:36+08:00"},{"Sha1":"be60de1f7e3c6183500ea7d65fc2bf039a86f1d0","Message":"Merge remote-tracking branch 'origin/main' into hljTest\n\n# Conflicts:\n#\tCLAUDE.md\n#\tapps/api-fastify/prisma/schema.prisma\n#\tapps/api-fastify/src/routes/quotations.ts\n#\tapps/api-nestjs/prisma/schema.prisma\n#\tapps/api-nestjs/src/quotations/quotations.service.ts\n#\tapps/web/src/features/quotations/api/quotations-api.ts\n#\tapps/web/src/features/quotations/components/PublicQuotationView.tsx\n#\tapps/web/src/hooks/useRealtime.ts\n#\tdeploy/vm/Dockerfile\n#\tdeploy/vm/compose.yaml\n#\tdocs/governance-experience.md\n#\tpackages/contracts/src/index.ts\n#\tpackages/contracts/src/quotation.ts\n#\tpackages/contracts/src/realtime.ts\n#\tscripts/vm-deploy.sh\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-19T09:54:43+08:00"},{"Sha1":"125c54d328d3da221b5d91c0a2dd0475712c6e96","Message":"Merge pull request #12 from laoluojuhai/fix/vm-dockerfile-build-path\n\nfix(vm): 打通容器构建路径——保住 slim 运行镜像,不靠放宽红线换构建成功","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T07:09:44-07:00"},{"Sha1":"6f13a78de9c02ae6a36fcebfb4bde63fbd092158","Message":"fix(vm): 打通容器构建路径——保住 slim 运行镜像,不靠放宽红线换构建成功\n\n`deploy/vm/Dockerfile` 的构建路径从未真正跑通过(并发治理会话只用 pnpm/turbo 跑门禁,\n从不 docker build)。而 check:vm-deploy 一直是绿的——它查 Dockerfile 的**结构**\n(每个 stage 用哪个 FROM、有没有 fat runtime),不查它**能不能构建出来**。\n于是棘轮报告写着「镜像瘦身非 root、可回滚、备份可恢复」✅,而那个镜像根本产不出来。\n\n5 处构建 bug:\n1. contracts 的 `prepare`(tsc) 在只有 manifest 的依赖层里跑,找不到 tsconfig/src → TS5058。\n 先 COPY contracts 的 tsconfig + src 给它当输入。\n2. 新 workspace 包 @repo/password-auth(两后端 runtime 依赖)未进 manifest COPY、\n 也没被显式 build。\n3. `pnpm deploy --prod --legacy`:pnpm 9.15.9 不认 `--legacy`(Unknown option)。\n 旧注释称「未开启 inject-workspace-packages 时需要 --legacy」——实测在本仓版本上\n 不成立,去掉即可正常打平 workspace 包(sharp 这类 lockfile 原生依赖也照常带出)。\n4. `pnpm deploy` 只按 lockfile 物化依赖,而 .prisma/client(含平台相关 query engine)\n 是 `prisma generate` **生成**的、不在任何 lockfile 里,永远不会被带出去 →\n 新增一步从 build 树复制。路径由 @prisma/client 的解析结果反推,不硬编码 pnpm store\n 的哈希目录名;且必须从 app 目录解析(workspace 根 node_modules 里没有它)。\n5. web stage `COPY apps/web/public` 失败——git 未跟踪任何 public 资产。\n ⚠️ 本机可能有个空的 public/(git 不跟踪空目录),docker build 读本地上下文因而能过,\n CI 与全新 clone 上必挂,注释已写明这个陷阱。\n\n**刻意不采用**此前 `dockerfile-vm-deploy-fixes-ec411c0.patch` 的策略(放弃 slim、\n运行镜像改 FROM build):那会撞 4 条门禁红线(runtime-from-base-* / no-fat-runtime-*),\n而实测 slim 路径的两个阻塞点(3、4)都可解,「镜像瘦身作为后续项不阻塞」的前提不成立。\n体积实测:api-nestjs 741MB / api-fastify 695MB / web 546MB,\n对照 fat 方案 8.46GB、2026-08-06 实际部署的 2.69GB。非 root 由镜像层 USER node 保证,\n而非仅靠 compose 的 user: 覆盖。\n\n顺带两处断链(均为 MinIO 进 compose 后没人跟上):\n- .env.example 与 vm:init 都不认识 S3_*,而它们是 compose 的必填变量 → 新机器\n `vm:init` 后 `vm:up` 必然卡在变量插值。已补占位符 + 随机生成 + 存量 .env 自愈。\n- .dockerignore 只写 `**/.next`,匹配不到本仓工具链自建的 distDir\n (.next-ui-* / .next-dev-* / .next-manual-*),也没排除 sites/(G26 那套独立\n Cloudflare 系统,其 .sites-runtime 本机 1.0GB)→ COPY . . 层 3.79GB → 270MB。\n\n证据(作用域=本地工作区):\n- docker build 四个 target 全部 EXIT=0(api-nestjs / api-fastify / web / migrate)\n- 镜像内实测 @prisma/client 与原生模块 sharp 均可加载、dist 入口就位、uid=1000 非 root\n- Dockerfile 里那条「Prisma Client 缺失即构建失败」的断言**首次真正执行并通过**\n- pnpm vm:config EXIT=0(7 个服务解析通过)\n- pnpm check 22 项全绿 exit=0\n\n未验证:未跑 vm:up / vm:smoke(整栈起停与真实写链冒烟),故不得宣称「可部署」。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T06:57:55-07:00"},{"Sha1":"8ae98649e077fa188f8e9c1b0a11b78a2377c836","Message":"Merge pull request #11 from laoluojuhai/feat/product-catalog-search-and-image-upload\n\nfeat(products): 商品库服务端搜索筛选 + 图片上传至对象存储","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T04:16:44-07:00"}],"HeadCommit":{"Sha1":"083385f1c38217147aacf74d0f2251a65fbce450","Message":"feat(integrations): 接入报价优惠券核销\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-19T13:12:36+08:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/d2c99c9fc71e8a1c48d1aa3684c30ead3eb110c0...083385f1c38217147aacf74d0f2251a65fbce450","Len":51}...
|
1787116369
|
Edit
Delete
|
|
24191
|
5
|
5
|
7
|
72
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"083385f1c {"Commits":[{"Sha1":"083385f1c38217147aacf74d0f2251a65fbce450","Message":"feat(integrations): 接入报价优惠券核销\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-19T13:12:36+08:00"},{"Sha1":"be60de1f7e3c6183500ea7d65fc2bf039a86f1d0","Message":"Merge remote-tracking branch 'origin/main' into hljTest\n\n# Conflicts:\n#\tCLAUDE.md\n#\tapps/api-fastify/prisma/schema.prisma\n#\tapps/api-fastify/src/routes/quotations.ts\n#\tapps/api-nestjs/prisma/schema.prisma\n#\tapps/api-nestjs/src/quotations/quotations.service.ts\n#\tapps/web/src/features/quotations/api/quotations-api.ts\n#\tapps/web/src/features/quotations/components/PublicQuotationView.tsx\n#\tapps/web/src/hooks/useRealtime.ts\n#\tdeploy/vm/Dockerfile\n#\tdeploy/vm/compose.yaml\n#\tdocs/governance-experience.md\n#\tpackages/contracts/src/index.ts\n#\tpackages/contracts/src/quotation.ts\n#\tpackages/contracts/src/realtime.ts\n#\tscripts/vm-deploy.sh\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-19T09:54:43+08:00"},{"Sha1":"125c54d328d3da221b5d91c0a2dd0475712c6e96","Message":"Merge pull request #12 from laoluojuhai/fix/vm-dockerfile-build-path\n\nfix(vm): 打通容器构建路径——保住 slim 运行镜像,不靠放宽红线换构建成功","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T07:09:44-07:00"},{"Sha1":"6f13a78de9c02ae6a36fcebfb4bde63fbd092158","Message":"fix(vm): 打通容器构建路径——保住 slim 运行镜像,不靠放宽红线换构建成功\n\n`deploy/vm/Dockerfile` 的构建路径从未真正跑通过(并发治理会话只用 pnpm/turbo 跑门禁,\n从不 docker build)。而 check:vm-deploy 一直是绿的——它查 Dockerfile 的**结构**\n(每个 stage 用哪个 FROM、有没有 fat runtime),不查它**能不能构建出来**。\n于是棘轮报告写着「镜像瘦身非 root、可回滚、备份可恢复」✅,而那个镜像根本产不出来。\n\n5 处构建 bug:\n1. contracts 的 `prepare`(tsc) 在只有 manifest 的依赖层里跑,找不到 tsconfig/src → TS5058。\n 先 COPY contracts 的 tsconfig + src 给它当输入。\n2. 新 workspace 包 @repo/password-auth(两后端 runtime 依赖)未进 manifest COPY、\n 也没被显式 build。\n3. `pnpm deploy --prod --legacy`:pnpm 9.15.9 不认 `--legacy`(Unknown option)。\n 旧注释称「未开启 inject-workspace-packages 时需要 --legacy」——实测在本仓版本上\n 不成立,去掉即可正常打平 workspace 包(sharp 这类 lockfile 原生依赖也照常带出)。\n4. `pnpm deploy` 只按 lockfile 物化依赖,而 .prisma/client(含平台相关 query engine)\n 是 `prisma generate` **生成**的、不在任何 lockfile 里,永远不会被带出去 →\n 新增一步从 build 树复制。路径由 @prisma/client 的解析结果反推,不硬编码 pnpm store\n 的哈希目录名;且必须从 app 目录解析(workspace 根 node_modules 里没有它)。\n5. web stage `COPY apps/web/public` 失败——git 未跟踪任何 public 资产。\n ⚠️ 本机可能有个空的 public/(git 不跟踪空目录),docker build 读本地上下文因而能过,\n CI 与全新 clone 上必挂,注释已写明这个陷阱。\n\n**刻意不采用**此前 `dockerfile-vm-deploy-fixes-ec411c0.patch` 的策略(放弃 slim、\n运行镜像改 FROM build):那会撞 4 条门禁红线(runtime-from-base-* / no-fat-runtime-*),\n而实测 slim 路径的两个阻塞点(3、4)都可解,「镜像瘦身作为后续项不阻塞」的前提不成立。\n体积实测:api-nestjs 741MB / api-fastify 695MB / web 546MB,\n对照 fat 方案 8.46GB、2026-08-06 实际部署的 2.69GB。非 root 由镜像层 USER node 保证,\n而非仅靠 compose 的 user: 覆盖。\n\n顺带两处断链(均为 MinIO 进 compose 后没人跟上):\n- .env.example 与 vm:init 都不认识 S3_*,而它们是 compose 的必填变量 → 新机器\n `vm:init` 后 `vm:up` 必然卡在变量插值。已补占位符 + 随机生成 + 存量 .env 自愈。\n- .dockerignore 只写 `**/.next`,匹配不到本仓工具链自建的 distDir\n (.next-ui-* / .next-dev-* / .next-manual-*),也没排除 sites/(G26 那套独立\n Cloudflare 系统,其 .sites-runtime 本机 1.0GB)→ COPY . . 层 3.79GB → 270MB。\n\n证据(作用域=本地工作区):\n- docker build 四个 target 全部 EXIT=0(api-nestjs / api-fastify / web / migrate)\n- 镜像内实测 @prisma/client 与原生模块 sharp 均可加载、dist 入口就位、uid=1000 非 root\n- Dockerfile 里那条「Prisma Client 缺失即构建失败」的断言**首次真正执行并通过**\n- pnpm vm:config EXIT=0(7 个服务解析通过)\n- pnpm check 22 项全绿 exit=0\n\n未验证:未跑 vm:up / vm:smoke(整栈起停与真实写链冒烟),故不得宣称「可部署」。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T06:57:55-07:00"},{"Sha1":"8ae98649e077fa188f8e9c1b0a11b78a2377c836","Message":"Merge pull request #11 from laoluojuhai/feat/product-catalog-search-and-image-upload\n\nfeat(products): 商品库服务端搜索筛选 + 图片上传至对象存储","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T04:16:44-07:00"}],"HeadCommit":{"Sha1":"083385f1c38217147aacf74d0f2251a65fbce450","Message":"feat(integrations): 接入报价优惠券核销\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-19T13:12:36+08:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/d2c99c9fc71e8a1c48d1aa3684c30ead3eb110c0...083385f1c38217147aacf74d0f2251a65fbce450","Len":51}...
|
1787116369
|
Edit
Delete
|
|
24580
|
7
|
5
|
7
|
72
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"04432cff2 {"Commits":[{"Sha1":"04432cff2b306ecd33ca2bea6e2e256814f978f0","Message":"fix(web): preserve /jh authentication and realtime paths\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-20T16:25:36+08:00"}],"HeadCommit":{"Sha1":"04432cff2b306ecd33ca2bea6e2e256814f978f0","Message":"fix(web): preserve /jh authentication and realtime paths\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-20T16:25:36+08:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/083385f1c38217147aacf74d0f2251a65fbce450...04432cff2b306ecd33ca2bea6e2e256814f978f0","Len":1}...
|
1787214380
|
Edit
Delete
|
|
24581
|
5
|
5
|
7
|
72
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"04432cff2 {"Commits":[{"Sha1":"04432cff2b306ecd33ca2bea6e2e256814f978f0","Message":"fix(web): preserve /jh authentication and realtime paths\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-20T16:25:36+08:00"}],"HeadCommit":{"Sha1":"04432cff2b306ecd33ca2bea6e2e256814f978f0","Message":"fix(web): preserve /jh authentication and realtime paths\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-20T16:25:36+08:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/083385f1c38217147aacf74d0f2251a65fbce450...04432cff2b306ecd33ca2bea6e2e256814f978f0","Len":1}...
|
1787214380
|
Edit
Delete
|
|
15364
|
1
|
5
|
1
|
23
|
0
|
0
|
refs/heads/heads/admin
|
0
|
|
1782975789
|
Edit
Delete
|