< Summary

Information
Class: Orchestrator.Commands.Operations.RandomMatch.RandomMatchSettings
Assembly: Orchestrator
File(s): /home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Commands/Operations/RandomMatch/RandomMatchSettings.cs
Line coverage
60%
Covered lines: 3
Uncovered lines: 2
Coverable lines: 5
Total lines: 67
Line coverage: 60%
Branch coverage
50%
Covered branches: 2
Total branches: 4
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Validate()50%5460%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Commands/Operations/RandomMatch/RandomMatchSettings.cs

#LineLine coverage
 1using System.ComponentModel;
 2using EHonda.KicktippAi.Core;
 3using Spectre.Console;
 4using Spectre.Console.Cli;
 5
 6#pragma warning disable CA1822 // these properties follow the Spectre.Console.Cli CommandSettings pattern
 7
 8namespace Orchestrator.Commands.Operations.RandomMatch;
 9
 10public class RandomMatchSettings : CommandSettings
 11{
 12    [CommandArgument(0, "<MODEL>")]
 13    [Description("The OpenAI model to use for prediction")]
 14    public string? Model { get; set; }
 15
 16    [CommandOption("-c|--community")]
 17    [Description("The Kicktipp community to use (e.g., ehonda-test-buli)")]
 18    public required string Community { get; set; }
 19
 20    [CommandOption("--community-context")]
 21    [Description("The community context for filtering predictions (defaults to community name if not specified)")]
 22    public string? CommunityContext { get; set; }
 23
 24    [CommandOption("--competition")]
 25    [Description("Competition identifier (defaults from community, e.g., fifa-world-cup-2026 for ehonda-dev-wm26)")]
 26    public string? Competition { get; set; }
 27
 28    [CommandOption("--reasoning-effort")]
 29    [Description("Optional OpenAI reasoning effort (none, minimal, low, medium, high, xhigh)")]
 30    public string? ReasoningEffort { get; set; }
 31
 32    [CommandOption("--prompt-source")]
 33    [Description("Prompt source to use: local or langfuse")]
 34    public string? PromptSource { get; set; }
 35
 36    [CommandOption("--langfuse-prompt-name")]
 37    [Description("Langfuse hosted prompt name when --prompt-source langfuse is used")]
 38    public string? LangfusePromptName { get; set; }
 39
 40    [CommandOption("--langfuse-prompt-label")]
 41    [Description("Langfuse hosted prompt label when --prompt-source langfuse is used")]
 42    public string? LangfusePromptLabel { get; set; }
 43
 44    [CommandOption("--langfuse-prompt-version")]
 45    [Description("Optional Langfuse hosted prompt version when --prompt-source langfuse is used")]
 46    public int? LangfusePromptVersion { get; set; }
 47
 48    [CommandOption("--with-justification")]
 49    [Description("Include model justification text alongside predictions")]
 50    [DefaultValue(false)]
 51    public bool WithJustification { get; set; }
 52
 53    public override ValidationResult Validate()
 54    {
 155        if (string.IsNullOrWhiteSpace(Model))
 56        {
 057            return ValidationResult.Error("MODEL is required");
 58        }
 59
 160        if (!PredictionModelConfig.IsValidReasoningEffort(ReasoningEffort))
 61        {
 062            return ValidationResult.Error("--reasoning-effort must be one of: none, minimal, low, medium, high, xhigh");
 63        }
 64
 165        return ValidationResult.Success();
 66    }
 67}

Methods/Properties

Validate()