feat(knowledge): 知识库 API、权限与迁移

This commit is contained in:
weijuesen
2026-08-12 10:48:14 +08:00
parent 8e302349a7
commit 3afc34d0de
4 changed files with 234 additions and 0 deletions
+25
View File
@@ -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. 写入权限定义(已存在则跳过)