feat(knowledge): 知识库 API、权限与迁移
This commit is contained in:
@@ -27,15 +27,40 @@ func Init(cfg *config.Config) error {
|
||||
&model.Threshold{}, &model.Alarm{}, &model.Camera{}, &model.VideoClip{},
|
||||
&model.AuditLog{}, &model.Telemetry{},
|
||||
&model.Permission{}, &model.RolePermission{},
|
||||
&model.Disease{}, &model.KnowledgeArticle{},
|
||||
); err != nil {
|
||||
slog.Warn("自动迁移有警告(可忽略)", "err", err)
|
||||
}
|
||||
// 初始化权限种子数据
|
||||
seedPermissions(db)
|
||||
// 初始化知识库种子数据
|
||||
seedKnowledge(db)
|
||||
slog.Info("数据库连接成功,自动迁移完成")
|
||||
return nil
|
||||
}
|
||||
|
||||
// seedKnowledge 初始化知识库种子数据(幂等:按名称/类型+标题判重)
|
||||
func seedKnowledge(db *gorm.DB) {
|
||||
for _, d := range model.SeedDiseases {
|
||||
var cnt int64
|
||||
db.Model(&model.Disease{}).Where("name = ?", d.Name).Count(&cnt)
|
||||
if cnt == 0 {
|
||||
if err := db.Create(&d).Error; err != nil {
|
||||
slog.Warn("写入病种种子失败", "name", d.Name, "err", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, a := range model.SeedKnowledgeArticles {
|
||||
var cnt int64
|
||||
db.Model(&model.KnowledgeArticle{}).Where("kind = ? AND title = ?", a.Kind, a.Title).Count(&cnt)
|
||||
if cnt == 0 {
|
||||
if err := db.Create(&a).Error; err != nil {
|
||||
slog.Warn("写入知识文章种子失败", "title", a.Title, "err", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// seedPermissions 初始化权限和角色-权限映射种子数据(幂等)
|
||||
func seedPermissions(db *gorm.DB) {
|
||||
// 1. 写入权限定义(已存在则跳过)
|
||||
|
||||
Reference in New Issue
Block a user