fix: remove legacy knowledge card tables and compatibility code
This commit is contained in:
@@ -291,47 +291,35 @@ func seedSOP(tx *gorm.DB, tenantID, userID, scenarioID uint64) error {
|
||||
return fmt.Errorf("find or create SOP: %w", err)
|
||||
}
|
||||
if err := tx.Model(&sop).Updates(map[string]interface{}{
|
||||
"description": "根据订单商品携带的症状标签展示关联症状、话术和可能疾病,辅助销售完成商品推荐并记录结果。",
|
||||
"status": "published",
|
||||
"description": "根据订单商品携带的症状标签展示关联症状、话术和可能疾病,辅助销售完成商品推荐并记录结果。",
|
||||
"status": "published",
|
||||
"start_node_key": "start",
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
var version model.SOPVersion
|
||||
err = tx.Where("sop_id = ? AND tenant_id = ?", sop.ID, tenantID).Order("version DESC").First(&version).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
version = model.SOPVersion{TenantID: tenantID, SOPID: sop.ID, Version: 1, Status: "published", StartNodeKey: "start", CreatedBy: userID}
|
||||
if err := tx.Create(&version).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
} else if err != nil {
|
||||
return err
|
||||
}
|
||||
var alreadySeeded int64
|
||||
if err := tx.Model(&model.SOPNode{}).Where(
|
||||
"sop_version_id = ? AND node_key = ? AND JSON_UNQUOTE(JSON_EXTRACT(config, '$.seed_key')) = ?",
|
||||
version.ID, "start", "pet-doctor-v16-start-presentation-optional-pet",
|
||||
"sop_id = ? AND node_key = ? AND JSON_UNQUOTE(JSON_EXTRACT(config, '$.seed_key')) = ?",
|
||||
sop.ID, "start", "pet-doctor-v16-start-presentation-optional-pet",
|
||||
).Count(&alreadySeeded).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if alreadySeeded > 0 {
|
||||
if err := tx.Model(&model.SOPVersion{}).Where("sop_id = ? AND id <> ?", sop.ID, version.ID).Update("status", "superseded").Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Model(&version).Updates(map[string]interface{}{"status": "published", "start_node_key": "start"}).Error
|
||||
return nil
|
||||
}
|
||||
|
||||
nodes := petNodes()
|
||||
edges := petEdges()
|
||||
if err := tx.Where("sop_version_id = ?", version.ID).Delete(&model.SOPEdge{}).Error; err != nil {
|
||||
if err := tx.Where("sop_id = ? AND tenant_id = ?", sop.ID, tenantID).Delete(&model.SOPEdge{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Where("sop_version_id = ?", version.ID).Delete(&model.SOPNode{}).Error; err != nil {
|
||||
if err := tx.Where("sop_id = ? AND tenant_id = ?", sop.ID, tenantID).Delete(&model.SOPNode{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
for index, definition := range nodes {
|
||||
configJSON, _ := json.Marshal(definition.Config)
|
||||
node := model.SOPNode{
|
||||
TenantID: tenantID, SOPVersionID: version.ID, NodeKey: definition.Key, Type: definition.Type,
|
||||
TenantID: tenantID, SOPID: sop.ID, NodeKey: definition.Key, Type: definition.Type,
|
||||
Title: definition.Title, Content: definition.Content, Config: datatypes.JSON(configJSON), PositionX: 0, PositionY: index * 120,
|
||||
}
|
||||
if err := tx.Create(&node).Error; err != nil {
|
||||
@@ -341,21 +329,13 @@ func seedSOP(tx *gorm.DB, tenantID, userID, scenarioID uint64) error {
|
||||
for _, definition := range edges {
|
||||
conditionJSON, _ := json.Marshal(definition.Condition)
|
||||
edge := model.SOPEdge{
|
||||
TenantID: tenantID, SOPVersionID: version.ID, SourceNodeKey: definition.Source, TargetNodeKey: definition.Target,
|
||||
TenantID: tenantID, SOPID: sop.ID, SourceNodeKey: definition.Source, TargetNodeKey: definition.Target,
|
||||
Condition: datatypes.JSON(conditionJSON), Priority: definition.Priority,
|
||||
}
|
||||
if err := tx.Create(&edge).Error; err != nil {
|
||||
return fmt.Errorf("create edge %s -> %s: %w", definition.Source, definition.Target, err)
|
||||
}
|
||||
}
|
||||
if err := tx.Model(&model.SOPVersion{}).Where("sop_id = ? AND id <> ?", sop.ID, version.ID).Update("status", "superseded").Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Model(&version).Updates(map[string]interface{}{
|
||||
"status": "published", "start_node_key": "start",
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
payload, _ := json.Marshal(map[string]interface{}{"scenario": "宠物医生问诊问药"})
|
||||
return tx.Create(&model.AuditLog{
|
||||
TenantID: tenantID, UserID: userID, Action: "seed", Resource: "sop", ResourceID: sop.ID, Payload: datatypes.JSON(payload),
|
||||
|
||||
Reference in New Issue
Block a user