3c08c1a265
- AppSetting gains source config: AutoIngestEnabled, IngestIntervalMinutes, Telegram/Bale/Divar enabled+channels/token/queries - IListingSource.FetchAsync(AppSetting) — sources read config from DB, not IOptions/appsettings; sample source dev-only - IngestionWorker reads AutoIngest+interval from DB each cycle (toggle at runtime, no redeploy) - /Admin/Settings gets a 'منابع جمعآوری' section; removed Ingestion env/appsettings + compose env vars - ENV_FILE shrinks to HOST_PORT + POSTGRES_* + ADMIN_PHONE (AI + sources are all in-admin); migration Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
34 lines
1.9 KiB
C#
34 lines
1.9 KiB
C#
using JobsMedical.Web.Models;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace JobsMedical.Web.Services.Scraping;
|
|
|
|
/// <summary>
|
|
/// Built-in representative Persian posts (good, incomplete, and spam) so the whole pipeline can be
|
|
/// demoed. Only active in Development — never injects sample data into production.
|
|
/// </summary>
|
|
public class SampleListingSource : IListingSource
|
|
{
|
|
private readonly IHostEnvironment _env;
|
|
public SampleListingSource(IHostEnvironment env) => _env = env;
|
|
|
|
public string Name => "نمونه (کانال آزمایشی)";
|
|
|
|
private static readonly string[] Posts =
|
|
{
|
|
"درمانگاه شبانهروزی در سعادتآباد نیازمند پزشک عمومی برای شیفت شب، کارانه ۳ میلیون تومان. تماس ۰۹۱۲۳۴۵۶۷۸۹",
|
|
"کلینیک تخصصی در تهران به پرستار خانم برای شیفت عصر نیازمند است، ۵۰٪ سهم درآمد. ۰۹۳۵۱۱۱۲۲۳۳",
|
|
"استخدام ماما تماموقت در بیمارستان خصوصی، حقوق توافقی. منطقه شهرک غرب.",
|
|
"نیازمند تکنسین اتاق عمل آقا جهت همکاری در نارمک، شیفت صبح. ۰۹۱۲۰۰۰۰۰۰۰",
|
|
"فروش فالوور و بک لینک ارزان، سرمایه گذاری در ارز دیجیتال با سود تضمینی!",
|
|
"پزشک",
|
|
"بیمارستان آتیه جهت تکمیل کادر درمان به پزشک عمومی مقیم نیازمند است. قرارداد یکساله، حقوق ۴۵ میلیون ماهانه. تهرانپارس.",
|
|
};
|
|
|
|
public Task<IReadOnlyList<ScrapedItem>> FetchAsync(AppSetting settings, CancellationToken ct = default)
|
|
=> Task.FromResult<IReadOnlyList<ScrapedItem>>(
|
|
_env.IsDevelopment()
|
|
? Posts.Select(p => new ScrapedItem(Name, p)).ToList()
|
|
: Array.Empty<ScrapedItem>());
|
|
}
|