Divar geo-coords to facility map + medical gate + RawListing FK/geo migrations
This commit is contained in:
@@ -65,6 +65,35 @@ public class IndexModel : PageModel
|
||||
return RedirectToPage();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DESTRUCTIVE rebuild, in two distinct deletes:
|
||||
/// 1. The DEDUPE CACHE — ALL RawListings, including any added via «افزودن دستی». These are not
|
||||
/// published content; they're the crawl/staging rows whose ContentHash blocks re-ingesting
|
||||
/// the same ad. Wiping them lets everything be re-fetched and re-judged by the AI.
|
||||
/// 2. AGGREGATED listings only — Shifts/JobOpenings/TalentListings with Source==Aggregated, i.e.
|
||||
/// produced by ingestion. Employer/admin-posted listings (Source==Direct) are left untouched.
|
||||
/// Then re-fetch everything and re-run it through the (now AI-enabled) pipeline.
|
||||
/// RawListings are deleted first so their LinkedShift/LinkedTalent FKs (SetNull) don't dangle;
|
||||
/// DB cascade clears ContactMethods / Applications / InterestEvents when the posts are deleted.
|
||||
/// </summary>
|
||||
public async Task<IActionResult> OnPostPurgeAndReingestAsync()
|
||||
{
|
||||
int rawCount, shifts, jobs, talent;
|
||||
await using (var tx = await _db.Database.BeginTransactionAsync())
|
||||
{
|
||||
rawCount = await _db.RawListings.ExecuteDeleteAsync(); // clear dedupe cache
|
||||
shifts = await _db.Shifts.Where(s => s.Source == ShiftSource.Aggregated).ExecuteDeleteAsync();
|
||||
jobs = await _db.JobOpenings.Where(j => j.Source == ShiftSource.Aggregated).ExecuteDeleteAsync();
|
||||
talent = await _db.TalentListings.Where(t => t.Source == ShiftSource.Aggregated).ExecuteDeleteAsync();
|
||||
await tx.CommitAsync();
|
||||
}
|
||||
|
||||
var s = await _ingest.RunAsync(); // fresh fetch → AI audit → publish/queue
|
||||
IngestMessage = $"پاکسازی شد (حذف: {rawCount} آیتم کش، {shifts} شیفت، {jobs} استخدام، {talent} آمادهبهکارِ جمعآوریشده). " +
|
||||
$"جمعآوری مجدد: {s.TotalPublished} منتشر، {s.TotalQueued} در صف، {s.TotalFlagged} پرچم، {s.TotalSpam} اسپم، {s.TotalDuplicates} تکراری.";
|
||||
return RedirectToPage();
|
||||
}
|
||||
|
||||
private async Task LoadAsync()
|
||||
{
|
||||
Queue = await _db.RawListings
|
||||
|
||||
Reference in New Issue
Block a user