Collapse the sprawling role taxonomy (dedupe/compound/typo merge)
The dynamic taxonomy minted ~150 roles incl. exact triplicates («پرستار کودک» x3), multi-role compounds («پرستار و بهیار»، «ماما / پرستار»، «پزشک و پرستار و بهیار»), and typos («بیهیار»، «بیار»). Creation hardening: ResolveOrCreateRole now collapses a compound to its FIRST base role when that segment is a known role (so «پرستار و بهیار»→«پرستار», but specialty names like «قلب و عروق»/«پوست و مو» are left whole), and new aliases fold typos/synonyms (بیهیار/بیار→بهیار، فیزیوتراپ→فیزیوتراپیست، نسخه پیچ→تکنسین داروخانه، پرستار بچه/اطفال→پرستار کودک). Cleanup: MergeDuplicateRolesAsync (+ admin button) maps every role to a canonical form and merges same-canonical roles into one keeper, repointing all shifts/jobs/talent/preferences/alerts/profiles first (mirrors the manual /Admin/Roles merge). Combined with the no-fan-out change this should cut the dropdown to a clean base set. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -173,6 +173,15 @@ public class IndexModel : PageModel
|
||||
return RedirectToPage();
|
||||
}
|
||||
|
||||
/// <summary>Auto-merge duplicate/compound/typo roles minted by the dynamic taxonomy
|
||||
/// («پرستار کودک» ×3، «پرستار و بهیار»، «بیهیار»→بهیار), repointing all listings first.</summary>
|
||||
public async Task<IActionResult> OnPostMergeRolesAsync()
|
||||
{
|
||||
var n = await _ingest.MergeDuplicateRolesAsync();
|
||||
IngestMessage = $"پاکسازی نقشها: {n} نقشِ تکراری/ترکیبی/غلطاملایی در نقشهای اصلی ادغام شد (آگهیهایشان منتقل شد). فهرست نقشها اکنون تمیزتر است.";
|
||||
return RedirectToPage();
|
||||
}
|
||||
|
||||
private async Task LoadAsync(int q = 1, int f = 1)
|
||||
{
|
||||
QueueTotal = await _db.RawListings.CountAsync(r => r.Status == RawListingStatus.New);
|
||||
|
||||
Reference in New Issue
Block a user