Version: 0.9.5.dev.260407
后端: 1.粗排链路收口(按 task_class_ids 精确加载 ScheduleState + 规划窗口抗脏数据) - 更新conv/schedule_provider.go:新增 LoadScheduleStateForTaskClasses;优先按本轮任务类加载窗口;buildWindowFromTaskClasses 改为逐条过滤坏日期,避免 DayMapping 被全量任务类污染 - 更新model/state_store.go:新增 ScopedScheduleStateProvider 可选接口 - 更新model/graph_run_state.go:EnsureScheduleState 首次加载时优先走 scoped provider,再做 scope 裁剪 2.粗排建议态语义统一(pending/existing → pending/suggested/existing) - 新建tools/status.go:统一 IsPendingTask / IsSuggestedTask / IsExistingTask / scope 过滤逻辑 - 更新node/rough_build.go:粗排回写后任务显式转 suggested;pending 统计仅看“真实 pending” - 更新tools/state.go:ScheduleTask.Status/Slots/Duration 注释补齐 suggested 语义 - 更新tools/read_helpers.go + read_tools.go:overview/list_tasks/task_info 支持 suggested 展示;占用计算按“已落位任务”统一处理 - 更新tools/write_helpers.go + write_tools.go:place/move/swap/unplace 全量切到 suggested/existing/pending 新语义 - 更新tools/registry.go + SCHEDULE_TOOLS.md:工具描述、参数枚举、文档口径同步到 suggested 语义 - 更新conv/schedule_preview.go:预览层统一通过 IsSuggestedTask 输出 suggested,兼容旧快照 - 更新service/agentsvc/agent_newagent.go:预览 debug 摘要改为 pending/suggested/existing 三态统计 3.粗排调试增强 - 更新node/rough_build.go:新增 applied/day_mapping_miss/task_item_match_miss 统计及样本日志,便于排查 placement 未落回 state 的根因 前端:无 仓库:无
This commit is contained in:
@@ -112,10 +112,10 @@ State 是工具层的操作对象,存在于内存中,不直接暴露给 LLM
|
||||
| `source_id` | int | 原表主键(ScheduleEvent.ID 或 TaskClassItem.ID),写库时用于反查 |
|
||||
| `name` | string | 任务名称,来自 ScheduleEvent.Name 或 TaskClassItem.Content |
|
||||
| `category` | string | 类别名,来自 TaskClass.Name(如"课程"、"学习"、"作业") |
|
||||
| `status` | string | `"existing"`(已安排)| `"pending"`(待安排)|
|
||||
| `status` | string | `"existing"`(已安排/已确定)| `"suggested"`(已预排/可优化)| `"pending"`(待安排)|
|
||||
| `locked` | bool | 是否锁定。推导规则:ScheduleEvent.Type="course" 且 CanBeEmbed=false 时为 true |
|
||||
| `slots` | array | 已安排任务的时段列表,每项含 day/slot_start/slot_end |
|
||||
| `duration` | int | 待安排任务需要的连续时段数(仅 pending 任务) |
|
||||
| `duration` | int | 待安排/已预排任务需要的连续时段数(pending / suggested 任务常见) |
|
||||
| `category_id` | int | 所属 TaskClass 的 ID(仅 source=task_item 时有值) |
|
||||
|
||||
**嵌入任务相关字段(仅 can_embed=true 的任务):**
|
||||
@@ -291,7 +291,7 @@ DB 记录:
|
||||
| 字段 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| category | string | 否 | 过滤类别(对应 TaskClass.Name,如"课程"、"学习") |
|
||||
| status | string | 否 | existing / pending / all,默认 all |
|
||||
| status | string | 否 | existing / suggested / pending / all,默认 all |
|
||||
|
||||
**返回示例(待安排):**
|
||||
|
||||
@@ -365,7 +365,7 @@ DB 记录:
|
||||
|
||||
### 5.1 place
|
||||
|
||||
将待安排任务放置到指定位置。
|
||||
将待安排任务预排到指定位置。
|
||||
|
||||
**入参:**
|
||||
|
||||
@@ -408,7 +408,7 @@ DB 记录:
|
||||
|
||||
### 5.2 move
|
||||
|
||||
移动已有任务到新位置。
|
||||
移动已落位任务到新位置。
|
||||
|
||||
**入参:**
|
||||
|
||||
@@ -449,7 +449,7 @@ DB 记录:
|
||||
|
||||
### 5.3 swap
|
||||
|
||||
交换两个已安排任务的位置。
|
||||
交换两个已落位任务的位置。
|
||||
|
||||
**入参:**
|
||||
|
||||
@@ -515,7 +515,7 @@ DB 记录:
|
||||
|
||||
### 5.5 unplace
|
||||
|
||||
将已安排任务恢复为待安排状态。
|
||||
将已落位任务恢复为待安排状态。
|
||||
|
||||
**入参:**
|
||||
|
||||
@@ -551,7 +551,8 @@ DB 记录:
|
||||
- place 新任务到锁定时段同样拒绝
|
||||
|
||||
### 状态约束
|
||||
- pending 任务只能 place,不能 move / swap
|
||||
- pending 任务只能 place,不能 move / swap / unplace
|
||||
- suggested 任务可以 move / swap / unplace
|
||||
- existing 任务可以 move / swap / unplace
|
||||
- 状态不符时返回明确错误信息
|
||||
|
||||
@@ -574,7 +575,7 @@ DB 记录:
|
||||
- 嵌入任务的 locked 继承宿主:宿主不可移动时,嵌入任务也不可单独移动
|
||||
|
||||
### 数据库交互
|
||||
- State 初始化:从 Schedule + ScheduleEvent 加载 existing 任务,从 TaskClassItem 加载 pending 任务
|
||||
- State 初始化:从 Schedule + ScheduleEvent 加载 existing 任务,从 TaskClassItem 加载 pending 任务;粗排或工具预排成功后,任务转为 suggested
|
||||
- State 落库:Confirm 节点统一处理,将 state 变更转换为 Schedule/ScheduleEvent/TaskClassItem 的增删改
|
||||
- 落库时使用 source + source_id 定位原记录,使用 day_mapping 将 day_index 转回 (week, day_of_week)
|
||||
- 落库时将 (slot_start, slot_end) 展开为逐条 Schedule 记录
|
||||
|
||||
Reference in New Issue
Block a user