Add hiring, AI parser+admin, OTP auth, employer dashboard, profit-share pay
- Hiring (استخدام) listings: JobOpening + /Jobs browse/detail + home section - Heuristic Persian listing-parser + admin queue (/Admin) → publish shift/job - Phone-OTP cookie auth + visitor-history linking + profile; Admin role gate - Employer side: self-serve facility registration, dashboard, post/manage shifts & jobs, applicants list with contact - Compensation models: fixed / hourly / profit-share (درصدی) / negotiable / choice (به انتخاب شما); SharePercent + JalaliDate.PayLabel; parser + filter Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,10 @@ Then open the URL printed in the console (e.g. http://localhost:5020).
|
||||
| `/Account/Profile` | پروفایل: شیفتها/موقعیتهای ذخیرهشده و اعلام تمایلها |
|
||||
| `/Admin` | پنل مدیریت (نقش Admin): صف آگهیهای خام |
|
||||
| `/Admin/Review/{id}` | بررسی خودکار (پارسر) و انتشار آگهی بهصورت شیفت یا استخدام |
|
||||
| `/Employer` | **پنل کارفرما**: مراکز من + شمار شیفت/استخدام/متقاضی |
|
||||
| `/Employer/RegisterFacility` | ثبت مرکز درمانی (خودسرویس → نقش FacilityAdmin) |
|
||||
| `/Employer/PostShift`، `/PostJob` | انتشار شیفت یا موقعیت استخدامی |
|
||||
| `/Employer/Listings` | مدیریت آگهیها (بستن/بازگشایی/حذف) + لیست متقاضیان با تماس |
|
||||
|
||||
## How recommendations work (Stage 1 — pattern engine)
|
||||
`RecommendationService` scores open shifts against (a) explicit `UserPreferences` and (b) recent
|
||||
@@ -56,7 +60,19 @@ Done: multi-role domain model, Postgres + migrations, RTL shell, browse/filter (
|
||||
district, near-me), weekly Jalali calendar, shift detail + interest handoff, interest tracking +
|
||||
pattern-engine recommendation feed + preferences, self-hosted Vazirmatn + teal/coral palette,
|
||||
**hiring (استخدام) listings**, **admin queue + heuristic listing-parser** (raw channel post →
|
||||
structured shift/job), **phone-OTP auth + visitor-history linking + profile**, Tehran seed data.
|
||||
structured shift/job), **phone-OTP auth + visitor-history linking + profile**, **employer side** (self-serve facility
|
||||
registration → FacilityAdmin role, post/manage shifts & jobs, applicants list with contact),
|
||||
Tehran seed data.
|
||||
|
||||
Both sides of the marketplace now work end-to-end: an employer self-registers a facility, posts a
|
||||
shift, it appears publicly, a logged-in user applies, and the employer sees that applicant's
|
||||
phone in their dashboard.
|
||||
|
||||
### Compensation models
|
||||
Shifts support fixed (مقطوع), hourly (ساعتی), **profit-share (درصدی / سهم درآمد)**, توافقی, or a
|
||||
**choice** between a fixed amount and a share % ("… یا … به انتخاب شما"). `JalaliDate.PayLabel`
|
||||
centralizes the display; `Shift.SharePercent` holds the percentage; the listing-parser detects
|
||||
"۵۰٪ / درصد / سهم" from raw posts; and `/Shifts` has a "سهم درآمد" filter.
|
||||
|
||||
### Listing parser (Stage 1)
|
||||
`IListingParser` / `HeuristicListingParser` extracts kind (shift vs hire), role, shift type,
|
||||
|
||||
Reference in New Issue
Block a user