Reprocess: SEO-safe applicants-only default (don't churn indexed shift/job URLs)
Reprocess deletes+rebuilds aggregated listings, which changes their IDs. Shift/Job detail pages are indexed and in the sitemap, so churning them would 404 ranked URLs. «آماده به کار» pages are NoIndex + Disallow, so rebuilding them has zero SEO impact — and that's where all the duplicate/sprawl problems were. ReprocessAsync(talentOnly: true) now only deletes/rebuilds TalentListings and skips non-talent raws (leaving shift/job listings + their RawListing links untouched). Admin button relabelled «پردازش مجددِ آماده به کارها (امن برای SEO)». Shifts/jobs self-clean via normal ingestion turnover. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -49,13 +49,13 @@
|
||||
کش حذف تکراری و آگهیهای جمعآوریشده پاک و از نو با AI پردازش میشوند. (آگهیهای مراکز حذف نمیشوند.)
|
||||
</p>
|
||||
|
||||
<form method="post" onsubmit="return confirm('آگهیهای منتشرشده از جمعآوری حذف و از روی متنِ خامِ ذخیرهشده (بدون واکشی مجدد) دوباره با هوش مصنوعی پردازش میشوند — برای پاکسازی دادههای موجود (حذف موارد تکراری، اصلاح نقش/گروه/تگ). هیچ آیتمی از دست نمیرود. در پسزمینه اجرا میشود. ادامه؟');">
|
||||
<form method="post" onsubmit="return confirm('آگهیهای «آماده به کار» از روی متنِ خامِ ذخیرهشده (بدون واکشی) دوباره با هوش مصنوعی پردازش میشوند — برای پاکسازی (حذف موارد تکراری، اصلاح نقش/گروه/تگ، افزودن موقعیت تقریبی). شیفت/استخدام دستنخورده میمانند (برای حفظ SEO). هیچ آیتمی از دست نمیرود. در پسزمینه اجرا میشود. ادامه؟');">
|
||||
<button type="submit" asp-page-handler="ReprocessStored" class="btn btn-primary btn-block" style="margin-top:10px;">
|
||||
🧹 پردازش مجددِ آیتمهای ذخیرهشده (بدون واکشی)
|
||||
🧹 پردازش مجددِ «آماده به کار»ها (امن برای SEO)
|
||||
</button>
|
||||
</form>
|
||||
<p class="muted" style="font-size:11px; margin:6px 0 0;">
|
||||
توصیهشده برای پاکسازیِ دادههای فعلی: متنِ خام نگه داشته میشود و فقط آگهیها با منطقِ جدید (یکنفر=یکآگهی، نقش پایه، گروه ثابت، تگ تمیز) بازساخته میشوند.
|
||||
توصیهشده برای پاکسازیِ آمادهبهکارها: متنِ خام نگه داشته میشود و فقط با منطقِ جدید (یکنفر=یکآگهی، نقش پایه، گروه ثابت، تگ تمیز، موقعیت تقریبی) بازساخته میشوند. صفحاتِ «آماده به کار» ایندکس نمیشوند، پس آدرسِ ایندکسشدهای تغییر نمیکند؛ شیفت/استخدام بهمرور با ایمیجستِ تازه پاک میشوند.
|
||||
</p>
|
||||
|
||||
<hr style="border:none; border-top:1px solid var(--line); margin:16px 0;" />
|
||||
|
||||
@@ -111,7 +111,9 @@ public class IndexModel : PageModel
|
||||
using var scope = _scopes.CreateScope();
|
||||
var svc = scope.ServiceProvider.GetRequiredService<IngestionService>();
|
||||
var log = scope.ServiceProvider.GetRequiredService<ILogger<IndexModel>>();
|
||||
try { await svc.ReprocessAsync(); }
|
||||
// talentOnly: «آماده به کار» is NoIndex/Disallow → rebuilding it doesn't churn any indexed
|
||||
// URL. Shift/Job detail pages ARE indexed, so they're left to self-clean via turnover.
|
||||
try { await svc.ReprocessAsync(talentOnly: true); }
|
||||
catch (Exception ex) { log.LogError(ex, "Background reprocess failed"); }
|
||||
});
|
||||
IngestMessage = "پردازش مجدد آیتمهای ذخیرهشده در پسزمینه آغاز شد. نتیجه پس از اتمام در «تاریخچهٔ اجرا» نمایش داده میشود (بسته به تعداد آیتمها و سرعت هوش مصنوعی، چند دقیقه طول میکشد).";
|
||||
|
||||
Reference in New Issue
Block a user