Version: 0.3.9.dev.260226

fix: 🐛 修复智能排程接口任务块信息缺失与数据插入错误

* 修复智能排程接口返回的任务块信息缺失问题,确保任务数据完整返回
* 修复 `UserInsertTaskItemRequestToModel` DTO 函数未填入起始时间字段的问题,解决多个接口插入数据时出现 500 错误

  * 错误源自上次更新“获取最近完成动态任务接口”时,未同步更改数据库字段对应逻辑
* 将智能排程接口的 `ctx` 超时恢复为 1 秒,优化接口响应性能

feat: 🎯 新增正式应用日程接口

* 新增正式应用日程接口,并完成功能测试,确保业务流程无异常
This commit is contained in:
LoveLosita
2026-02-26 20:07:55 +08:00
parent 1399b38f16
commit fca4004024
12 changed files with 397 additions and 10 deletions

View File

@@ -474,6 +474,7 @@ func buildBrief(slot slotInfo, day, start, end, span, order int) model.WeeklyEve
brief.Name = *slot.plan.Content
brief.Type = "task"
brief.Status = "suggested" // 标记为建议状态
brief.ID = slot.plan.ID // 虚日程的 ID 直接使用 TaskClassItem 的 ID方便前端追踪和操作
}
return brief

View File

@@ -138,7 +138,7 @@ func ProcessUserGetCompleteTaskClassRequest(taskClass *model.TaskClass) (*model.
}
// UserInsertTaskItemRequestToModel 用于将填入空闲时段日程的请求转换为 Schedule 模型
func UserInsertTaskItemRequestToModel(req *model.UserInsertTaskClassItemToScheduleRequest, item *model.TaskClassItem, taskID *int, userID, startSection, endSection int) ([]model.Schedule, *model.ScheduleEvent) {
func UserInsertTaskItemRequestToModel(req *model.UserInsertTaskClassItemToScheduleRequest, item *model.TaskClassItem, taskID *int, userID, startSection, endSection int) ([]model.Schedule, *model.ScheduleEvent, error) {
var schedules []model.Schedule
for section := startSection; section <= endSection; section++ {
req1 := &model.Schedule{
@@ -151,14 +151,20 @@ func UserInsertTaskItemRequestToModel(req *model.UserInsertTaskClassItemToSchedu
}
schedules = append(schedules, *req1)
}
startTime, endTime, err := RelativeTimeToRealTime(req.Week, req.DayOfWeek, startSection, endSection)
if err != nil {
return nil, nil, err
}
req2 := &model.ScheduleEvent{
UserID: userID, // 由调用方填充
Name: safeStr(item.Content), // 任务内容作为事件名称
Type: "task",
RelID: &item.ID, // 关联到 TaskClassItem 的 ID
CanBeEmbedded: false, // 任务事件允许嵌入其他任务(如果需要的话)
StartTime: startTime,
EndTime: endTime,
}
return schedules, req2
return schedules, req2, nil
}
// --- 🛡️ 辅助工具函数:保持代码清爽并防止 Panic ---

View File

@@ -62,7 +62,7 @@ type SectionTime struct {
End string // 第一个结束
}
var sectionTimeMap2 = map[int]SectionTime{
var SectionTimeMap2 = map[int]SectionTime{
1: {Start: "08:00", End: "08:45"},
2: {Start: "08:55", End: "09:40"},
3: {Start: "10:15", End: "11:00"},
@@ -83,8 +83,8 @@ func RelativeTimeToRealTime(week, dayOfWeek, startSection, endSection int) (time
return time.Time{}, time.Time{}, respond.InvalidSectionRange
}
startTimeInfo, okStart := sectionTimeMap2[startSection]
endTimeInfo, okEnd := sectionTimeMap2[endSection]
startTimeInfo, okStart := SectionTimeMap2[startSection]
endTimeInfo, okEnd := SectionTimeMap2[endSection]
if !okStart || !okEnd {
return time.Time{}, time.Time{}, respond.InvalidSectionNumber
}