< Summary

Information
Class: Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchBaseSettings
Assembly: Orchestrator
File(s): /home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Commands/Observability/AnalyzeMatch/AnalyzeMatchSettings.cs
Line coverage
95%
Covered lines: 21
Uncovered lines: 1
Coverable lines: 22
Total lines: 95
Line coverage: 95.4%
Branch coverage
91%
Covered branches: 11
Total branches: 12
Branch coverage: 91.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Model()100%11100%
set_Model(...)100%11100%
.ctor()100%11100%
get_CommunityContext()100%11100%
set_CommunityContext(...)100%11100%
get_HomeTeam()100%11100%
set_HomeTeam(...)100%11100%
get_AwayTeam()100%11100%
set_AwayTeam(...)100%11100%
get_Matchday()100%11100%
set_Matchday(...)100%11100%
get_Runs()100%11100%
set_Runs(...)100%11100%
get_Verbose()100%11100%
set_Verbose(...)100%11100%
get_ShowContextDocuments()100%11100%
set_ShowContextDocuments(...)100%11100%
get_Debug()100%11100%
set_Debug(...)100%11100%
Validate()91.67%121292.31%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Commands/Observability/AnalyzeMatch/AnalyzeMatchSettings.cs

#LineLine coverage
 1using System.ComponentModel;
 2using Spectre.Console;
 3using Spectre.Console.Cli;
 4
 5namespace Orchestrator.Commands.Observability.AnalyzeMatch;
 6
 7public class AnalyzeMatchBaseSettings : CommandSettings
 8{
 9    [CommandArgument(0, "<MODEL>")]
 10    [Description("The OpenAI model to use for prediction (e.g., gpt-4o-mini, o4-mini)")]
 111    public string Model { get; set; } = string.Empty;
 12
 13    [CommandOption("--community-context")]
 14    [Description("The Kicktipp community identifier used for both schedule lookups and context documents")]
 115    public string CommunityContext { get; set; } = string.Empty;
 16
 17    [CommandOption("--home")]
 18    [Description("Home team name")]
 119    public string HomeTeam { get; set; } = string.Empty;
 20
 21    [CommandOption("--away")]
 22    [Description("Away team name")]
 123    public string AwayTeam { get; set; } = string.Empty;
 24
 25    [CommandOption("--matchday")]
 26    [Description("Matchday number for the selected match")]
 127    public int? Matchday { get; set; }
 28
 29    [CommandOption("-n|--runs")]
 30    [Description("Number of runs to execute")]
 31    [DefaultValue(3)]
 132    public int Runs { get; set; } = 3;
 33
 34    [CommandOption("--verbose")]
 35    [Description("Enable verbose output for context retrieval")]
 36    [DefaultValue(false)]
 137    public bool Verbose { get; set; }
 38
 39    [CommandOption("--show-context-documents")]
 40    [Description("Print the list of loaded context documents")]
 41    [DefaultValue(false)]
 142    public bool ShowContextDocuments { get; set; }
 43
 44    [CommandOption("--debug")]
 45    [Description("Enable detailed logging output")]
 46    [DefaultValue(false)]
 147    public bool Debug { get; set; }
 48
 49    public override ValidationResult Validate()
 50    {
 151        if (string.IsNullOrWhiteSpace(Model))
 52        {
 053            return ValidationResult.Error("Model is required");
 54        }
 55
 156        if (string.IsNullOrWhiteSpace(CommunityContext))
 57        {
 158            return ValidationResult.Error("--community-context is required");
 59        }
 60
 161        if (string.IsNullOrWhiteSpace(HomeTeam))
 62        {
 163            return ValidationResult.Error("--home must be provided");
 64        }
 65
 166        if (string.IsNullOrWhiteSpace(AwayTeam))
 67        {
 168            return ValidationResult.Error("--away must be provided");
 69        }
 70
 171        if (!Matchday.HasValue)
 72        {
 173            return ValidationResult.Error("--matchday must be provided");
 74        }
 75
 176        if (Runs <= 0)
 77        {
 178            return ValidationResult.Error("--runs must be greater than 0");
 79        }
 80
 181        return ValidationResult.Success();
 82    }
 83}
 84
 85public class AnalyzeMatchDetailedSettings : AnalyzeMatchBaseSettings
 86{
 87    [CommandOption("--no-live-estimates")]
 88    [Description("Disable live cost and time estimates during execution")]
 89    [DefaultValue(false)]
 90    public bool NoLiveEstimates { get; set; }
 91}
 92
 93public class AnalyzeMatchComparisonSettings : AnalyzeMatchBaseSettings
 94{
 95}