feat(schedule-plan): ✨ 重构智能排程链路并修复粗排双节对齐问题 - ✨ 新增“对话级排程状态持久化”能力:引入 `agent_schedule_states` 模型/DAO,并接入启动迁移 - ✨ 智能排程图升级:补齐小幅微调(quick refine)分支,完善预算/并发/状态字段流转 - ✨ 预览链路增强:完善排程预览服务读写与桥接逻辑,新增本地预览页 `infra/schedule_preview_viewer.html` - ♻️ 缓存治理统一:将相关缓存处理收口到 DAO + `cache_deleter` 联动清理,移除旧散落逻辑 - 🐛 修复粗排核心 bug:禁止单节降级,强制双节并按 `1-2/3-4/...` 对齐;修复结束日扫描边界问题 - ✅ 新增粗排回归测试:覆盖孤立单节、偶数起点双节、Filler 对齐等关键场景
60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
package inits
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/LoveLosita/smartflow/backend/model"
|
|
"github.com/spf13/viper"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func autoMigrateModels(db *gorm.DB) error {
|
|
models := []any{
|
|
&model.User{},
|
|
&model.AgentChat{},
|
|
&model.ChatHistory{},
|
|
&model.Task{},
|
|
&model.TaskClass{},
|
|
&model.TaskClassItem{},
|
|
&model.ScheduleEvent{},
|
|
&model.Schedule{},
|
|
&model.AgentOutboxMessage{},
|
|
&model.AgentScheduleState{},
|
|
}
|
|
|
|
for _, m := range models {
|
|
if err := db.AutoMigrate(m); err != nil {
|
|
return fmt.Errorf("auto migrate failed for %T: %w", m, err)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func ConnectDB() (*gorm.DB, error) {
|
|
host := viper.GetString("database.host")
|
|
port := viper.GetString("database.port")
|
|
user := viper.GetString("database.user")
|
|
password := viper.GetString("database.password")
|
|
dbname := viper.GetString("database.dbname")
|
|
|
|
dsn := fmt.Sprintf(
|
|
"%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
|
user, password, host, port, dbname,
|
|
)
|
|
|
|
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err = autoMigrateModels(db); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
log.Println("Database connected successfully")
|
|
log.Println("Database auto migration completed")
|
|
return db, nil
|
|
}
|