Add iranestekhdam.ir as an ingestion source (clinical job ads at named facilities)
New IranEstekhdamListingSource: reads the site monthly ad sitemaps (sitemap-ads.xml -> sitemap-ads-YYYY-M.xml), keeps only ad URLs whose Persian slug names a clinical role (veterinary/non-clinical excluded), then extracts each ad title + description (+ phone). These are employer ads at NAMED facilities, so they directly improve the unknown-facility problem the classifieds content has. Wired in like Medjobs: AppSetting toggles (IranEstekhdamEnabled/MaxAds/UseProxy) + EF migration, SettingsService persistence, admin Settings UI, and DI registration. Off by default; the medical-gate validator + AI auditor + junk filters screen results downstream. Note: e-estekhdam / jobinja / jobvision are JS-rendered SPAs whose ad lists are not in static HTML, so they need API reverse-engineering (a separate effort), not this static-scrape path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+1644
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,51 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace JobsMedical.Web.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class IranEstekhdamSource : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "IranEstekhdamEnabled",
|
||||
table: "AppSettings",
|
||||
type: "boolean",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "IranEstekhdamMaxAds",
|
||||
table: "AppSettings",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 40);
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "IranEstekhdamUseProxy",
|
||||
table: "AppSettings",
|
||||
type: "boolean",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "IranEstekhdamEnabled",
|
||||
table: "AppSettings");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "IranEstekhdamMaxAds",
|
||||
table: "AppSettings");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "IranEstekhdamUseProxy",
|
||||
table: "AppSettings");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,6 +103,15 @@ namespace JobsMedical.Web.Migrations
|
||||
.HasMaxLength(1000)
|
||||
.HasColumnType("character varying(1000)");
|
||||
|
||||
b.Property<bool>("IranEstekhdamEnabled")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<int>("IranEstekhdamMaxAds")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<bool>("IranEstekhdamUseProxy")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<bool>("MedjobsEnabled")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user