Applicants: auto-tags + deep search w/ highlight; never delete (archive instead)
CI/CD / CI · dotnet build (push) Successful in 2m1s
CI/CD / Deploy · hamkadr (push) Successful in 2m36s

- Tags: parser extracts cert/skill keywords (mmt, ICU/CCU, دیالیز, اتاق عمل,
  اورژانس, مسئول فنی, پروانه‌دار…) + role + city into TalentListing.Tags
  (+ migration); shown as chips on cards.
- Deep search on /Talent: «جستجوی عمیق» box does Postgres ILIKE across
  tags, description, person, area, role, city (every term must match);
  matches are highlighted with <mark> via SearchHighlight.
- Never delete: ShiftStatus.Archived + the admin «بایگانی گروهی» action now
  ARCHIVES aggregated posts (hidden from site, kept in DB) and leaves the
  raw crawl rows intact — a permanent archive for future analytics.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-08 11:25:32 +03:30
parent e4dc5180ad
commit 6b657c7795
15 changed files with 1752 additions and 22 deletions
@@ -12,10 +12,13 @@
? (Model.Role?.Name ?? "آماده به کار")
: Model.PersonName!;
var area = Model.District?.Name ?? Model.AreaNote;
var q = ViewData["q"] as string;
var tags = (Model.Tags ?? "").Split(' ', StringSplitOptions.RemoveEmptyEntries)
.Where(t => t != Model.Role?.Name && t != Model.City?.Name).Distinct().Take(6).ToList();
}
<a class="card card-pad shift-card" asp-page="/Talent/Details" asp-route-id="@Model.Id">
<div class="row" style="justify-content: space-between;">
<span class="facility">@heading</span>
<span class="facility">@JobsMedical.Web.Services.SearchHighlight.Mark(heading, q)</span>
<span class="badge badge-talent">آماده به کار</span>
</div>
<div class="row">
@@ -37,6 +40,15 @@
}
</div>
<div class="row">📍 @Model.City?.Name@(area is not null ? "، " + area : "")</div>
@if (tags.Count > 0)
{
<div class="tag-chips">
@foreach (var tg in tags)
{
<span class="tag-chip">@JobsMedical.Web.Services.SearchHighlight.Mark(tg, q)</span>
}
</div>
}
<div class="foot">
<span class="pay">@comp</span>
<span class="btn btn-outline" style="padding: 6px 14px;">مشاهده و تماس</span>