@page @model JobsMedical.Web.Pages.Admin.IngestedModel @{ ViewData["Title"] = "نتایج جمع‌آوری"; string P(int n) => JalaliDate.ToPersianDigits(n.ToString()); int C(JobsMedical.Web.Models.RawListingStatus s) => Model.Counts.GetValueOrDefault(s); string Pill(string key, string label, int count) => $"{label} ({P(count)})"; }

نتایج جمع‌آوری

← صف بررسی — همه‌ی آگهی‌های جمع‌آوری‌شده و وضعیت هرکدام.

@Html.Raw(Pill("all", "همه", Model.Counts.Values.Sum())) @Html.Raw(Pill("new", "در صف", C(JobsMedical.Web.Models.RawListingStatus.New))) @Html.Raw(Pill("flagged", "پرچم‌خورده", C(JobsMedical.Web.Models.RawListingStatus.Flagged))) @Html.Raw(Pill("published", "منتشرشده", C(JobsMedical.Web.Models.RawListingStatus.Normalized))) @Html.Raw(Pill("discarded", "ردشده/اسپم", C(JobsMedical.Web.Models.RawListingStatus.Discarded)))

@P(Model.Total) نتیجه (نمایش حداکثر ۲۰۰ مورد اخیر).

@if (Model.Items.Count == 0) {
موردی با این فیلتر نیست.
} else { foreach (var r in Model.Items) { var (cls, label) = r.Status switch { JobsMedical.Web.Models.RawListingStatus.New => ("badge-day", "در صف"), JobsMedical.Web.Models.RawListingStatus.Flagged => ("badge-type", "پرچم‌خورده"), JobsMedical.Web.Models.RawListingStatus.Normalized => ("badge-verified", "منتشر شد"), _ => ("badge-gender", "رد شد"), };
@r.SourceChannel @label اطمینان @P(r.Confidence)٪ @JalaliDate.ToLongDate(DateOnly.FromDateTime(r.FetchedAt))

@(r.RawText.Length > 320 ? r.RawText.Substring(0,320) + "…" : r.RawText)

@if (!string.IsNullOrEmpty(r.ValidationNotes)) {

⚠ @r.ValidationNotes

} @if (r.Status == JobsMedical.Web.Models.RawListingStatus.New || r.Status == JobsMedical.Web.Models.RawListingStatus.Flagged) { بررسی و انتشار ← } else if (r.LinkedShiftId is int sid) { مشاهده آگهی منتشرشده } else if (r.LinkedTalentId is int tid) { مشاهده «آماده به کار» منتشرشده }
} }