2025-04-10 08:16:31 -07:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module DiscourseAi
|
|
|
|
module Admin
|
|
|
|
class AiFeaturesController < ::Admin::AdminController
|
|
|
|
requires_plugin ::DiscourseAi::PLUGIN_NAME
|
|
|
|
|
|
|
|
def index
|
|
|
|
render json: serialize_features(DiscourseAi::Features.features)
|
|
|
|
end
|
|
|
|
|
|
|
|
def edit
|
|
|
|
raise Discourse::InvalidParameters.new(:id) if params[:id].blank?
|
2025-06-09 16:13:09 -03:00
|
|
|
render json: serialize_module(DiscourseAi::Features.find_module_by_id(params[:id].to_i))
|
2025-04-10 08:16:31 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
2025-06-09 16:13:09 -03:00
|
|
|
def serialize_features(modules)
|
|
|
|
modules.map { |a_module| serialize_module(a_module) }
|
2025-04-10 08:16:31 -07:00
|
|
|
end
|
|
|
|
|
2025-06-09 16:13:09 -03:00
|
|
|
def serialize_module(a_module)
|
|
|
|
return nil if a_module.blank?
|
2025-04-10 08:16:31 -07:00
|
|
|
|
2025-06-09 16:13:09 -03:00
|
|
|
a_module.merge(
|
|
|
|
features:
|
|
|
|
a_module[:features].map { |f| f.merge(persona: serialize_persona(f[:persona])) },
|
|
|
|
)
|
2025-04-10 08:16:31 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
def serialize_persona(persona)
|
|
|
|
return nil if persona.blank?
|
|
|
|
|
|
|
|
serialize_data(persona, AiFeaturesPersonaSerializer, root: false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|