mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 23:38:35 +08:00
8938ecabc2
* FEATURE: Content custom summarization strategies. This PR establishes a pattern for plugins to register alternative ways of summarizing content by extending a class that defines an interface. Core controls which strategy we'll use and who has access to it through the `summarization_strategy` and `custom_summarization_allowed_groups`. It also defines the UI for summarizing topics. Other plugins can access this summarization mechanism and implement their features, removing cross-plugin customizations, as it currently happens between chat and the discourse-ai plugin. * Group membership validation and rate limiting * Work with objects instead of classes * Port summarization feature from discourse-ai to chat * Rename available summaries to 'Top Replies' and 'Summary'
17 lines
333 B
Ruby
17 lines
333 B
Ruby
# frozen_string_literal: true
|
|
|
|
require "enum_site_setting"
|
|
|
|
class SummarizationStrategy < EnumSiteSetting
|
|
def self.valid_value?(val)
|
|
true
|
|
end
|
|
|
|
def self.values
|
|
@values ||=
|
|
Summarization::Base.available_strategies.map do |strategy|
|
|
{ name: strategy.display_name, value: strategy.model }
|
|
end
|
|
end
|
|
end
|