package model

// GetMissingModels returns model names that are referenced in the system
func GetMissingModels() ([]string, error) {
    // 1. 获取所有已启用模型（去重）
    models := GetEnabledModels()
    if len(models) == 0 {
        return []string{}, nil
    }

    // 2. 查询已有的元数据模型名
    var existing []string
    if err := DB.Model(&Model{}).Where("model_name IN ?", models).Pluck("model_name", &existing).Error; err != nil {
        return nil, err
    }

    existingSet := make(map[string]struct{}, len(existing))
    for _, e := range existing {
        existingSet[e] = struct{}{}
    }

    // 3. 收集缺失模型
    var missing []string
    for _, name := range models {
        if _, ok := existingSet[name]; !ok {
            missing = append(missing, name)
        }
    }
    return missing, nil
}
