"""
Settings Schema — HRM Module.

اسکیمای صفحه تنظیمات ماژول منابع انسانی.
این schema توسط schema-engine فرانت‌اند رندر می‌شود.
"""

HRM_SETTINGS_PAGE = {
    "id": "hrm_settings_page",
    "type": "settings",
    "title": "تنظیمات منابع انسانی",
    "title_en": "HRM Settings",
    "module": "hrm",
    "api": {
        "get": "api:GET:/api/v1/settings/modules/hrm/",
        "save": "api:PUT:/api/v1/settings/modules/hrm/",
        "schema": "api:GET:/api/v1/settings/modules/hrm/schema/",
        "reset": "api:POST:/api/v1/settings/modules/hrm/reset/",
    },
    "sections": [
        {
            "id": "employee",
            "title": "تنظیمات کارمندان",
            "icon": "HiOutlineUsers",
            "description": "تنظیمات پیش‌فرض و رفتار مدیریت کارمندان",
            "fields": [
                {
                    "name": "employee.default_employment_type",
                    "label": "نوع استخدام پیش‌فرض",
                    "type": "select",
                    "options": [
                        {"value": "FULL_TIME", "label": "تمام‌وقت"},
                        {"value": "PART_TIME", "label": "پاره‌وقت"},
                        {"value": "CONTRACT", "label": "قراردادی"},
                        {"value": "INTERN", "label": "کارآموز"},
                    ],
                },
                {
                    "name": "employee.probation_duration_days",
                    "label": "مدت دوره آزمایشی (روز)",
                    "type": "number",
                    "min": 0,
                    "max": 365,
                },
                {
                    "name": "employee.auto_generate_employee_code",
                    "label": "تولید خودکار کد پرسنلی",
                    "type": "toggle",
                },
                {
                    "name": "employee.employee_code_prefix",
                    "label": "پیشوند کد پرسنلی",
                    "type": "text",
                    "depends_on": {"field": "employee.auto_generate_employee_code", "value": True},
                },
                {
                    "name": "employee.require_national_id",
                    "label": "الزام کد ملی",
                    "type": "toggle",
                },
                {
                    "name": "employee.default_nationality",
                    "label": "ملیت پیش‌فرض",
                    "type": "text",
                },
            ],
        },
        {
            "id": "leave",
            "title": "تنظیمات مرخصی",
            "icon": "HiOutlineCalendar",
            "description": "مدیریت سیاست‌ها و رفتار سیستم مرخصی",
            "fields": [
                {
                    "name": "leave.annual_entitlement_days",
                    "label": "روز مرخصی سالانه",
                    "type": "number",
                    "min": 0,
                    "max": 365,
                },
                {
                    "name": "leave.max_carryover_days",
                    "label": "حداکثر روز قابل انتقال",
                    "type": "number",
                    "min": 0,
                    "max": 365,
                },
                {
                    "name": "leave.max_accumulation_days",
                    "label": "حداکثر انباشت مرخصی",
                    "type": "number",
                    "min": 0,
                    "max": 365,
                },
                {
                    "name": "leave.accrual_method",
                    "label": "روش تعلق مرخصی",
                    "type": "select",
                    "options": [
                        {"value": "ANNUAL", "label": "سالانه"},
                        {"value": "MONTHLY", "label": "ماهانه"},
                        {"value": "DAILY", "label": "روزانه"},
                        {"value": "CUSTOM", "label": "سفارشی"},
                    ],
                },
                {
                    "name": "leave.require_approval",
                    "label": "نیاز به تأیید مدیر",
                    "type": "toggle",
                },
                {
                    "name": "leave.max_consecutive_days",
                    "label": "حداکثر مرخصی متوالی (روز)",
                    "type": "number",
                    "min": 1,
                    "max": 365,
                },
                {
                    "name": "leave.min_notice_days",
                    "label": "حداقل روز اعلام قبلی",
                    "type": "number",
                    "min": 0,
                    "max": 90,
                },
                {
                    "name": "leave.allow_half_day",
                    "label": "مرخصی نیم‌روز",
                    "type": "toggle",
                },
                {
                    "name": "leave.allow_hourly",
                    "label": "مرخصی ساعتی",
                    "type": "toggle",
                },
                {
                    "name": "leave.min_service_months",
                    "label": "حداقل سابقه برای مرخصی (ماه)",
                    "type": "number",
                    "min": 0,
                    "max": 24,
                },
                {
                    "name": "leave.auto_approve_if_balance_sufficient",
                    "label": "تأیید خودکار اگر مانده کافی",
                    "type": "toggle",
                    "description": "در صورت فعال‌سازی، درخواست مرخصی با مانده کافی خودکار تأیید می‌شود",
                },
            ],
        },
        {
            "id": "time_attendance",
            "title": "تنظیمات حضور و غیاب",
            "icon": "HiOutlineClock",
            "description": "تنظیمات ساعت کاری، شیفت و حضور و غیاب",
            "fields": [
                {
                    "name": "time_attendance.schedule_type",
                    "label": "نوع برنامه کاری پیش‌فرض",
                    "type": "select",
                    "options": [
                        {"value": "STANDARD", "label": "استاندارد"},
                        {"value": "SHIFT", "label": "شیفتی"},
                        {"value": "FLEXIBLE", "label": "شناور"},
                        {"value": "COMPRESSED", "label": "فشرده"},
                        {"value": "REMOTE", "label": "دورکاری"},
                    ],
                },
                {
                    "name": "time_attendance.daily_work_hours",
                    "label": "ساعت کاری روزانه",
                    "type": "number",
                    "min": 1,
                    "max": 16,
                    "step": 0.5,
                },
                {
                    "name": "time_attendance.weekly_work_hours",
                    "label": "ساعت کاری هفتگی",
                    "type": "number",
                    "min": 1,
                    "max": 84,
                    "step": 0.5,
                },
                {
                    "name": "time_attendance.break_duration_minutes",
                    "label": "مدت استراحت (دقیقه)",
                    "type": "number",
                    "min": 0,
                    "max": 180,
                },
                {
                    "name": "time_attendance.working_days",
                    "label": "روزهای کاری",
                    "type": "multi_select",
                    "options": [
                        {"value": 0, "label": "شنبه"},
                        {"value": 1, "label": "یکشنبه"},
                        {"value": 2, "label": "دوشنبه"},
                        {"value": 3, "label": "سه‌شنبه"},
                        {"value": 4, "label": "چهارشنبه"},
                        {"value": 5, "label": "پنجشنبه"},
                        {"value": 6, "label": "جمعه"},
                    ],
                },
                {
                    "name": "time_attendance.overtime_daily_threshold",
                    "label": "آستانه اضافه‌کاری روزانه (ساعت)",
                    "type": "number",
                    "min": 1,
                    "max": 16,
                    "step": 0.5,
                },
                {
                    "name": "time_attendance.overtime_weekly_threshold",
                    "label": "آستانه اضافه‌کاری هفتگی (ساعت)",
                    "type": "number",
                    "min": 1,
                    "max": 84,
                    "step": 0.5,
                },
                {
                    "name": "time_attendance.late_tolerance_minutes",
                    "label": "حد مجاز تأخیر (دقیقه)",
                    "type": "number",
                    "min": 0,
                    "max": 120,
                },
                {
                    "name": "time_attendance.attendance_source",
                    "label": "منبع ثبت حضور",
                    "type": "select",
                    "options": [
                        {"value": "MANUAL", "label": "دستی"},
                        {"value": "BIOMETRIC", "label": "بیومتریک"},
                        {"value": "GPS", "label": "GPS"},
                        {"value": "MOBILE", "label": "موبایل"},
                    ],
                },
                {
                    "name": "time_attendance.require_timesheet_approval",
                    "label": "نیاز به تأیید کارکرد",
                    "type": "toggle",
                },
            ],
        },
        {
            "id": "payroll",
            "title": "تنظیمات حقوق و دستمزد",
            "icon": "HiOutlineBanknotes",
            "description": "تنظیمات ضرایب حقوقی و پرداخت",
            "fields": [
                {
                    "name": "payroll.overtime_multiplier",
                    "label": "ضریب اضافه‌کاری",
                    "type": "number",
                    "min": 1.0,
                    "max": 3.0,
                    "step": 0.05,
                    "description": "ضریب محاسبه اضافه‌کاری (مثلاً ۱.۴ = ۱۴۰٪)",
                },
                {
                    "name": "payroll.holiday_multiplier",
                    "label": "ضریب تعطیلات",
                    "type": "number",
                    "min": 1.0,
                    "max": 3.0,
                    "step": 0.05,
                },
                {
                    "name": "payroll.night_shift_multiplier",
                    "label": "ضریب شیفت شب",
                    "type": "number",
                    "min": 1.0,
                    "max": 3.0,
                    "step": 0.05,
                },
                {
                    "name": "payroll.default_currency",
                    "label": "واحد پول پیش‌فرض",
                    "type": "text",
                },
                {
                    "name": "payroll.default_payment_method",
                    "label": "روش پرداخت پیش‌فرض",
                    "type": "select",
                    "options": [
                        {"value": "BANK_TRANSFER", "label": "انتقال بانکی"},
                        {"value": "CHECK", "label": "چک"},
                        {"value": "CASH", "label": "نقدی"},
                    ],
                },
                {
                    "name": "payroll.salary_frequency",
                    "label": "دوره پرداخت حقوق",
                    "type": "select",
                    "options": [
                        {"value": "HOURLY", "label": "ساعتی"},
                        {"value": "MONTHLY", "label": "ماهانه"},
                        {"value": "ANNUAL", "label": "سالانه"},
                    ],
                },
                {
                    "name": "payroll.cost_allocation_type",
                    "label": "نوع تخصیص هزینه",
                    "type": "select",
                    "options": [
                        {"value": "POSITION", "label": "پست سازمانی"},
                        {"value": "DEPARTMENT", "label": "واحد سازمانی"},
                        {"value": "PROJECT", "label": "پروژه"},
                        {"value": "COST_CENTER", "label": "مرکز هزینه"},
                    ],
                },
            ],
        },
        {
            "id": "position",
            "title": "تنظیمات پست‌ها و مشاغل",
            "icon": "HiOutlineBriefcase",
            "description": "تنظیمات پیش‌فرض پست‌ها و مشاغل سازمانی",
            "fields": [
                {
                    "name": "position.default_headcount",
                    "label": "تعداد نیرو پیش‌فرض",
                    "type": "number",
                    "min": 1,
                    "max": 100,
                },
                {
                    "name": "position.default_fte",
                    "label": "معادل تمام‌وقت پیش‌فرض",
                    "type": "number",
                    "min": 0.1,
                    "max": 1.0,
                    "step": 0.1,
                },
                {
                    "name": "position.enforce_budgeting",
                    "label": "الزام بودجه‌بندی پست‌ها",
                    "type": "toggle",
                },
                {
                    "name": "position.track_key_positions",
                    "label": "ردیابی پست‌های کلیدی",
                    "type": "toggle",
                },
                {
                    "name": "position.require_job_description",
                    "label": "الزام شرح شغل",
                    "type": "toggle",
                },
            ],
        },
    ],
}
