fix(tasks): 任务列表改按 id 降序,消除同刻创建任务的抖动
原先按 created_at 降序排,但没有二级排序键。同一时刻创建的多个任务时间戳 相同,排序不稳定;叠加前端每 10 秒轮询、以及 Manager 用内存 map 存任务 (遍历顺序随机、每次 List 都要重排),这些任务就会在列表里频繁互换位置。 改用 id 降序:id 由 BIGSERIAL 单调递增分配,即插入顺序,唯一且稳定,最新 创建的在最前。db.ListTasks 的 ORDER BY 与 Manager.List 的内存排序同步改。 验证: 新增 TestListTasksOrderByIDDesc 连本地 PG 实跑通过;db/server 全量 无新增失败(仅剩既有的 TestCompanyScopeInvalid)。
This commit is contained in:
1 parent
dfbbb33069
commit
4cf36c7896
9 files changed
+128
-3
No files matched your search
+3
-1
@@ -322,7 +322,9 @@ func (d *DB) SetParentRef(id int64, parentRef string) error {
|
||||
|
||||
// ListTasks returns alive tasks, newest first.
|
||||
func (d *DB) ListTasks() ([]*Task, error) {
|
||||
rows, err := d.Query(`SELECT ` + taskCols + ` FROM tasks WHERE deleted_at IS NULL ORDER BY created_at DESC`)
|
||||
// 按 id 降序:id 是 BIGSERIAL,单调递增即插入顺序,最新的在最前。不用 created_at
|
||||
// 是因为同一时刻创建的多个任务时间戳相同,排序不稳定,列表会频繁换位(见 List)。
|
||||
rows, err := d.Query(`SELECT ` + taskCols + ` FROM tasks WHERE deleted_at IS NULL ORDER BY id DESC`)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user