واجهة Professional HR Hub الفعلية من الاختبار البصري: مؤشرات، إجراءات، امتثال، وتنقل سريع من شاشة واحدة.
---
## 📌 بطاقة المنتج | Product Card
Standalone
يعمل فوق frappe وerpnext فقط
لا يحتاج HRMS
|
Saudi Compliance
GOSI, WPS, Nitaqat, EOSB
مهيأ لنظام العمل السعودي
|
Operational Hub
واجهة Professional HR Hub
للعمل اليومي لا للعروض فقط
|
Ready to Move
تبعيات موثقة واختبارات جاهزة
أسهل عند النقل لبيئة أخرى
|
---
## 🌟 نظرة عامة | Overview
|
### بالعربية
**saudi_hr** ليس مجرد مجموعة DocTypes. هو مساحة تشغيل موارد بشرية سعودية متكاملة داخل ERPNext: يبدأ من متابعة اليوم، يمر بالحضور والورديات والإجازات والرواتب، وينتهي بالتقارير النظامية والوثائق الرسمية.
صُمّم التطبيق ليبقى مستقلًا عن HRMS، وهذا يجعل نقله وترقيته أوضح في البيئات التي تريد ERPNext مع طبقة موارد بشرية سعودية متخصصة فقط.
**النتيجة:** تجربة HR عملية، عربية، قابلة للتدقيق، ومتصلة بالاحتياج السعودي الحقيقي.
|
### In English
**saudi_hr** is more than a set of DocTypes. It is a Saudi HR operating layer inside ERPNext: daily monitoring, attendance, shifts, leaves, payroll, compliance reports, and official documents in one focused experience.
The app is deliberately independent from HRMS, making deployment and upgrades clearer for teams that want ERPNext with a dedicated Saudi HR layer.
**The result:** a practical, auditable, Arabic-first HR experience for Saudi operations.
|
### لماذا يلفت الانتباه؟ | Why It Stands Out
| المسار | Track | القيمة العملية |
|--------|-------|----------------|
| تجربة تشغيلية | Operational UX | يبدأ من عمل HR اليومي بدل قائمة مستندات طويلة |
| استقلالية تقنية | Technical Independence | لا يعتمد على HRMS ويعمل فوق `frappe` و`erpnext` فقط |
| امتثال سعودي | Saudi Compliance | يغطي GOSI، WPS، نطاقات، الإجازات، نهاية الخدمة، العقود، والإصابات |
| جاهزية ميدانية | Field Readiness | حضور جوال، مواقع، ورديات، مراجعة فريق، وشجرة تنظيمية |
| توثيق رسمي | Official Output | صيغ طباعة عربية ومسارات اعتماد قابلة للمراجعة |
---
## 🖼️ الجولة السريعة | Quick Tour
|
1. ابدأ من مساحة عمل مرتبة
مساحة Saudi HR تقسم العمل حسب الاستخدام الفعلي: متابعة اليوم، عمليات الموظف، الحضور، الرواتب، السياسات، والامتثال.
|
|
2. راقب الحضور قبل أن يتحول إلى مشكلة
تقرير مراجعة الفريق يساعد المشرفين وHR على رؤية التأخير، الغياب، الحركات المفتوحة، ومشكلات التحقق من نفس الشاشة.
|
|
3. اربط الإجازات بالسياسات السعودية
أرصدة الإجازات تظهر بصورة قابلة للمراجعة، مع مسارات اعتماد مناسبة للموظف والمدير والموارد البشرية والمالية.
|
|
4. افهم الهيكل قبل القرار
الشجرة التنظيمية تعرض الأقسام، العلاقات الإدارية، والموافقين حتى تصبح القرارات الإدارية أسرع وأوضح.
|
Mobile view | عرض الجوال
الواجهة مصممة لتبقى قابلة للقراءة والتنقل على الجوال أثناء العمل الميداني.
---
## 🧭 الوثائق | Docs
| الدليل | Guide | متى تستخدمه؟ |
|--------|-------|--------------|
| [التثبيت](docs/installation.md) | Installation | تثبيت التطبيق على bench جديد أو موقع ERPNext v15 |
| [النقل والتشغيل](docs/deployment.md) | Deployment | نقل التطبيق إلى نظام آخر والتحقق بعد الترقية |
| [فصل HRMS](docs/hrms-decoupling.md) | HRMS Decoupling | إثبات أن التطبيق لا يحتاج HRMS ومعرفة البدائل السعودية داخله |
| [الجولة المرئية](docs/visual-tour.md) | Visual Tour | استعراض الصور، GIF، وصورة Social Preview |
| [بيانات الديمو](docs/demo-data.md) | Demo Data | إنشاء موظف ومدير وعقد وإجازة ورواتب تجريبية في بيئة اختبار |
| [التبعيات](DEPENDENCIES.md) | Dependencies | عقد التبعيات الكامل ومسار الصوت الاختياري |
---
## 💻 المتطلبات | Requirements
| المكوّن | Component | الإصدار الأدنى | Min Version |
|---------|-----------|----------------|-------------|
| Python | Python | ≥ 3.10 | ≥ 3.10 |
| Frappe Framework | Frappe Framework | ≥ 15.0.0 | ≥ 15.0.0 |
| ERPNext | ERPNext | ≥ 15.0.0 | ≥ 15.0.0 |
| MariaDB | MariaDB | ≥ 10.6 | ≥ 10.6 |
| Node.js | Node.js | ≥ 18 | ≥ 18 |
**بيئة التحقق الحالية | Verified Stack**
- Frappe `15.107.2`
- ERPNext `15.107.0`
- Saudi HR `1.16.4`
- Python `3.10`
- MariaDB `10.6+`
- Node.js `24.x`
- لا يعتمد التطبيق على HRMS، ويعمل بشكل مستقل فوق `frappe` و`erpnext` فقط
---
## ⚙️ التثبيت | Installation
```bash
# 1. احصل على التطبيق | Get the app
bench get-app --branch version-15 https://github.com/ahmadmdm/hr-saudi-arabia-erpnext.git
# 2. ثبّت على الموقع | Install on your site
bench --site install-app saudi_hr
# 3. أعد البناء وامسح الكاش | Build and clear cache
bench build --app saudi_hr
bench --site clear-cache
```
> **ملاحظة:** يجب تثبيت `frappe` و`erpnext` قبل هذا التطبيق. التثبيت الأساسي يحتاج `openpyxl` و`openlocationcode` فقط. وضع التحقق الصوتي الخفيف يعمل عبر نص التحدي المرسل من المتصفح ولا يسحب حزم الذكاء الاصطناعي الثقيلة. لتفعيل وضع البصمة الصوتية الكاملة ثبّت الإضافة الاختيارية `saudi_hr[voice-full]` أو استخدم `requirements-voice-cpu.txt`.
> **Note:** `frappe` and `erpnext` must be installed first. The base install only requires `openpyxl` and `openlocationcode`. Lightweight voice verification uses the browser-provided challenge transcript and does not pull the heavy AI packages. To enable full voice biometric mode, install the optional `saudi_hr[voice-full]` extra or use `requirements-voice-cpu.txt`.
### التحقق من الاعتماديات | Dependency Verification
```bash
# Verify Python package dependencies
./env/bin/python -c "import openpyxl, openlocationcode; print('base runtime dependencies ok')"
# Optional: verify full biometric voice dependencies after installing them
./env/bin/python -c "import torch, torchaudio, speechbrain, faster_whisper; print('full voice runtime dependencies ok')"
# Verify bench app test suite
bench --site run-tests --app saudi_hr --skip-test-records
```
> **معلومة مهمة:** ملفات الاعتماديات موحدة في `pyproject.toml` و`setup.py` و`requirements.txt`. أضفنا أيضًا ملف `requirements-voice-cpu.txt` كخيار تشغيلي احتياطي للخوادم التي تحتاج فهرس PyTorch CPU صريح، لكن المسار الافتراضي للتثبيت يعتمد على بيانات الحزمة نفسها.
> **Important:** Dependency declarations are aligned in `pyproject.toml`, `setup.py`, and `requirements.txt`. We also ship `requirements-voice-cpu.txt` as an operational fallback for servers that need the explicit PyTorch CPU index, but the default installation path still relies on the package metadata itself.
### نقل التطبيق إلى نظام آخر | Moving the App to Another System
```bash
# 1. داخل بيئة bench الجديدة | Inside the new bench environment
bench get-app --branch version-15 https://github.com/ahmadmdm/hr-saudi-arabia-erpnext.git
# 2. ثبّت التطبيق على الموقع | Install the app on the target site
bench --site install-app saudi_hr
# 3. طبّق الترقيات | Apply schema changes
bench --site migrate
# 4. تحقق من التبعيات الأساسية | Verify base runtime dependencies
./env/bin/python -c "import openpyxl, openlocationcode; print('base dependencies ok')"
# Optional fallback for CPU-only environments with restricted package indexes
./env/bin/pip install -r apps/saudi_hr/requirements-voice-cpu.txt
# Optional: verify full voice dependencies after installing voice support
./env/bin/python -c "import torch, torchaudio, speechbrain, faster_whisper; print('voice dependencies ok')"
# 5. تحقّق من أهم المسارات بعد التثبيت | Validate the key app flows after install
bench --site run-tests --app saudi_hr --module saudi_hr.saudi_hr.doctype.special_leave.test_special_leave --module saudi_hr.saudi_hr.doctype.annual_leave_disbursement.test_annual_leave_disbursement --module saudi_hr.saudi_hr.report.saudi_labor_coverage_matrix.test_saudi_labor_coverage_matrix
```
> **توصية تشغيلية:** إذا كنت ستستخدم صفحة الحضور بالجوال أو مواقع Plus Code مباشرة بعد النقل، شغّل `bench restart` أو أعد تشغيل خدمات الويب والـ workers بعد `migrate` لضمان تحميل الأصول وملفات الخدمة الحديثة.
> **Operational note:** If you will use the mobile attendance page or Plus Code locations immediately after migration, run `bench restart` or restart the web and worker processes after `migrate` so the latest assets and service worker are loaded.
راجع [DEPENDENCIES.md](DEPENDENCIES.md) لعقد التبعيات الكامل، بما في ذلك تأكيد أن `hrms` ليس اعتماداً مطلوباً.
---
## 🧩 المكونات | Features
### أنواع البيانات | DocTypes
#### 📁 العقود والتوظيف | Contracts & Employment
| DocType | النوع | المادة | الوصف |
|---------|-------|--------|-------|
| Saudi Employment Contract | عقد العمل السعودي | م.37–46 | عقود محددة/غير محددة المدة مع تنبيهات الانتهاء التلقائية — Fixed/open-ended contracts with auto expiry alerts |
| Termination Notice | إشعار إنهاء الخدمة | م.75–76 | إ