[Demo] Add admin demo-mode toggle + generic website ingest source
- AppSetting: DemoMode, WebsitesEnabled, WebsiteUrls - Facility.IsDemo flag; SeedData split into SeedReferenceAsync (always) + SeedDemoAsync/ClearDemoAsync (idempotent, toggleable at runtime) - WebsiteListingSource: scrape any admin-configured URL (og:title + content) - Admin Settings: seed/clear demo card, demo-mode checkbox, website source fields; Program.cs seeds demo when DemoMode on (or in Development) - EF migration DemoModeAndWebsites Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -50,6 +50,8 @@ builder.Services.AddSingleton<JobsMedical.Web.Services.Scraping.IListingSource,
|
||||
JobsMedical.Web.Services.Scraping.DivarListingSource>();
|
||||
builder.Services.AddSingleton<JobsMedical.Web.Services.Scraping.IListingSource,
|
||||
JobsMedical.Web.Services.Scraping.MedjobsListingSource>();
|
||||
builder.Services.AddSingleton<JobsMedical.Web.Services.Scraping.IListingSource,
|
||||
JobsMedical.Web.Services.Scraping.WebsiteListingSource>();
|
||||
builder.Services.AddScoped<JobsMedical.Web.Services.Scraping.ListingArchiver>();
|
||||
builder.Services.AddScoped<JobsMedical.Web.Services.Scraping.IngestionService>();
|
||||
builder.Services.AddHostedService<JobsMedical.Web.Services.Scraping.IngestionWorker>();
|
||||
@@ -79,8 +81,11 @@ using (var scope = app.Services.CreateScope())
|
||||
{
|
||||
var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
|
||||
db.Database.Migrate();
|
||||
// Production seeds reference data only (no demo facilities/shifts); dev seeds the full board.
|
||||
await SeedData.EnsureSeededAsync(db, app.Environment.IsDevelopment());
|
||||
await SeedData.SeedReferenceAsync(db); // cities/roles/districts always
|
||||
// Demo board in Development, or whenever the admin has turned Demo Mode on.
|
||||
var st = await scope.ServiceProvider
|
||||
.GetRequiredService<JobsMedical.Web.Services.Scraping.SettingsService>().GetAsync();
|
||||
if (app.Environment.IsDevelopment() || st.DemoMode) await SeedData.SeedDemoAsync(db);
|
||||
// Archive any listings that went stale while the app was down.
|
||||
await scope.ServiceProvider
|
||||
.GetRequiredService<JobsMedical.Web.Services.Scraping.ListingArchiver>()
|
||||
|
||||
Reference in New Issue
Block a user