|
40743
|
19
|
5
|
19
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"72b097218 {"Commits":[{"Sha1":"72b0972182aecc66a118ba1ccebea88110523de9","Message":"更新导航页面资源版本\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:20+08:00"},{"Sha1":"d1a99c9fd01973aaf49f4cc9579ffd89ef1be384","Message":"修复数据读取阻塞导致原型页面空白\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:06+08:00"}],"HeadCommit":{"Sha1":"72b0972182aecc66a118ba1ccebea88110523de9","Message":"更新导航页面资源版本\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:20+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/a3aca60874a0e165a17532c47bcebc3eb2a3b24f...72b0972182aecc66a118ba1ccebea88110523de9","Len":2}...
|
1792746683
|
Edit
Delete
|
|
40744
|
17
|
5
|
19
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"72b097218 {"Commits":[{"Sha1":"72b0972182aecc66a118ba1ccebea88110523de9","Message":"更新导航页面资源版本\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:20+08:00"},{"Sha1":"d1a99c9fd01973aaf49f4cc9579ffd89ef1be384","Message":"修复数据读取阻塞导致原型页面空白\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:06+08:00"}],"HeadCommit":{"Sha1":"72b0972182aecc66a118ba1ccebea88110523de9","Message":"更新导航页面资源版本\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:20+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/a3aca60874a0e165a17532c47bcebc3eb2a3b24f...72b0972182aecc66a118ba1ccebea88110523de9","Len":2}...
|
1792746683
|
Edit
Delete
|
|
40745
|
18
|
5
|
19
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"72b097218 {"Commits":[{"Sha1":"72b0972182aecc66a118ba1ccebea88110523de9","Message":"更新导航页面资源版本\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:20+08:00"},{"Sha1":"d1a99c9fd01973aaf49f4cc9579ffd89ef1be384","Message":"修复数据读取阻塞导致原型页面空白\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:06+08:00"}],"HeadCommit":{"Sha1":"72b0972182aecc66a118ba1ccebea88110523de9","Message":"更新导航页面资源版本\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:11:20+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/a3aca60874a0e165a17532c47bcebc3eb2a3b24f...72b0972182aecc66a118ba1ccebea88110523de9","Len":2}...
|
1792746683
|
Edit
Delete
|
|
40754
|
19
|
5
|
19
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"1f218c706 {"Commits":[{"Sha1":"1f218c706f64273742935f26f09778d9d45d941a","Message":"独立原型按页加载内容、图片懒加载及铭牌物料延迟加载\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:23:59+08:00"}],"HeadCommit":{"Sha1":"1f218c706f64273742935f26f09778d9d45d941a","Message":"独立原型按页加载内容、图片懒加载及铭牌物料延迟加载\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:23:59+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/72b0972182aecc66a118ba1ccebea88110523de9...1f218c706f64273742935f26f09778d9d45d941a","Len":1}...
|
1792747444
|
Edit
Delete
|
|
40755
|
17
|
5
|
19
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"1f218c706 {"Commits":[{"Sha1":"1f218c706f64273742935f26f09778d9d45d941a","Message":"独立原型按页加载内容、图片懒加载及铭牌物料延迟加载\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:23:59+08:00"}],"HeadCommit":{"Sha1":"1f218c706f64273742935f26f09778d9d45d941a","Message":"独立原型按页加载内容、图片懒加载及铭牌物料延迟加载\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:23:59+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/72b0972182aecc66a118ba1ccebea88110523de9...1f218c706f64273742935f26f09778d9d45d941a","Len":1}...
|
1792747444
|
Edit
Delete
|
|
40756
|
18
|
5
|
19
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"1f218c706 {"Commits":[{"Sha1":"1f218c706f64273742935f26f09778d9d45d941a","Message":"独立原型按页加载内容、图片懒加载及铭牌物料延迟加载\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:23:59+08:00"}],"HeadCommit":{"Sha1":"1f218c706f64273742935f26f09778d9d45d941a","Message":"独立原型按页加载内容、图片懒加载及铭牌物料延迟加载\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-10-23T17:23:59+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/72b0972182aecc66a118ba1ccebea88110523de9...1f218c706f64273742935f26f09778d9d45d941a","Len":1}...
|
1792747444
|
Edit
Delete
|
|
40757
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"8df9b0c98 {"Commits":[{"Sha1":"8df9b0c98561663595bb6c819905d2ca16bd2096","Message":"Move daily weather into chain store cards\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:26:37+08:00"}],"HeadCommit":{"Sha1":"8df9b0c98561663595bb6c819905d2ca16bd2096","Message":"Move daily weather into chain store cards\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:26:37+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/1f218c706f64273742935f26f09778d9d45d941a...8df9b0c98561663595bb6c819905d2ca16bd2096","Len":1}...
|
1792747653
|
Edit
Delete
|
|
40758
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"8df9b0c98 {"Commits":[{"Sha1":"8df9b0c98561663595bb6c819905d2ca16bd2096","Message":"Move daily weather into chain store cards\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:26:37+08:00"}],"HeadCommit":{"Sha1":"8df9b0c98561663595bb6c819905d2ca16bd2096","Message":"Move daily weather into chain store cards\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:26:37+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/1f218c706f64273742935f26f09778d9d45d941a...8df9b0c98561663595bb6c819905d2ca16bd2096","Len":1}...
|
1792747653
|
Edit
Delete
|
|
40759
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"19ba06d56 {"Commits":[{"Sha1":"19ba06d566f4dfa70447b4f238b040ae3fbb352b","Message":"Default chain daily comparison to prior week same business day\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:39:51+08:00"}],"HeadCommit":{"Sha1":"19ba06d566f4dfa70447b4f238b040ae3fbb352b","Message":"Default chain daily comparison to prior week same business day\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:39:51+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/8df9b0c98561663595bb6c819905d2ca16bd2096...19ba06d566f4dfa70447b4f238b040ae3fbb352b","Len":1}...
|
1792748398
|
Edit
Delete
|
|
40760
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"19ba06d56 {"Commits":[{"Sha1":"19ba06d566f4dfa70447b4f238b040ae3fbb352b","Message":"Default chain daily comparison to prior week same business day\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:39:51+08:00"}],"HeadCommit":{"Sha1":"19ba06d566f4dfa70447b4f238b040ae3fbb352b","Message":"Default chain daily comparison to prior week same business day\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:39:51+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/8df9b0c98561663595bb6c819905d2ca16bd2096...19ba06d566f4dfa70447b4f238b040ae3fbb352b","Len":1}...
|
1792748398
|
Edit
Delete
|
|
40761
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"1ed6f6932 {"Commits":[{"Sha1":"1ed6f69321edfce5236c29b345d78d72aee3abbc","Message":"Refine chain daily report comparison display\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:49:42+08:00"}],"HeadCommit":{"Sha1":"1ed6f69321edfce5236c29b345d78d72aee3abbc","Message":"Refine chain daily report comparison display\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:49:42+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/19ba06d566f4dfa70447b4f238b040ae3fbb352b...1ed6f69321edfce5236c29b345d78d72aee3abbc","Len":1}...
|
1792748994
|
Edit
Delete
|
|
40762
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"1ed6f6932 {"Commits":[{"Sha1":"1ed6f69321edfce5236c29b345d78d72aee3abbc","Message":"Refine chain daily report comparison display\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:49:42+08:00"}],"HeadCommit":{"Sha1":"1ed6f69321edfce5236c29b345d78d72aee3abbc","Message":"Refine chain daily report comparison display\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-23T17:49:42+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/19ba06d566f4dfa70447b4f238b040ae3fbb352b...1ed6f69321edfce5236c29b345d78d72aee3abbc","Len":1}...
|
1792748994
|
Edit
Delete
|
|
41371
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"db0770b03 {"Commits":[{"Sha1":"db0770b039a6f30dffe714b1be9a283016c29e75","Message":"Align room usage prototype with existing report\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T11:17:11+08:00"}],"HeadCommit":{"Sha1":"db0770b039a6f30dffe714b1be9a283016c29e75","Message":"Align room usage prototype with existing report\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T11:17:11+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/1ed6f69321edfce5236c29b345d78d72aee3abbc...db0770b039a6f30dffe714b1be9a283016c29e75","Len":1}...
|
1792984665
|
Edit
Delete
|
|
41372
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"db0770b03 {"Commits":[{"Sha1":"db0770b039a6f30dffe714b1be9a283016c29e75","Message":"Align room usage prototype with existing report\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T11:17:11+08:00"}],"HeadCommit":{"Sha1":"db0770b039a6f30dffe714b1be9a283016c29e75","Message":"Align room usage prototype with existing report\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T11:17:11+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/1ed6f69321edfce5236c29b345d78d72aee3abbc...db0770b039a6f30dffe714b1be9a283016c29e75","Len":1}...
|
1792984665
|
Edit
Delete
|
|
41405
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"f03f37954 {"Commits":[{"Sha1":"f03f379542331daeeb7e72b601f9849f8f14d1d1","Message":"Show room opening counts per room and in total\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T11:36:31+08:00"}],"HeadCommit":{"Sha1":"f03f379542331daeeb7e72b601f9849f8f14d1d1","Message":"Show room opening counts per room and in total\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T11:36:31+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/db0770b039a6f30dffe714b1be9a283016c29e75...f03f379542331daeeb7e72b601f9849f8f14d1d1","Len":1}...
|
1792985823
|
Edit
Delete
|
|
41406
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"f03f37954 {"Commits":[{"Sha1":"f03f379542331daeeb7e72b601f9849f8f14d1d1","Message":"Show room opening counts per room and in total\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T11:36:31+08:00"}],"HeadCommit":{"Sha1":"f03f379542331daeeb7e72b601f9849f8f14d1d1","Message":"Show room opening counts per room and in total\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T11:36:31+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/db0770b039a6f30dffe714b1be9a283016c29e75...f03f379542331daeeb7e72b601f9849f8f14d1d1","Len":1}...
|
1792985823
|
Edit
Delete
|
|
41407
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"8dd58a39a {"Commits":[{"Sha1":"8dd58a39abdd8ae5930a386034eba7963d412a9f","Message":"Align Smart Merchant SVIP entry screens with real app menus\n","AuthorEmail":"codex@openai.com","AuthorName":"Codex","CommitterEmail":"codex@openai.com","CommitterName":"Codex","Timestamp":"2026-10-26T11:47:34+08:00"}],"HeadCommit":{"Sha1":"8dd58a39abdd8ae5930a386034eba7963d412a9f","Message":"Align Smart Merchant SVIP entry screens with real app menus\n","AuthorEmail":"codex@openai.com","AuthorName":"Codex","CommitterEmail":"codex@openai.com","CommitterName":"Codex","Timestamp":"2026-10-26T11:47:34+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/f03f379542331daeeb7e72b601f9849f8f14d1d1...8dd58a39abdd8ae5930a386034eba7963d412a9f","Len":1}...
|
1792986732
|
Edit
Delete
|
|
41408
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"8dd58a39a {"Commits":[{"Sha1":"8dd58a39abdd8ae5930a386034eba7963d412a9f","Message":"Align Smart Merchant SVIP entry screens with real app menus\n","AuthorEmail":"codex@openai.com","AuthorName":"Codex","CommitterEmail":"codex@openai.com","CommitterName":"Codex","Timestamp":"2026-10-26T11:47:34+08:00"}],"HeadCommit":{"Sha1":"8dd58a39abdd8ae5930a386034eba7963d412a9f","Message":"Align Smart Merchant SVIP entry screens with real app menus\n","AuthorEmail":"codex@openai.com","AuthorName":"Codex","CommitterEmail":"codex@openai.com","CommitterName":"Codex","Timestamp":"2026-10-26T11:47:34+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/f03f379542331daeeb7e72b601f9849f8f14d1d1...8dd58a39abdd8ae5930a386034eba7963d412a9f","Len":1}...
|
1792986732
|
Edit
Delete
|
|
41521
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"76021856f {"Commits":[{"Sha1":"76021856f767fc8f8bb3f78b9b1b2ff3fa6d143b","Message":"Fix chain report comparison to prior week\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T13:34:42+08:00"}],"HeadCommit":{"Sha1":"76021856f767fc8f8bb3f78b9b1b2ff3fa6d143b","Message":"Fix chain report comparison to prior week\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T13:34:42+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/8dd58a39abdd8ae5930a386034eba7963d412a9f...76021856f767fc8f8bb3f78b9b1b2ff3fa6d143b","Len":1}...
|
1792992922
|
Edit
Delete
|
|
41522
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"76021856f {"Commits":[{"Sha1":"76021856f767fc8f8bb3f78b9b1b2ff3fa6d143b","Message":"Fix chain report comparison to prior week\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T13:34:42+08:00"}],"HeadCommit":{"Sha1":"76021856f767fc8f8bb3f78b9b1b2ff3fa6d143b","Message":"Fix chain report comparison to prior week\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T13:34:42+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/8dd58a39abdd8ae5930a386034eba7963d412a9f...76021856f767fc8f8bb3f78b9b1b2ff3fa6d143b","Len":1}...
|
1792992922
|
Edit
Delete
|
|
41611
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"0c8d06cd5 {"Commits":[{"Sha1":"0c8d06cd5781b402f473097cbd41005b4eefddd3","Message":"Document daily report metric sources and definitions\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T13:58:24+08:00"}],"HeadCommit":{"Sha1":"0c8d06cd5781b402f473097cbd41005b4eefddd3","Message":"Document daily report metric sources and definitions\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T13:58:24+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/76021856f767fc8f8bb3f78b9b1b2ff3fa6d143b...0c8d06cd5781b402f473097cbd41005b4eefddd3","Len":1}...
|
1792994354
|
Edit
Delete
|
|
41612
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"0c8d06cd5 {"Commits":[{"Sha1":"0c8d06cd5781b402f473097cbd41005b4eefddd3","Message":"Document daily report metric sources and definitions\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T13:58:24+08:00"}],"HeadCommit":{"Sha1":"0c8d06cd5781b402f473097cbd41005b4eefddd3","Message":"Document daily report metric sources and definitions\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T13:58:24+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/76021856f767fc8f8bb3f78b9b1b2ff3fa6d143b...0c8d06cd5781b402f473097cbd41005b4eefddd3","Len":1}...
|
1792994354
|
Edit
Delete
|
|
41829
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"2aa172317 {"Commits":[{"Sha1":"2aa1723178284da025c408e2a0deeb15493e617b","Message":"Refine chain daily report layout and warm palette\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T15:44:42+08:00"}],"HeadCommit":{"Sha1":"2aa1723178284da025c408e2a0deeb15493e617b","Message":"Refine chain daily report layout and warm palette\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T15:44:42+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/0c8d06cd5781b402f473097cbd41005b4eefddd3...2aa1723178284da025c408e2a0deeb15493e617b","Len":1}...
|
1793000735
|
Edit
Delete
|
|
41830
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"2aa172317 {"Commits":[{"Sha1":"2aa1723178284da025c408e2a0deeb15493e617b","Message":"Refine chain daily report layout and warm palette\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T15:44:42+08:00"}],"HeadCommit":{"Sha1":"2aa1723178284da025c408e2a0deeb15493e617b","Message":"Refine chain daily report layout and warm palette\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T15:44:42+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/0c8d06cd5781b402f473097cbd41005b4eefddd3...2aa1723178284da025c408e2a0deeb15493e617b","Len":1}...
|
1793000735
|
Edit
Delete
|
|
41999
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"24cc5bc9e {"Commits":[{"Sha1":"24cc5bc9efa4564a9607aa5494abce35d512c164","Message":"Restyle chain report and simplify requirement annotations\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T19:51:37+08:00"}],"HeadCommit":{"Sha1":"24cc5bc9efa4564a9607aa5494abce35d512c164","Message":"Restyle chain report and simplify requirement annotations\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T19:51:37+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/2aa1723178284da025c408e2a0deeb15493e617b...24cc5bc9efa4564a9607aa5494abce35d512c164","Len":1}...
|
1793015525
|
Edit
Delete
|
|
42000
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/chanpin-20261124
|
0
|
{"Commits":[{"Sha1":"24cc5bc9e {"Commits":[{"Sha1":"24cc5bc9efa4564a9607aa5494abce35d512c164","Message":"Restyle chain report and simplify requirement annotations\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T19:51:37+08:00"}],"HeadCommit":{"Sha1":"24cc5bc9efa4564a9607aa5494abce35d512c164","Message":"Restyle chain report and simplify requirement annotations\n","AuthorEmail":"linmingzhang@g-hi.com","AuthorName":"linmingzhang","CommitterEmail":"linmingzhang@g-hi.com","CommitterName":"linmingzhang","Timestamp":"2026-10-26T19:51:37+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/2aa1723178284da025c408e2a0deeb15493e617b...24cc5bc9efa4564a9607aa5494abce35d512c164","Len":1}...
|
1793015525
|
Edit
Delete
|
|
22087
|
18
|
5
|
18
|
69
|
0
|
0
|
refs/heads/chanpin-dianbo-20260915
|
0
|
|
1786518055
|
Edit
Delete
|
|
22088
|
17
|
5
|
18
|
69
|
0
|
0
|
refs/heads/chanpin-dianbo-20260915
|
0
|
|
1786518055
|
Edit
Delete
|
|
22089
|
18
|
17
|
18
|
69
|
0
|
0
|
refs/heads/chanpin-dianbo-20260915
|
0
|
|
1786518112
|
Edit
Delete
|
|
22090
|
17
|
17
|
18
|
69
|
0
|
0
|
refs/heads/chanpin-dianbo-20260915
|
0
|
|
1786518112
|
Edit
Delete
|
|
22091
|
18
|
5
|
18
|
69
|
0
|
0
|
refs/heads/chanpin-dianbo20260915
|
0
|
|
1786518112
|
Edit
Delete
|
|
22092
|
17
|
5
|
18
|
69
|
0
|
0
|
refs/heads/chanpin-dianbo20260915
|
0
|
|
1786518112
|
Edit
Delete
|
|
22095
|
18
|
17
|
18
|
69
|
0
|
0
|
refs/heads/chanpin-dianbo20260915
|
0
|
|
1786518383
|
Edit
Delete
|
|
22096
|
17
|
17
|
18
|
69
|
0
|
0
|
refs/heads/chanpin-dianbo20260915
|
0
|
|
1786518383
|
Edit
Delete
|
|
29908
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/chore/appearance-edit-queue-audit-20260 refs/heads/chore/appearance-edit-queue-audit-20260913...
|
0
|
|
1789445220
|
Edit
Delete
|
|
29909
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/chore/appearance-edit-queue-audit-20260 refs/heads/chore/appearance-edit-queue-audit-20260913...
|
0
|
{"Commits":[],"HeadCommit":{"S {"Commits":[],"HeadCommit":{"Sha1":"68192ddd237389ed9c7bca797b2ff8a31e77b5f0","Message":"docs(governance): record the verified ui-acceptance purge\n\nThe purge ran on the host while the heavy gates were executing. Verified\nafter the fact: ui-acceptance rows 3258 -\u003e 0, QUEUED RenderJob 39 -\u003e 0,\ndemo-tenant RenderJob unchanged at 387, total RenderJob 471 -\u003e 387 (exactly\nthe 84 rows those tenants held). \"Zero QUEUED RenderJob across the database\"\nis a meaningful invariant again.\n\nOnly the deploy remains; release.sh is blocked by the auto-mode classifier.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-13T21:42:38-07:00"},"CompareURL":"luoanwu/image-generation/compare/main...68192ddd237389ed9c7bca797b2ff8a31e77b5f0","Len":0}...
|
1789445220
|
Edit
Delete
|
|
20273
|
5
|
5
|
5
|
72
|
0
|
0
|
refs/heads/chore/gate-negative-proof
|
0
|
|
1785507322
|
Edit
Delete
|
|
20274
|
5
|
5
|
5
|
72
|
0
|
0
|
refs/heads/chore/gate-negative-proof
|
0
|
{"Commits":[{"Sha1":"ec4bf7fde {"Commits":[{"Sha1":"ec4bf7fdec43629ca034c3b16fa6fd8b3b456286","Message":"test(negative): 受控失败——删除一个测试文件以验证远端门禁真会阻断\n\nG14 关闭条件的最后一项:证明违规确实被 CI + 分支保护阻断,而不是\n「门禁存在但从没拦住过任何东西」(假绿五形态第 5 形态:假生效门禁)。\n\n刻意注入的违规:删除 apps/api-fastify/test/outbox.deadletter.test.ts。\n预期 ownTests 从 11 掉到 10,低于 reports/baseline.json 的地板 11,\nstatic job 的 check:governance 棘轮应判红;runtime job 因 needs 依赖不会启动。\n\n预期结果:PR 无法合并(required checks: Static governance +\nRuntime and UI acceptance,enforce_admins=true)。\n验证完毕后本 PR 直接关闭,绝不合并。\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-07-31T06:49:50-07:00"}],"HeadCommit":{"Sha1":"ec4bf7fdec43629ca034c3b16fa6fd8b3b456286","Message":"test(negative): 受控失败——删除一个测试文件以验证远端门禁真会阻断\n\nG14 关闭条件的最后一项:证明违规确实被 CI + 分支保护阻断,而不是\n「门禁存在但从没拦住过任何东西」(假绿五形态第 5 形态:假生效门禁)。\n\n刻意注入的违规:删除 apps/api-fastify/test/outbox.deadletter.test.ts。\n预期 ownTests 从 11 掉到 10,低于 reports/baseline.json 的地板 11,\nstatic job 的 check:governance 棘轮应判红;runtime job 因 needs 依赖不会启动。\n\n预期结果:PR 无法合并(required checks: Static governance +\nRuntime and UI acceptance,enforce_admins=true)。\n验证完毕后本 PR 直接关闭,绝不合并。\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-07-31T06:49:50-07:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/9618d78da3e668f14e3c1611d7090f45eef0c085...ec4bf7fdec43629ca034c3b16fa6fd8b3b456286","Len":1}...
|
1785507322
|
Edit
Delete
|
|
20277
|
5
|
17
|
5
|
72
|
0
|
0
|
refs/heads/chore/gate-negative-proof
|
0
|
|
1785507542
|
Edit
Delete
|
|
29175
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/chore/governance-blindspots-20260912
|
0
|
|
1789193676
|
Edit
Delete
|
|
29176
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/chore/governance-blindspots-20260912
|
0
|
{"Commits":[{"Sha1":"09dfe49c0 {"Commits":[{"Sha1":"09dfe49c0bbf03ca2a5eadf482ec9a2a1de5ab34","Message":"Merge branch 'main' into chore/governance-blindspots-20260912\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:04:40-07:00"},{"Sha1":"70d34639a4b4098bb58c392b2d842d1a87a177fe","Message":"fix(deploy): mount host model weights and prove OCR readiness at release\n\nFixed-source releases start from LFS-skipped worktrees, so the relative\n../../models mount handed the sidecar pointer files: /healthz reported\ndegraded, OCR and local weights were off while every container stayed\nhealthy and the boundary probes only checked the 401. The mount now comes\nfrom MATERIAL_MODELS_HOST_DIR, release.py adds a sidecar-ocr-ready probe\n(status ok + paddleOcrEnabled), check:models reads the same variable, and\nproduction-security pins both.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:04:05-07:00"}],"HeadCommit":{"Sha1":"09dfe49c0bbf03ca2a5eadf482ec9a2a1de5ab34","Message":"Merge branch 'main' into chore/governance-blindspots-20260912\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:04:40-07:00"},"CompareURL":"luoanwu/image-generation/compare/5d78da5b9e4f694571e6af490e2063df0d11d960...09dfe49c0bbf03ca2a5eadf482ec9a2a1de5ab34","Len":2}...
|
1789193676
|
Edit
Delete
|
|
29178
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/chore/governance-blindspots-20260912
|
0
|
{"Commits":[{"Sha1":"30ca0fd0c {"Commits":[{"Sha1":"30ca0fd0cdec3d23f9e8e56d417132ab5a685206","Message":"test(governance): verify the governance blind-spot round\n\nEight fingerprint-bound gates (runtime, public-file, inference, script,\nproduction, ui, deps, shijie) passed on sha256:83e807a1… in an isolated\nstack; the models snapshot honestly reports 5/8 weights from the host\ndirectory; full static chain passed. Evidence:\nacceptance-artifacts/governance-blindspots-2026-09-12/.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:15:10-07:00"}],"HeadCommit":{"Sha1":"30ca0fd0cdec3d23f9e8e56d417132ab5a685206","Message":"test(governance): verify the governance blind-spot round\n\nEight fingerprint-bound gates (runtime, public-file, inference, script,\nproduction, ui, deps, shijie) passed on sha256:83e807a1… in an isolated\nstack; the models snapshot honestly reports 5/8 weights from the host\ndirectory; full static chain passed. Evidence:\nacceptance-artifacts/governance-blindspots-2026-09-12/.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:15:10-07:00"},"CompareURL":"luoanwu/image-generation/compare/09dfe49c0bbf03ca2a5eadf482ec9a2a1de5ab34...30ca0fd0cdec3d23f9e8e56d417132ab5a685206","Len":1}...
|
1789193743
|
Edit
Delete
|
|
29180
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/chore/governance-blindspots-20260912
|
0
|
{"Commits":[{"Sha1":"4e66049d8 {"Commits":[{"Sha1":"4e66049d88c3b4b904aa4e2fe178bc24da3eafed","Message":"test(governance): verify the release-probe fix\n\nEight fingerprint-bound gates and the full static chain passed on the\nprobe-fixed source (sha256:a511e52587c05c951893bfb992a25c73ea21f15cb340dcc680f392172a93a6a8) in an isolated stack; the models snapshot\nreports 5/8 host weights. Evidence:\nacceptance-artifacts/governance-blindspots-2026-09-12/.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:39:16-07:00"},{"Sha1":"784363a09070b34870312e7dda377123230e49fb","Message":"fix(release): read OCR readiness from the sidecar capability list\n\n/healthz carries status + capabilities[]; the probe had looked for a\ntop-level paddleOcrEnabled field that only check:startup derives, so the\nfirst governance1 release was rejected and rolled back. The probe now\nrequires status=ok and capabilities[key=paddle-ocr].enabled=true and\nrecords the capability reason.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:29:41-07:00"}],"HeadCommit":{"Sha1":"4e66049d88c3b4b904aa4e2fe178bc24da3eafed","Message":"test(governance): verify the release-probe fix\n\nEight fingerprint-bound gates and the full static chain passed on the\nprobe-fixed source (sha256:a511e52587c05c951893bfb992a25c73ea21f15cb340dcc680f392172a93a6a8) in an isolated stack; the models snapshot\nreports 5/8 host weights. Evidence:\nacceptance-artifacts/governance-blindspots-2026-09-12/.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:39:16-07:00"},"CompareURL":"luoanwu/image-generation/compare/30ca0fd0cdec3d23f9e8e56d417132ab5a685206...4e66049d88c3b4b904aa4e2fe178bc24da3eafed","Len":2}...
|
1789195181
|
Edit
Delete
|
|
29182
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/chore/governance-blindspots-20260912
|
0
|
{"Commits":[{"Sha1":"f91bb2efb {"Commits":[{"Sha1":"f91bb2efbad462a2c653bea45ecc14fadebd76ce","Message":"docs(releases): record governance2 deployment and restored OCR\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:44:52-07:00"}],"HeadCommit":{"Sha1":"f91bb2efbad462a2c653bea45ecc14fadebd76ce","Message":"docs(releases): record governance2 deployment and restored OCR\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-11T23:44:52-07:00"},"CompareURL":"luoanwu/image-generation/compare/4e66049d88c3b4b904aa4e2fe178bc24da3eafed...f91bb2efbad462a2c653bea45ecc14fadebd76ce","Len":1}...
|
1789195510
|
Edit
Delete
|
|
20278
|
5
|
5
|
5
|
72
|
0
|
0
|
refs/heads/chore/governance-ghost-assets-and-readm refs/heads/chore/governance-ghost-assets-and-readmodel...
|
0
|
|
1785568903
|
Edit
Delete
|
|
20279
|
5
|
5
|
5
|
72
|
0
|
0
|
refs/heads/chore/governance-ghost-assets-and-readm refs/heads/chore/governance-ghost-assets-and-readmodel...
|
0
|
{"Commits":[{"Sha1":"8fe17cd57 {"Commits":[{"Sha1":"8fe17cd57002bf1ed691e63a80c71db5c03d0f5f","Message":"feat(solutions): 项目名称默认取客户名称 + 经营目标/目标客群/硬性约束标签化\n\n本轮直接改动(客户方案域):\n\n- 建项表单选定客户后默认预填客户名称,且**只覆盖上一次自动填入的值**——用户手改过\n 就彻底交还给他,换客户也不再动它。仍是纯 UI 预填:name 在 contracts 里照旧 min(1)\n 必填,后端不替任何调用方脑补名称。\n- 经营目标、目标客群、硬性约束统一改为标签(chips)录入,候选从本租户已有方案现算、\n 按频次排序,不建标签字典表(用户裁决:只做到「表单内标签输入 + 历史候选」这一层;\n 租户级标签库是独立主数据对象,要走 owner-matrix 登记与完整模块流程)。\n- 标签归一(去空白 → 拒空串 → 去重保序)提为 contracts 单源 tagListSchema,读取侧\n 归一为 normalizeTagList。只在前端 chips 去重挡不住 curl([\"A\",\"A \"] 就能撑破上限、\n 读模型里并排出现两个肉眼一样的标签,C26 同一条教训),两后端各补一条读回断言,\n 证明规则真在服务端生效。\n- targetSegment 由单值 VARCHAR(500) 迁为 Json 标签数组,迁移\n 20260731090000_solution_target_segment_tags(两后端同份):就地\n ALTER ... TYPE ... USING,空串→[]、非空单值→单元素数组;**刻意不按分隔符拆**——\n 存量是自由文本,猜标签边界会造出谁也没确认过的半句话标签。转换语义已在真实\n PostgreSQL 上用 legacy 值单独验证。\n- 发布闸门判空由 .trim() 改为经 normalizeTagList 后 length===0,并同步\n check:role-permissions 的绊网正则;normalizeTagList 同时兜住迁移前写下的冻结快照\n (公开页读的就是快照,按定义不可回填)。\n- 定位确认凭证比对标签改用集合语义 sameTagSet:纯拖动排序不改变复核人确认过的那组\n 客群,按数组逐位比对会把已确认误判成 POSITIONING_STALE,逼销售重走复核。\n- E2E 首跑抓到一个真问题:标签成签会让输入框长高一行、提交按钮随之下移,mousedown\n 与 mouseup 落到不同元素上,那一下点击被浏览器吞掉。测试改为显式 Tab 失焦,并保留\n 「只失焦不回车也不丢标签」这条断言(失焦即成签,避免静默丢数据)。\n\n⚠️ 共享工作区提交:提交时本仓有并行会话在途(收款域、报价对客策略与发送对话框、\n操作手册生成、队列隔离与设计令牌门禁、商品目录导入等),其改动一并进入本提交。\n无法按文件拆分——packages/contracts/src/solution.ts 同时含两边内容。\n\n验收(作用域=本地工作区,提交时 dirty,不得外推为远端已验证):\n- pnpm check 全绿(14 个静态门禁 + lint + typecheck)\n- pnpm check:runtime 267 用例 / 地板 265,{contracts:187, api-nestjs:40, api-fastify:40}\n- pnpm check:ui 8/8 真浏览器用例\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-01T00:21:22-07:00"},{"Sha1":"a79aa437569cad73ecee4ede960c6f80a88bf98d","Message":"docs: 记录 G24 分页形态裁决(方案①:列表分页 + 独立 options 接口)并说明本轮未落地的原因\n\n用户已裁决方案①,设计细节(Paginated/OptionList 契约形状、3 个 options 接口的字段\n及其反推依据)一并写入 G24,下一轮直接落地,不必重新讨论。\n\n本轮未落地的原因写明:这是会改变 4 个接口响应形状的跨层迁移,而同一 checkout 上\n有并行会话正在开发收款域——改到一半的跨层 API 迁移留在共享工作区会直接卡住对方,\n因此整体回退、只留裁决结论。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-31T08:15:46-07:00"},{"Sha1":"cafbd90f352d9fae794c4cae88c8435d84ebf132","Message":"feat(overview): 关闭 C27——把总览 KPI 从浏览器搬到服务端聚合 owner\n\n问题不在今天,在加分页那天\n总览 6 个指标全部在 MobileOverview.tsx 里对 GET /api/quotations 的全量返回 reduce,\n且「什么算已提交/已通过/已确认」「主报价金额怎么取」只以三个本地 Set + 一个函数的形式\n存在于这一个前端组件里。当前列表无分页,所以指标确实是对的——但它的正确性依赖\n一个没人承诺过的前提。只要给列表加分页或后端加截断,指标会静默退化成「当前页的统计」,\n页面还印着「全部来自当前租户」,没有任何测试会红。\n\n修法:把「谁决定聚合范围」搬回拥有数据的那一层\n- contracts 出单源:QUOTATION_{SUBMITTED,APPROVED,CONFIRMED,WAITING_CUSTOMER}_STATES\n + summarizeQuotations + countQuotationStates\n- 两后端 GET /api/quotations/summary 只做窄投影取行,算账一律调那个纯函数;\n 采购侧 GET /api/fulfillment/purchase-orders/summary 用 groupBy 让数据库出计数\n- 前端只做展示与单位换算(分→元、小时→天)\n\n顺带买到 G17 的一小块:聚合逻辑放 contracts 而非两后端各写一遍,\n双后端行为对等在这条路径上是结构保证,不需要门禁,因为不存在两份实现。\n\n同轮下线两处假值\n- 写死的「你好,本地报价管理员」→ 按 contracts 角色显示,不编造用户姓名\n- 最近报价表每行恒为「当前团队」的「负责人」列 → 整列移除(Quotation 无归属人字段),\n 口径同「开票收款尚未建模」:宁可不显示,也不用假值占位;同步收窄 grid 列数\n\n证据\n- pnpm check exit=0\n- pnpm check:runtime:本轮净贡献 87 用例(地板 83→87、ownTestCases 93→95)\n 两后端各 1 条聚合验收:空集均值 0 而非 NaN/byState 覆盖状态全集/跨租户不参与/403 负例\n- pnpm check:ui:8/8 全绿\n\n未闭环并显式登记为 G24:列表本身仍无分页。分页形态是真岔路——这 4 个列表同时喂着\n展示列表和 15 个关联对象下拉,天真分页会让 C22 的「关联对象来自真实读模型选择」\n退化成「只能选到第一页」。三个候选方案已写入 G24,待裁决。\n\n注:本仓有并行会话正在开发收款域。本次提交按文件路径逐个对账,\nquotation.ts 用补丁级 hunk 过滤剔除了对方的 ROLE_PERMISSIONS 改动;\nreports/*.latest.json 因计数被对方未提交的测试污染,本轮不提交,只提交经独立核算的 baseline.json。\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-31T08:06:50-07:00"},{"Sha1":"ec76984fa40261041bf89feeb5d64680a77ad577","Message":"feat(products,customers): 补编辑入口并关闭 C26——partial 更新 schema 丢掉的价格不变量\n\n审计口径「后端有写接口、前端无入口」:PATCH /api/products/:id 与 /api/customers/:id 在\n两后端都已实现且写链治理齐全(权限 + 租户条件写 + 0 行 404 + outbox 同 tx),\n但前端全仓只有 solutions 用过 PATCH——商品和客户建完就再也改不了。\n\n动工前核契约,先发现一个必须先补的洞(C26)\n- 价格不变量「底价/成本价 ≤ 标准价」只写在 createProductSchema 的 superRefine 里;\n updateProductSchema = productBaseSchema.partial() 从 base 派生,PATCH 完全绕过它。\n- 长期不可达只因前端没有编辑入口——补 UI 会把它立刻变成可达。\n- 修法不是给 update schema 也加个 refine:PATCH 可能只带 minimumPriceCents,\n 单看请求体判不出来。拆两半:contracts 提单源 checkProductPriceInvariant;\n update schema 只判同一请求内同时出现的字段,两后端在 tx 内合并现有记录后调同一函数兜底。\n\n前端\n- products/customers 各补 update API + mutation hook + 内联编辑器。\n- 编辑表单刻意用 createProductSchema 校验(它带不变量),让前后端拦同一件事。\n- SKU 与商品类型不开放编辑:已被历史报价明细固化为不可变快照,事后改会让旧报价口径漂移。\n- useUpdateCustomer 一并失效 quotations 缓存:客户名是报价抬头来源,否则报价列表继续显示旧抬头。\n\n证据\n- pnpm check exit=0\n- pnpm check:runtime:85 用例(31/27/27),地板同步 83→85、ownTestCases 91→93\n 新增两后端各 1 条 HTTP 负例:单字段 PATCH→400、双字段 PATCH→400、失败后读回未变、合法 PATCH 写库\n- pnpm check:ui:8/8 全绿,新增编辑闭环与不变量提示断言\n\n过程中自伤两次并已修正(记入 C26)\n- 编辑用例改了共享商品 PRODUCT_NAME → 下游 3 条用例全挂;改用专用 EDIT_SKU 商品并在常量处写明禁令\n- 新增商品让报价下拉选项从 3 变 4 → 更新计数并注明构成,保留其「挡重复项/挡漏建」的作用\n- 顺带把 productLibrary.locator(\"form\") 收窄为 getByTestId(\"product-create-form\")(C16 同款规则)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-31T07:48:35-07:00"},{"Sha1":"aed0147384ea12244797a17c46bfe98c4cdeb0a2","Message":"fix(governance): 关闭 C25——删除幽灵 UI 资产并给「文档点名的代码符号」上门禁\n\n审计「每个菜单的真实对接」时发现 OrdersPanel/UsersPanel 在整个 apps/web/src 里\n没有任何 import,且是 9 个 API helper 的唯一消费者——一整棵约 560 行的死子树。\n\n真正的问题不是死代码,是三份治理文档仍拿它们当活资产:\n- owner-matrix 把 User/Order/OrderEvent 的读模型消费方写成这两个面板(追不到可达 UI);\n- CLAUDE.md C16 宣称的防线 getByTestId(\"users-panel\") 在 E2E 里早已不存在;\n- CLAUDE.md 的「apps/web 三面板样板」指向的布局已被 18 入口工作台取代。\n既有门禁交集恰好为空:typecheck 不报未使用导出;check:docs-truth 的幽灵资产断言\n管的是「文档给示例但文件不存在」(这里正相反);check:module-integration 只扫菜单内条目。\n\n处置(用户裁决:删除而非挂回 ADMIN 入口)\n- 删 OrdersPanel/UsersPanel + 9 个仅供其消费的 helper + 0 引用且注释失真的 api 泛型对象\n + 0 引用的 USD 版 formatCentsToCurrency;\n- /api/users、/api/orders、/api/jobs 后端与双后端 HTTP/DB 测试一律不动,只是不再有 UI 路径;\n- owner-matrix 三行改「无 UI 消费方」并加登记规则 5;C16 行改「规则仍生效、原实例已下线」;\n 「三面板样板」更正为现网 shell 结构;quotation-blueprint 两处同步;经验库补 C25 完整叙事。\n\n新增/重锚两处门禁(均已负向测试)\n- check:module-integration 加 owner-matrix-consumer-*:文档点名的组件必须在 apps/web 真实可达。\n 负向证据:真实磁盘造一个无人 import 的 ZombiePanel 并被点名 → 红;\n 摘掉 EventFeed 唯一 import → 红(证明正向路径不是空跑,Outbox 行确实在被断言)。\n- check:contract-consumers 的前端半边原本三条断言全锚在 OrdersPanel 上——即长期在守一个\n 没人走的路口。重锚到报价/商品/履约三个真实工作台,并从「好模式存在」改为「坏模式不存在」:\n 原断言局部改坏 1/3 处不会红(实测),新 reject 改坏一处即红(实测)。\n\n证据:pnpm check exit=0(本地工作区,7f1be32 基线同样 exit=0)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-31T07:32:18-07:00"}],"HeadCommit":{"Sha1":"8fe17cd57002bf1ed691e63a80c71db5c03d0f5f","Message":"feat(solutions): 项目名称默认取客户名称 + 经营目标/目标客群/硬性约束标签化\n\n本轮直接改动(客户方案域):\n\n- 建项表单选定客户后默认预填客户名称,且**只覆盖上一次自动填入的值**——用户手改过\n 就彻底交还给他,换客户也不再动它。仍是纯 UI 预填:name 在 contracts 里照旧 min(1)\n 必填,后端不替任何调用方脑补名称。\n- 经营目标、目标客群、硬性约束统一改为标签(chips)录入,候选从本租户已有方案现算、\n 按频次排序,不建标签字典表(用户裁决:只做到「表单内标签输入 + 历史候选」这一层;\n 租户级标签库是独立主数据对象,要走 owner-matrix 登记与完整模块流程)。\n- 标签归一(去空白 → 拒空串 → 去重保序)提为 contracts 单源 tagListSchema,读取侧\n 归一为 normalizeTagList。只在前端 chips 去重挡不住 curl([\"A\",\"A \"] 就能撑破上限、\n 读模型里并排出现两个肉眼一样的标签,C26 同一条教训),两后端各补一条读回断言,\n 证明规则真在服务端生效。\n- targetSegment 由单值 VARCHAR(500) 迁为 Json 标签数组,迁移\n 20260731090000_solution_target_segment_tags(两后端同份):就地\n ALTER ... TYPE ... USING,空串→[]、非空单值→单元素数组;**刻意不按分隔符拆**——\n 存量是自由文本,猜标签边界会造出谁也没确认过的半句话标签。转换语义已在真实\n PostgreSQL 上用 legacy 值单独验证。\n- 发布闸门判空由 .trim() 改为经 normalizeTagList 后 length===0,并同步\n check:role-permissions 的绊网正则;normalizeTagList 同时兜住迁移前写下的冻结快照\n (公开页读的就是快照,按定义不可回填)。\n- 定位确认凭证比对标签改用集合语义 sameTagSet:纯拖动排序不改变复核人确认过的那组\n 客群,按数组逐位比对会把已确认误判成 POSITIONING_STALE,逼销售重走复核。\n- E2E 首跑抓到一个真问题:标签成签会让输入框长高一行、提交按钮随之下移,mousedown\n 与 mouseup 落到不同元素上,那一下点击被浏览器吞掉。测试改为显式 Tab 失焦,并保留\n 「只失焦不回车也不丢标签」这条断言(失焦即成签,避免静默丢数据)。\n\n⚠️ 共享工作区提交:提交时本仓有并行会话在途(收款域、报价对客策略与发送对话框、\n操作手册生成、队列隔离与设计令牌门禁、商品目录导入等),其改动一并进入本提交。\n无法按文件拆分——packages/contracts/src/solution.ts 同时含两边内容。\n\n验收(作用域=本地工作区,提交时 dirty,不得外推为远端已验证):\n- pnpm check 全绿(14 个静态门禁 + lint + typecheck)\n- pnpm check:runtime 267 用例 / 地板 265,{contracts:187, api-nestjs:40, api-fastify:40}\n- pnpm check:ui 8/8 真浏览器用例\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-01T00:21:22-07:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/9618d78da3e668f14e3c1611d7090f45eef0c085...8fe17cd57002bf1ed691e63a80c71db5c03d0f5f","Len":7}...
|
1785568903
|
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
|
|
1984
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/chore/outbox-d-class-audit
|
0
|
|
1778625302
|
Edit
Delete
|
|
1219
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/chore/release-rollback-orchestrator
|
0
|
|
1777270515
|
Edit
Delete
|