7c09f5a871
New JobProviderEntity persists provider config (name, URL template, link filter, initial keywords, max results, display order) in the DB instead of appsettings. Migration seeds three disabled defaults: ejobs.ro, bestjobs.eu, and linkedin.com. Closes #35 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
1.5 KiB
C#
34 lines
1.5 KiB
C#
namespace CvSearch.Data.Entities;
|
|
|
|
/// <summary>
|
|
/// Persisted job-board provider configuration. Stored in <c>cvSearch.JobProviders</c>.
|
|
/// Providers are loaded from here at session-creation time and snapshotted into
|
|
/// <c>JobSearchSessionEntity.ProviderConfigJson</c> so runtime config changes do not
|
|
/// affect already-queued sessions.
|
|
/// </summary>
|
|
public sealed class JobProviderEntity
|
|
{
|
|
public int Id { get; set; }
|
|
|
|
/// <summary>Display name (e.g. "ejobs.ro").</summary>
|
|
public string Name { get; set; } = string.Empty;
|
|
|
|
/// <summary>When false the provider is skipped at session-creation and the job-search link is hidden.</summary>
|
|
public bool Enabled { get; set; }
|
|
|
|
/// <summary>URL template with <c>{keywords}</c> placeholder (URL-encoded keywords are substituted at runtime).</summary>
|
|
public string SearchUrlTemplate { get; set; } = string.Empty;
|
|
|
|
/// <summary>Substring that must appear in an anchor href to pass the stage-1 link filter.</summary>
|
|
public string JobLinkContains { get; set; } = string.Empty;
|
|
|
|
/// <summary>JSON array of baseline keywords merged with CV keywords before building the search URL.</summary>
|
|
public string InitialKeywordsJson { get; set; } = "[]";
|
|
|
|
/// <summary>Maximum number of job URLs to collect from this provider per session.</summary>
|
|
public int MaxResults { get; set; } = 20;
|
|
|
|
/// <summary>Controls display ordering in future admin UIs.</summary>
|
|
public int DisplayOrder { get; set; }
|
|
}
|