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
@@ -1016,6 +1016,7 @@ func (t *ToolSet) addIntent() actool.CoreTool {
|
||||
|
||||
ids := make([]int64, len(items))
|
||||
errs := map[string]string{}
|
||||
createdAny := false
|
||||
for i, it := range items {
|
||||
id, err := t.addOneIntent(it)
|
||||
if err != nil {
|
||||
@@ -1023,6 +1024,15 @@ func (t *ToolSet) addIntent() actool.CoreTool {
|
||||
continue
|
||||
}
|
||||
ids[i] = id
|
||||
createdAny = true
|
||||
}
|
||||
|
||||
// 人经主 agent 直投意图 → 若任务已 done(无 open 目标的 goalless 分支),把它
|
||||
// 拉回 running,worker 才能领这条意图执行。resumeTask 仅由主 agent 的 Chat 接入
|
||||
// (SetResumeTask);planner 的 ToolSet 为 nil,故 planner 自己调 add_intent 时此段
|
||||
// no-op,不影响其正常产意图。意图节点已在上面建好(open),复活时不会被误判抽干。
|
||||
if createdAny && t.resumeTask != nil {
|
||||
t.resumeTask()
|
||||
}
|
||||
|
||||
if !batch { // 单条:保持原返回
|
||||
|
||||
Reference in new issue
Block a user