package app import ( "time" "gorm.io/datatypes" "gorm.io/gorm" ) // Worldbook 世界书主表 type Worldbook struct { ID uint `gorm:"primarykey" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` UserID uint `gorm:"index;not null" json:"userId"` Name string `gorm:"type:varchar(100);not null" json:"name"` Description string `gorm:"type:text" json:"description"` IsPublic bool `gorm:"default:false" json:"isPublic"` EntryCount int `gorm:"default:0" json:"entryCount"` } func (Worldbook) TableName() string { return "worldbooks" } // WorldbookEntry 世界书条目表(完全兼容 SillyTavern 格式) type WorldbookEntry struct { ID uint `gorm:"primarykey" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` WorldbookID uint `gorm:"index;not null" json:"worldbookId"` Comment string `gorm:"type:varchar(200)" json:"comment"` // 条目标题/备注 Content string `gorm:"type:text;not null" json:"content"` // 注入内容 // 关键词(存为 JSONB []string) Keys datatypes.JSON `gorm:"type:jsonb" json:"keys"` SecondaryKeys datatypes.JSON `gorm:"type:jsonb" json:"secondaryKeys"` // 触发设置 Constant bool `gorm:"default:false" json:"constant"` // 常驻注入,无需关键词触发 Enabled bool `gorm:"default:true" json:"enabled"` // 是否启用 UseRegex bool `gorm:"default:false" json:"useRegex"` // 关键词用正则表达式 CaseSensitive bool `gorm:"default:false" json:"caseSensitive"` // 区分大小写 MatchWholeWords bool `gorm:"default:false" json:"matchWholeWords"` // 全词匹配 Selective bool `gorm:"default:false" json:"selective"` // 是否需要次要关键词 SelectiveLogic int `gorm:"default:0" json:"selectiveLogic"` // 0=AND, 1=NOT // 注入位置与优先级 Position int `gorm:"default:1" json:"position"` // 0=系统提示词前, 1=系统提示词后, 4=指定深度 Depth int `gorm:"default:4" json:"depth"` // position=4 时生效 Order int `gorm:"default:100" json:"order"` // 同位置时的排序 // 概率与触发控制(SillyTavern 兼容字段) Probability int `gorm:"default:100" json:"probability"` // 触发概率 0-100 ScanDepth int `gorm:"default:2" json:"scanDepth"` // 扫描最近 N 条消息(0=全部) GroupID string `gorm:"type:varchar(100)" json:"groupId"` // 条目分组 // 扩展字段 Extensions datatypes.JSON `gorm:"type:jsonb" json:"extensions"` } func (WorldbookEntry) TableName() string { return "worldbook_entries" }