Raxol.Adaptive.FeedbackLoop (Raxol v2.3.0)

View Source

Tracks pilot accept/reject decisions on layout recommendations.

Maintains a feedback history and computes acceptance accuracy. Rule-based mode -- force_retrain/1 is a stub for future Nx integration.

Summary

Types

feedback()

@type feedback() :: %{
  recommendation_id: binary(),
  decision: :accepted | :rejected,
  timestamp: integer()
}

t()

@type t() :: %Raxol.Adaptive.FeedbackLoop{
  accuracy_window: pos_integer(),
  feedback_history: [feedback()],
  pending_recommendations: %{required(binary()) => map()},
  training_examples: [{term(), term()}]
}

Functions

accept(server \\ __MODULE__, recommendation_id)

@spec accept(GenServer.server(), binary()) :: :ok | {:error, :not_found}

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

force_retrain(server \\ __MODULE__)

@spec force_retrain(GenServer.server()) ::
  {:ok, :rule_based_mode} | {:ok, :trained, map()} | {:ok, :insufficient_data}

get_accuracy(server \\ __MODULE__)

@spec get_accuracy(GenServer.server()) :: float()

get_history(server \\ __MODULE__, count \\ 20)

@spec get_history(GenServer.server(), pos_integer()) :: [feedback()]

reject(server \\ __MODULE__, recommendation_id)

@spec reject(GenServer.server(), binary()) :: :ok | {:error, :not_found}

start_link(opts \\ [])

@spec start_link(keyword()) :: GenServer.on_start()

submit_recommendation(server \\ __MODULE__, recommendation)

@spec submit_recommendation(GenServer.server(), map()) :: :ok