using JobsMedical.Web.Models;
namespace JobsMedical.Web.Services.Scraping;
/// One raw post pulled from a source (a Telegram message, a Divar ad, etc.).
public record ScrapedItem(string Source, string RawText, string? SourceUrl = null);
///
/// A pluggable source the ingestion engine pulls from. Configuration (enabled, channels, tokens)
/// comes from the DB-backed passed in — set in the admin panel, not env.
/// A disabled/unconfigured source returns an empty list.
///
public interface IListingSource
{
string Name { get; }
Task> FetchAsync(AppSetting settings, CancellationToken ct = default);
}