save progress

This commit is contained in:
StellaOps Bot
2025-12-18 09:10:36 +02:00
parent b4235c134c
commit 28823a8960
169 changed files with 11995 additions and 449 deletions

View File

@@ -0,0 +1,47 @@
using System;
using StellaOps.Signals.Models;
namespace StellaOps.Signals.Options;
/// <summary>
/// Gate multiplier configuration in basis points (10000 = 100%).
/// </summary>
public sealed class SignalsGateMultiplierOptions
{
public int AuthRequiredMultiplierBps { get; set; } = 3000;
public int FeatureFlagMultiplierBps { get; set; } = 2000;
public int AdminOnlyMultiplierBps { get; set; } = 1500;
public int NonDefaultConfigMultiplierBps { get; set; } = 5000;
public int MinimumMultiplierBps { get; set; } = 500;
public int GetMultiplierBps(CallgraphGateType gateType) => gateType switch
{
CallgraphGateType.AuthRequired => AuthRequiredMultiplierBps,
CallgraphGateType.FeatureFlag => FeatureFlagMultiplierBps,
CallgraphGateType.AdminOnly => AdminOnlyMultiplierBps,
CallgraphGateType.NonDefaultConfig => NonDefaultConfigMultiplierBps,
_ => 10000
};
public void Validate()
{
EnsureBps(nameof(AuthRequiredMultiplierBps), AuthRequiredMultiplierBps);
EnsureBps(nameof(FeatureFlagMultiplierBps), FeatureFlagMultiplierBps);
EnsureBps(nameof(AdminOnlyMultiplierBps), AdminOnlyMultiplierBps);
EnsureBps(nameof(NonDefaultConfigMultiplierBps), NonDefaultConfigMultiplierBps);
EnsureBps(nameof(MinimumMultiplierBps), MinimumMultiplierBps);
}
private static void EnsureBps(string name, int value)
{
if (value < 0 || value > 10000)
{
throw new ArgumentOutOfRangeException(name, value, "Value must be between 0 and 10000.");
}
}
}