"""
PM Module — Settings Page Schema.

تعریف schema صفحه تنظیمات ماژول مدیریت پروژه.
"""

PM_SETTINGS_PAGE = {
    "type": "settings",
    "module": "pm",
    "title": "تنظیمات مدیریت پروژه",
    "api": {
        "get": "/api/v1/settings/pm/",
        "save": "/api/v1/settings/pm/",
        "schema": "/api/v1/settings/pm/schema/",
        "reset": "/api/v1/settings/pm/reset/",
    },
    "sections": [
        {
            "id": "general",
            "title": "تنظیمات عمومی",
            "icon": "HiOutlineCog6Tooth",
            "description": "تنظیمات عمومی ماژول مدیریت پروژه",
            "fields": [
                {"key": "default_currency", "label": "واحد پول پیش‌فرض", "type": "text", "default": "IRR"},
                {"key": "auto_generate_project_code", "label": "تولید خودکار کد پروژه", "type": "toggle", "default": True},
                {"key": "project_code_prefix", "label": "پیشوند کد پروژه", "type": "text", "default": "PRJ", "depends_on": {"field": "auto_generate_project_code", "value": True}},
                {
                    "key": "default_project_type", "label": "نوع پیش‌فرض پروژه", "type": "select", "default": "project",
                    "options": [
                        {"value": "portfolio", "label": "سبد پروژه"},
                        {"value": "program", "label": "برنامه"},
                        {"value": "project", "label": "پروژه"},
                        {"value": "sub_project", "label": "زیرپروژه"},
                    ],
                },
                {"key": "fiscal_year_start_month", "label": "ماه شروع سال مالی", "type": "number", "default": 1, "min": 1, "max": 12},
            ],
        },
        {
            "id": "scheduling",
            "title": "تنظیمات زمان‌بندی",
            "icon": "HiOutlineCalendarDays",
            "description": "تنظیمات زمان‌بندی و تقویم پروژه",
            "fields": [
                {"key": "working_hours_per_day", "label": "ساعات کاری روزانه", "type": "number", "default": 8, "min": 1, "max": 24},
                {"key": "working_days_per_week", "label": "روزهای کاری هفته", "type": "number", "default": 6, "min": 1, "max": 7},
                {"key": "default_task_duration_days", "label": "مدت پیش‌فرض تسک (روز)", "type": "number", "default": 5, "min": 1, "max": 365},
                {"key": "enable_critical_path", "label": "نمایش مسیر بحرانی", "type": "toggle", "default": True},
                {"key": "auto_schedule", "label": "زمان‌بندی خودکار", "type": "toggle", "default": True, "description": "محاسبه خودکار مسیر بحرانی هنگام تغییر وابستگی‌ها"},
                {
                    "key": "weekend_days", "label": "روزهای تعطیل هفته", "type": "multi_select", "default": ["friday"],
                    "options": [
                        {"value": "saturday", "label": "شنبه"},
                        {"value": "sunday", "label": "یکشنبه"},
                        {"value": "monday", "label": "دوشنبه"},
                        {"value": "tuesday", "label": "سه‌شنبه"},
                        {"value": "wednesday", "label": "چهارشنبه"},
                        {"value": "thursday", "label": "پنجشنبه"},
                        {"value": "friday", "label": "جمعه"},
                    ],
                },
            ],
        },
        {
            "id": "cost",
            "title": "تنظیمات هزینه و بودجه",
            "icon": "HiOutlineBanknotes",
            "description": "تنظیمات مدیریت هزینه و بودجه پروژه",
            "fields": [
                {"key": "enable_evm", "label": "فعال‌سازی EVM", "type": "toggle", "default": True, "description": "مدیریت ارزش کسب‌شده (PV, EV, AC, CPI, SPI)"},
                {"key": "budget_warning_threshold", "label": "آستانه هشدار بودجه (%)", "type": "number", "default": 80, "min": 50, "max": 100},
                {"key": "budget_critical_threshold", "label": "آستانه بحرانی بودجه (%)", "type": "number", "default": 95, "min": 80, "max": 100},
                {"key": "allow_over_budget", "label": "اجازه هزینه بیش از بودجه", "type": "toggle", "default": False},
                {
                    "key": "cost_rate_type", "label": "نوع نرخ هزینه پیش‌فرض", "type": "select", "default": "hourly",
                    "options": [
                        {"value": "hourly", "label": "ساعتی"},
                        {"value": "daily", "label": "روزانه"},
                        {"value": "fixed", "label": "ثابت"},
                    ],
                },
            ],
        },
        {
            "id": "resource",
            "title": "تنظیمات منابع",
            "icon": "HiOutlineUserGroup",
            "description": "تنظیمات مدیریت منابع پروژه",
            "fields": [
                {"key": "max_resource_allocation", "label": "حداکثر تخصیص منبع (%)", "type": "number", "default": 100, "min": 50, "max": 200},
                {"key": "enable_resource_leveling", "label": "تسطیح منابع", "type": "toggle", "default": False},
                {"key": "enable_timesheet", "label": "فعال‌سازی تایم‌شیت", "type": "toggle", "default": True},
                {"key": "timesheet_approval_required", "label": "نیاز به تأیید تایم‌شیت", "type": "toggle", "default": True, "depends_on": {"field": "enable_timesheet", "value": True}},
            ],
        },
        {
            "id": "risk",
            "title": "تنظیمات ریسک",
            "icon": "HiOutlineShieldExclamation",
            "description": "تنظیمات مدیریت ریسک پروژه",
            "fields": [
                {
                    "key": "risk_matrix_size", "label": "اندازه ماتریس ریسک", "type": "select", "default": "5x5",
                    "options": [
                        {"value": "3x3", "label": "۳×۳"},
                        {"value": "5x5", "label": "۵×۵"},
                    ],
                },
                {"key": "high_risk_threshold", "label": "آستانه ریسک بالا", "type": "number", "default": 0.6, "min": 0.1, "max": 1.0, "step": 0.1},
                {"key": "auto_notify_high_risks", "label": "اطلاع‌رسانی خودکار ریسک بالا", "type": "toggle", "default": True},
            ],
        },
        {
            "id": "change_request",
            "title": "تنظیمات درخواست تغییر",
            "icon": "HiOutlineDocumentCheck",
            "description": "تنظیمات مدیریت درخواست‌های تغییر",
            "fields": [
                {"key": "require_workflow_approval", "label": "نیاز به فرآیند تأیید", "type": "toggle", "default": True, "description": "فعال‌سازی فرآیند تأیید از طریق Workflow Engine"},
                {"key": "auto_generate_cr_code", "label": "تولید خودکار کد درخواست تغییر", "type": "toggle", "default": True},
                {"key": "cr_code_prefix", "label": "پیشوند کد", "type": "text", "default": "CR", "depends_on": {"field": "auto_generate_cr_code", "value": True}},
            ],
        },
    ],
}
