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;
}
///
/// Runtime DTO for a job provider. Populated from cvSearch.JobProviders at session-creation
/// time and snapshotted to JobSearchSessionEntity.ProviderConfigJson.
///
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 InitialKeywords { get; set; } = [];
public int MaxResults { get; set; } = 20;
/// When true the scraper uses a headless Chromium browser to render JS-heavy pages.
public bool UseHeadlessBrowser { get; set; }
///
/// 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.
///
public bool RequireKeywordInAnchor { get; set; } = true;
}