Add medjobs.ir scraper + employer/employee choice at signup
CI/CD / CI · dotnet build (push) Successful in 1m22s
CI/CD / Deploy · hamkadr (push) Successful in 1m37s

- MedjobsListingSource: crawls medjobs.ir sitemaps (ad_listing-sitemapN) → fetches ad pages → title+description → engine (dedupe/parse/validate/publish as SEO job pages). Configured in /Admin/Settings (enable + max ads/run).
- Login/register now asks 'کادر درمان' vs 'کارفرما/مرکز': new accounts get Doctor vs FacilityAdmin role; post-login routes to /Me, /Employer, or /Admin accordingly.
- Verified live: medjobs run fetched real ads into the review queue; employer signup → /Employer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-04 06:12:10 +03:30
parent d828ea9f35
commit e2e26150cb
12 changed files with 1106 additions and 3 deletions
+9
View File
@@ -189,6 +189,15 @@ label { font-size: 13px; }
.alert { padding: 12px 16px; border-radius: 10px; margin-bottom: 16px; font-weight: 600; }
.alert-success { background: var(--primary-soft); color: var(--primary-dark); }
/* account-type chooser on login */
.acct-toggle { display: flex; gap: 10px; }
.acct-opt { flex: 1; display: block; cursor: pointer; }
.acct-opt input { position: absolute; opacity: 0; }
.acct-opt span { display: block; text-align: center; padding: 12px 8px; border: 1.5px solid var(--line);
border-radius: 12px; font-weight: 700; font-size: 14px; transition: all .15s; }
.acct-opt span small { font-weight: 400; color: var(--muted); font-size: 11px; }
.acct-opt input:checked + span { border-color: var(--primary); background: var(--primary-soft); color: var(--primary-dark); }
/* hour-range timeline bar */
.hourbar-wrap { direction: ltr; margin: 6px 0 2px; }
.hourbar {