namespace CvMatcher.Models.Settings;

public sealed class JobSearchSettings
{
    public bool Enabled { get; set; } = true;
    public string JobSearchLinkBaseUrl { get; set; } = string.Empty;
    public int TokenExpiryDays { get; set; } = 7;
    public int MinMatchScore { get; set; } = 15;
    public int MaxJobsToMatch { get; set; } = 15;
}

/// <summary>
/// Runtime DTO for a job provider. Populated from <c>cvSearch.JobProviders</c> at session-creation
/// time and snapshotted to <c>JobSearchSessionEntity.ProviderConfigJson</c>.
/// </summary>
public sealed class JobProviderConfig
{
    public string Name { get; set; } = string.Empty;
    public bool Enabled { get; set; } = true;
    public string SearchUrlTemplate { get; set; } = string.Empty;
    public string JobLinkContains { get; set; } = string.Empty;
    public List<string> InitialKeywords { get; set; } = [];
    public int MaxResults { get; set; } = 20;
    /// <summary>
    /// When false, the Stage 2 anchor-text keyword filter is skipped.
    /// Set to false for providers whose search URL already filters by relevance server-side.
    /// </summary>
    public bool RequireKeywordInAnchor { get; set; } = true;
}
