"""
PPM Form Schemas

اسکیماهای فرم ماژول مدیریت پرتفولیو و برنامه.
"""


# ═══════════════════════════════════════════════════
# Portfolio Form
# ═══════════════════════════════════════════════════

PORTFOLIO_FORM = {
    "id": "ppm_portfolio_form",
    "title": "پرتفولیو",
    "sections": [
        {
            "id": "basic",
            "title": "اطلاعات پایه",
            "fields": [
                {"name": "code", "label": "کد", "type": "text", "required": True, "max_length": 50},
                {"name": "name", "label": "نام", "type": "text", "required": True, "max_length": 300},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "parent", "label": "پرتفولیو مادر", "type": "lookup", "lookup_endpoint": "/api/v1/ppm/portfolios/"},
                {"name": "owner", "label": "مالک", "type": "lookup", "lookup_endpoint": "/api/v1/access/users/"},
            ],
        },
        {
            "id": "strategy",
            "title": "راهبرد و ریسک",
            "fields": [
                {"name": "risk_tolerance", "label": "تحمل ریسک", "type": "select", "options": [
                    {"value": "low", "label": "پایین"},
                    {"value": "medium", "label": "متوسط"},
                    {"value": "high", "label": "بالا"},
                ], "default": "medium"},
                {"name": "review_cycle", "label": "دوره بازبینی", "type": "select", "options": [
                    {"value": "monthly", "label": "ماهانه"},
                    {"value": "quarterly", "label": "سه‌ماهه"},
                    {"value": "semi_annual", "label": "شش‌ماهه"},
                    {"value": "yearly", "label": "سالانه"},
                ], "default": "quarterly"},
            ],
        },
        {
            "id": "financial",
            "title": "اطلاعات مالی و زمانی",
            "fields": [
                {"name": "total_budget", "label": "بودجه کل", "type": "number", "min": 0},
                {"name": "start_date", "label": "تاریخ شروع", "type": "date"},
                {"name": "end_date", "label": "تاریخ پایان", "type": "date"},
            ],
        },
        {
            "id": "org",
            "title": "سازمان",
            "fields": [
                {"name": "company_id", "label": "شرکت", "type": "lookup", "lookup_endpoint": "/api/v1/access/companies/"},
                {"name": "org_unit_id", "label": "واحد سازمانی", "type": "lookup", "lookup_endpoint": "/api/v1/access/org-units/"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Program Form
# ═══════════════════════════════════════════════════

PROGRAM_FORM = {
    "id": "ppm_program_form",
    "title": "برنامه",
    "sections": [
        {
            "id": "basic",
            "title": "اطلاعات پایه",
            "fields": [
                {"name": "code", "label": "کد", "type": "text", "required": True, "max_length": 50},
                {"name": "name", "label": "نام", "type": "text", "required": True, "max_length": 300},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "portfolio", "label": "پرتفولیو", "type": "lookup", "lookup_endpoint": "/api/v1/ppm/portfolios/"},
                {"name": "manager", "label": "مدیر برنامه", "type": "lookup", "lookup_endpoint": "/api/v1/access/users/"},
            ],
        },
        {
            "id": "strategy",
            "title": "اهداف و منافع",
            "fields": [
                {"name": "objectives", "label": "اهداف", "type": "textarea"},
                {"name": "expected_benefits", "label": "منافع مورد انتظار", "type": "textarea"},
                {"name": "risk_level", "label": "سطح ریسک", "type": "select", "options": [
                    {"value": "low", "label": "پایین"},
                    {"value": "medium", "label": "متوسط"},
                    {"value": "high", "label": "بالا"},
                    {"value": "critical", "label": "بحرانی"},
                ], "default": "medium"},
            ],
        },
        {
            "id": "financial",
            "title": "اطلاعات مالی و زمانی",
            "fields": [
                {"name": "budget", "label": "بودجه", "type": "number", "min": 0},
                {"name": "start_date", "label": "تاریخ شروع", "type": "date"},
                {"name": "end_date", "label": "تاریخ پایان", "type": "date"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Program-Project Form
# ═══════════════════════════════════════════════════

PROGRAM_PROJECT_FORM = {
    "id": "ppm_program_project_form",
    "title": "افزودن پروژه به برنامه",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات ارتباط",
            "fields": [
                {"name": "program", "label": "برنامه", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/programs/"},
                {"name": "project_id", "label": "پروژه", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/pm/projects/"},
                {"name": "role", "label": "نقش", "type": "select", "options": [
                    {"value": "core", "label": "اصلی"},
                    {"value": "supporting", "label": "حمایتی"},
                ], "default": "core"},
                {"name": "priority", "label": "اولویت", "type": "number", "min": 0, "default": 0},
                {"name": "notes", "label": "یادداشت", "type": "textarea"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Business Case Form
# ═══════════════════════════════════════════════════

BUSINESS_CASE_FORM = {
    "id": "ppm_business_case_form",
    "title": "کیس تجاری",
    "sections": [
        {
            "id": "basic",
            "title": "اطلاعات پایه",
            "fields": [
                {"name": "title", "label": "عنوان", "type": "text", "required": True, "max_length": 300},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "program", "label": "برنامه", "type": "lookup", "lookup_endpoint": "/api/v1/ppm/programs/"},
                {"name": "project_id", "label": "پروژه", "type": "lookup", "lookup_endpoint": "/api/v1/pm/projects/"},
                {"name": "sponsor", "label": "حامی", "type": "lookup", "lookup_endpoint": "/api/v1/access/users/"},
                {"name": "prepared_by", "label": "تهیه‌کننده", "type": "lookup", "lookup_endpoint": "/api/v1/access/users/"},
            ],
        },
        {
            "id": "strategy",
            "title": "تناسب راهبردی",
            "fields": [
                {"name": "strategic_fit_score", "label": "امتیاز تناسب راهبردی", "type": "number", "min": 0, "max": 100},
            ],
        },
        {
            "id": "financial",
            "title": "اطلاعات مالی",
            "fields": [
                {"name": "total_investment", "label": "سرمایه‌گذاری کل", "type": "number", "min": 0},
                {"name": "expected_revenue", "label": "درآمد پیش‌بینی", "type": "number", "min": 0},
                {"name": "expected_savings", "label": "صرفه‌جویی پیش‌بینی", "type": "number", "min": 0},
                {"name": "payback_period_months", "label": "دوره بازگشت (ماه)", "type": "number", "min": 0},
            ],
        },
        {
            "id": "analysis",
            "title": "تحلیل",
            "fields": [
                {"name": "assumptions", "label": "فرضیات", "type": "textarea"},
                {"name": "constraints", "label": "محدودیت‌ها", "type": "textarea"},
                {"name": "risks_summary", "label": "خلاصه ریسک‌ها", "type": "textarea"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# CashFlow Projection Form
# ═══════════════════════════════════════════════════

CASH_FLOW_FORM = {
    "id": "ppm_cash_flow_form",
    "title": "جریان نقدی",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات جریان نقدی",
            "fields": [
                {"name": "business_case", "label": "کیس تجاری", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/business-cases/"},
                {"name": "year", "label": "سال", "type": "number", "required": True, "min": 1},
                {"name": "investment", "label": "سرمایه‌گذاری", "type": "number", "min": 0, "default": 0},
                {"name": "revenue", "label": "درآمد", "type": "number", "min": 0, "default": 0},
                {"name": "savings", "label": "صرفه‌جویی", "type": "number", "min": 0, "default": 0},
                {"name": "operational_cost", "label": "هزینه عملیاتی", "type": "number", "min": 0, "default": 0},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Scoring Model Form
# ═══════════════════════════════════════════════════

SCORING_MODEL_FORM = {
    "id": "ppm_scoring_model_form",
    "title": "مدل امتیازدهی",
    "sections": [
        {
            "id": "basic",
            "title": "اطلاعات پایه",
            "fields": [
                {"name": "name", "label": "نام", "type": "text", "required": True, "max_length": 300},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "portfolio", "label": "پرتفولیو", "type": "lookup", "lookup_endpoint": "/api/v1/ppm/portfolios/"},
                {"name": "is_active", "label": "فعال", "type": "checkbox", "default": True},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Scoring Criterion Form
# ═══════════════════════════════════════════════════

SCORING_CRITERION_FORM = {
    "id": "ppm_scoring_criterion_form",
    "title": "معیار امتیازدهی",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات معیار",
            "fields": [
                {"name": "scoring_model", "label": "مدل امتیازدهی", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/scoring-models/"},
                {"name": "name", "label": "نام", "type": "text", "required": True, "max_length": 300},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "category", "label": "دسته‌بندی", "type": "select", "options": [
                    {"value": "strategic", "label": "راهبردی"},
                    {"value": "financial", "label": "مالی"},
                    {"value": "risk", "label": "ریسک"},
                    {"value": "resource", "label": "منابع"},
                    {"value": "technical", "label": "فنی"},
                    {"value": "organizational", "label": "سازمانی"},
                ], "default": "strategic"},
                {"name": "weight", "label": "وزن", "type": "number", "min": 0, "required": True},
                {"name": "scale_min", "label": "حداقل مقیاس", "type": "number", "default": 1},
                {"name": "scale_max", "label": "حداکثر مقیاس", "type": "number", "default": 10},
                {"name": "order", "label": "ترتیب", "type": "number", "min": 0, "default": 0},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Project Score Form
# ═══════════════════════════════════════════════════

PROJECT_SCORE_FORM = {
    "id": "ppm_project_score_form",
    "title": "امتیاز پروژه",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات امتیاز",
            "fields": [
                {"name": "scoring_model", "label": "مدل امتیازدهی", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/scoring-models/"},
                {"name": "project_id", "label": "پروژه", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/pm/projects/"},
                {"name": "criterion", "label": "معیار", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/scoring-criteria/"},
                {"name": "score", "label": "امتیاز", "type": "number", "required": True, "min": 0},
                {"name": "justification", "label": "توجیه", "type": "textarea"},
                {"name": "scored_by", "label": "امتیازدهنده", "type": "lookup", "lookup_endpoint": "/api/v1/access/users/"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Benefit Plan Form
# ═══════════════════════════════════════════════════

BENEFIT_PLAN_FORM = {
    "id": "ppm_benefit_plan_form",
    "title": "برنامه تحقق منافع",
    "sections": [
        {
            "id": "basic",
            "title": "اطلاعات پایه",
            "fields": [
                {"name": "name", "label": "نام", "type": "text", "required": True, "max_length": 300},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "program", "label": "برنامه", "type": "lookup", "lookup_endpoint": "/api/v1/ppm/programs/"},
                {"name": "portfolio", "label": "پرتفولیو", "type": "lookup", "lookup_endpoint": "/api/v1/ppm/portfolios/"},
                {"name": "is_active", "label": "فعال", "type": "checkbox", "default": True},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Benefit Form
# ═══════════════════════════════════════════════════

BENEFIT_FORM = {
    "id": "ppm_benefit_form",
    "title": "منفعت",
    "sections": [
        {
            "id": "basic",
            "title": "اطلاعات پایه",
            "fields": [
                {"name": "benefit_plan", "label": "برنامه تحقق منافع", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/benefit-plans/"},
                {"name": "title", "label": "عنوان", "type": "text", "required": True, "max_length": 300},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "benefit_type", "label": "نوع", "type": "select", "options": [
                    {"value": "financial", "label": "مالی"},
                    {"value": "non_financial", "label": "غیرمالی"},
                ], "default": "financial"},
                {"name": "category", "label": "دسته‌بندی", "type": "text", "max_length": 100},
            ],
        },
        {
            "id": "measurement",
            "title": "اندازه‌گیری",
            "fields": [
                {"name": "target_value", "label": "مقدار هدف", "type": "number", "min": 0, "default": 0},
                {"name": "actual_value", "label": "مقدار واقعی", "type": "number", "min": 0, "default": 0},
                {"name": "measurement_method", "label": "روش اندازه‌گیری", "type": "textarea"},
                {"name": "frequency", "label": "فرکانس اندازه‌گیری", "type": "select", "options": [
                    {"value": "weekly", "label": "هفتگی"},
                    {"value": "monthly", "label": "ماهانه"},
                    {"value": "quarterly", "label": "سه‌ماهه"},
                    {"value": "yearly", "label": "سالانه"},
                ], "default": "quarterly"},
            ],
        },
        {
            "id": "ownership",
            "title": "مسئولیت و زمان‌بندی",
            "fields": [
                {"name": "owner", "label": "مسئول", "type": "lookup", "lookup_endpoint": "/api/v1/access/users/"},
                {"name": "target_date", "label": "تاریخ هدف", "type": "date"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Benefit Measurement Form
# ═══════════════════════════════════════════════════

BENEFIT_MEASUREMENT_FORM = {
    "id": "ppm_benefit_measurement_form",
    "title": "اندازه‌گیری منفعت",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات اندازه‌گیری",
            "fields": [
                {"name": "benefit", "label": "منفعت", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/benefits/"},
                {"name": "measurement_date", "label": "تاریخ اندازه‌گیری", "type": "date"},
                {"name": "value", "label": "مقدار", "type": "number", "required": True, "min": 0},
                {"name": "notes", "label": "یادداشت", "type": "textarea"},
                {"name": "measured_by", "label": "اندازه‌گیری‌کننده", "type": "lookup", "lookup_endpoint": "/api/v1/access/users/"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Capacity Plan Form
# ═══════════════════════════════════════════════════

CAPACITY_PLAN_FORM = {
    "id": "ppm_capacity_plan_form",
    "title": "طرح ظرفیت",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات اصلی",
            "fields": [
                {"name": "name", "label": "نام", "type": "text", "required": True, "maxLength": 255},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "portfolio_id", "label": "پرتفولیو", "type": "lookup", "lookup_endpoint": "/api/v1/ppm/portfolios/"},
            ],
        },
        {
            "id": "period",
            "title": "دوره زمانی",
            "fields": [
                {"name": "period_start", "label": "شروع دوره", "type": "date", "required": True},
                {"name": "period_end", "label": "پایان دوره", "type": "date", "required": True},
            ],
        },
        {
            "id": "extra",
            "title": "اطلاعات تکمیلی",
            "fields": [
                {"name": "metadata", "label": "متادیتا", "type": "json"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Resource Demand Form
# ═══════════════════════════════════════════════════

RESOURCE_DEMAND_FORM = {
    "id": "ppm_resource_demand_form",
    "title": "تقاضای منبع",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات تقاضا",
            "fields": [
                {"name": "capacity_plan", "label": "طرح ظرفیت", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/capacity-plans/"},
                {"name": "resource_type", "label": "نوع منبع", "type": "text", "required": True, "maxLength": 100},
                {"name": "project_id", "label": "شناسه پروژه", "type": "text"},
                {"name": "demand_hours", "label": "ساعت تقاضا", "type": "number", "required": True, "min": 0},
                {"name": "period", "label": "دوره", "type": "text", "required": True, "maxLength": 50, "placeholder": "مثلاً: ۱۴۰۴-Q1"},
                {"name": "notes", "label": "یادداشت", "type": "textarea"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Resource Supply Form
# ═══════════════════════════════════════════════════

RESOURCE_SUPPLY_FORM = {
    "id": "ppm_resource_supply_form",
    "title": "عرضه منبع",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات عرضه",
            "fields": [
                {"name": "capacity_plan", "label": "طرح ظرفیت", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/ppm/capacity-plans/"},
                {"name": "resource_type", "label": "نوع منبع", "type": "text", "required": True, "maxLength": 100},
                {"name": "available_hours", "label": "ساعت موجود", "type": "number", "required": True, "min": 0},
                {"name": "period", "label": "دوره", "type": "text", "required": True, "maxLength": 50, "placeholder": "مثلاً: ۱۴۰۴-Q1"},
                {"name": "notes", "label": "یادداشت", "type": "textarea"},
            ],
        },
    ],
}


# ═══════════════════════════════════════════════════
# Cross-Project Dependency Form
# ═══════════════════════════════════════════════════

CROSS_PROJECT_DEPENDENCY_FORM = {
    "id": "ppm_cross_project_dependency_form",
    "title": "وابستگی بین پروژه‌ای",
    "sections": [
        {
            "id": "projects",
            "title": "پروژه‌ها",
            "fields": [
                {"name": "predecessor_project_id", "label": "پروژه پیش‌نیاز", "type": "text", "placeholder": "UUID پروژه"},
                {"name": "successor_project_id", "label": "پروژه وابسته", "type": "text", "placeholder": "UUID پروژه"},
            ],
        },
        {
            "id": "milestones",
            "title": "مایلستون‌ها (اختیاری)",
            "fields": [
                {"name": "predecessor_milestone_id", "label": "مایلستون پیش‌نیاز", "type": "text", "placeholder": "UUID مایلستون"},
                {"name": "successor_milestone_id", "label": "مایلستون وابسته", "type": "text", "placeholder": "UUID مایلستون"},
            ],
        },
        {
            "id": "dependency_info",
            "title": "اطلاعات وابستگی",
            "fields": [
                {"name": "dependency_type", "label": "نوع وابستگی", "type": "select", "required": True, "options": [
                    {"value": "FS", "label": "پایان-به-شروع (FS)"},
                    {"value": "SS", "label": "شروع-به-شروع (SS)"},
                    {"value": "FF", "label": "پایان-به-پایان (FF)"},
                    {"value": "SF", "label": "شروع-به-پایان (SF)"},
                ], "defaultValue": "FS"},
                {"name": "lag_days", "label": "تأخیر (روز)", "type": "number", "defaultValue": 0},
                {"name": "impact_description", "label": "توضیح تأثیر", "type": "textarea"},
            ],
        },
        {
            "id": "extra",
            "title": "اطلاعات تکمیلی",
            "fields": [
                {"name": "metadata", "label": "متادیتا", "type": "json"},
            ],
        },
    ],
}
