Archived
This repository has been archived on 2026-09-13 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
e5ca9caaa6fb2d5deea21a112d3e4a9559ccd5be
用户:「点击保存后,列表里面的元素每次排列顺序都不一致,需要保持顺序的一致性」 病根在读:`select * from ledger.__draft ... order by updated_at`,而 `put` 的 upsert 分支每次都写 `updated_at = now()` —— **人保存了哪几行,哪几行就跳到列表末尾**; 同一批写下的行(配方一次 project 铺 7 行)`updated_at` 又完全相同,并列之间没有次级键, PostgreSQL 返回什么顺序都算数(更新一行 = 旧版本作废 + 新版本插到堆尾,物理顺序本来 就会变),于是每保存一次屏上的表就重排一次。 加 `seq bigserial`:insert 那一刻取号、upsert 的 update 分支不碰它 —— 记的正是「这一行 是第几个被写下的」,而配方铺行的顺序就是人期望在件上看到的顺序(原 PN 的参数在前、 候选的在后,组内按字典序 —— 配方那么遍历的)。单键、严格全序、没有并列。 **列加在 DRAFT_DDL 里,不写迁移**:这张表由启动时的 DDL 自建(`container.ts` 调 `DRAFT_DDL`),`landed_at` 立的就是这个先例 —— 头一版我没读到那行注释,写了迁移 0036 又撤掉(journal 已回退;开发库那条孤儿记录无害,drizzle 只按 when 比大小)。 测:ledger 集成测试补一条(对真库),同批写下五行 → 顺序原样;改中间那行、再改另外两行 → 顺序一个字不变;值确实写进去了(不是靠没写成功换来的稳定);新写的行排末尾。 变异验证:读序退回 updated_at,这一条真红(也证明它连的是真库,不是被 skip 掉)。 pnpm gates 退出码 0(2495 测)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
Description
No description provided
9.3 MiB
Languages
TypeScript
90.1%
CSS
7.3%
JavaScript
2%
Shell
0.4%
Python
0.1%