Version: 0.8.3.dev.260328

后端:
1.彻底删除原agent文件夹,并将现agent2文件夹全量重命名为agent(包括全部涉及到的文件以及文档、注释),迁移工作完美结束
2.修复了重试消息的相关逻辑问题

前端:
1.改善了一些交互体验,修复了一些bug,现在只剩少的功能了,现存的bug基本都修复完毕

全仓库:
1.更新了决策记录和README文档
This commit is contained in:
Losita
2026-03-28 18:00:31 +08:00
parent 5fc9548420
commit 468367d617
108 changed files with 1910 additions and 17173 deletions

View File

@@ -0,0 +1,95 @@
package agentshared
import "github.com/LoveLosita/smartflow/backend/model"
// CloneWeekSchedules 深拷贝周视图排程结果。
//
// 职责边界:
// 1. 负责断开 []UserWeekSchedule 与内部 Events 切片的引用共享;
// 2. 负责服务于“缓存 DTO / graph state / API 响应”之间的安全复制;
// 3. 不负责业务过滤,不负责排序。
func CloneWeekSchedules(src []model.UserWeekSchedule) []model.UserWeekSchedule {
if len(src) == 0 {
return nil
}
dst := make([]model.UserWeekSchedule, 0, len(src))
for _, week := range src {
eventsCopy := make([]model.WeeklyEventBrief, len(week.Events))
copy(eventsCopy, week.Events)
dst = append(dst, model.UserWeekSchedule{
Week: week.Week,
Events: eventsCopy,
})
}
return dst
}
// CloneHybridEntries 深拷贝混合排程条目切片。
func CloneHybridEntries(src []model.HybridScheduleEntry) []model.HybridScheduleEntry {
if len(src) == 0 {
return nil
}
dst := make([]model.HybridScheduleEntry, len(src))
copy(dst, src)
return dst
}
// CloneTaskClassItems 深拷贝任务块切片。
//
// 这里不能直接 copy
// 1. 因为 TaskClassItem 内部带若干指针字段;
// 2. 如果浅拷贝,后续某一步修改 EmbeddedTime / Status会污染原状态
// 3. 排程 graph 连续微调时,这种共享引用会非常难查,所以必须在公共层兜住。
func CloneTaskClassItems(src []model.TaskClassItem) []model.TaskClassItem {
if len(src) == 0 {
return nil
}
dst := make([]model.TaskClassItem, 0, len(src))
for _, item := range src {
copied := item
if item.CategoryID != nil {
v := *item.CategoryID
copied.CategoryID = &v
}
if item.Order != nil {
v := *item.Order
copied.Order = &v
}
if item.Content != nil {
v := *item.Content
copied.Content = &v
}
if item.Status != nil {
v := *item.Status
copied.Status = &v
}
if item.EmbeddedTime != nil {
t := *item.EmbeddedTime
copied.EmbeddedTime = &t
}
dst = append(dst, copied)
}
return dst
}
// CloneInts 深拷贝 int 切片。
func CloneInts(src []int) []int {
if len(src) == 0 {
return nil
}
dst := make([]int, len(src))
copy(dst, src)
return dst
}
// CloneStrings 深拷贝 string 切片。
func CloneStrings(src []string) []string {
if len(src) == 0 {
return nil
}
dst := make([]string, len(src))
copy(dst, src)
return dst
}