# Generated by Django 5.2.11 on 2026-02-16 06:44

import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ("core_currency", "0001_initial"),
        ("core_organization", "0002_company_businesspartner_and_more"),
        ("tenant", "0002_domain_ssl_enabled_tenant_activated_at_and_more"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name="CalendarModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("name", models.CharField(max_length=255, verbose_name="نام")),
                ("description", models.TextField(blank=True, verbose_name="توضیحات")),
                (
                    "is_default",
                    models.BooleanField(
                        default=False, verbose_name="تقویم پیش\u200cفرض"
                    ),
                ),
                (
                    "work_start",
                    models.TimeField(default="08:00", verbose_name="شروع کار"),
                ),
                (
                    "work_end",
                    models.TimeField(default="17:00", verbose_name="پایان کار"),
                ),
                (
                    "hours_per_day",
                    models.PositiveSmallIntegerField(
                        default=8, verbose_name="ساعت کاری در روز"
                    ),
                ),
                (
                    "working_days",
                    models.JSONField(
                        blank=True,
                        default=list,
                        help_text="لیست شماره روزها: 0=دوشنبه ... 6=یکشنبه",
                        verbose_name="روزهای کاری",
                    ),
                ),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
            ],
            options={
                "verbose_name": "تقویم",
                "verbose_name_plural": "تقویم\u200cها",
                "db_table": "pm_calendar",
            },
        ),
        migrations.CreateModel(
            name="ProjectModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "code",
                    models.CharField(
                        db_index=True, max_length=50, verbose_name="کد پروژه"
                    ),
                ),
                ("title", models.CharField(max_length=500, verbose_name="عنوان")),
                ("description", models.TextField(blank=True, verbose_name="توضیحات")),
                (
                    "project_type",
                    models.CharField(
                        choices=[
                            ("portfolio", "پورتفولیو"),
                            ("program", "برنامه"),
                            ("project", "پروژه"),
                            ("sub_project", "زیرپروژه"),
                        ],
                        default="project",
                        max_length=20,
                        verbose_name="نوع",
                    ),
                ),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("draft", "پیش\u200cنویس"),
                            ("planning", "در حال برنامه\u200cریزی"),
                            ("active", "فعال"),
                            ("on_hold", "متوقف"),
                            ("completed", "تکمیل\u200cشده"),
                            ("cancelled", "لغوشده"),
                            ("archived", "آرشیوشده"),
                        ],
                        db_index=True,
                        default="draft",
                        max_length=20,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "priority",
                    models.CharField(
                        choices=[
                            ("critical", "بحرانی"),
                            ("high", "بالا"),
                            ("medium", "متوسط"),
                            ("low", "پایین"),
                        ],
                        default="medium",
                        max_length=20,
                        verbose_name="اولویت",
                    ),
                ),
                (
                    "planned_start",
                    models.DateField(
                        blank=True, null=True, verbose_name="شروع برنامه\u200cای"
                    ),
                ),
                (
                    "planned_end",
                    models.DateField(
                        blank=True, null=True, verbose_name="پایان برنامه\u200cای"
                    ),
                ),
                (
                    "actual_start",
                    models.DateField(blank=True, null=True, verbose_name="شروع واقعی"),
                ),
                (
                    "actual_end",
                    models.DateField(blank=True, null=True, verbose_name="پایان واقعی"),
                ),
                (
                    "progress",
                    models.PositiveSmallIntegerField(
                        default=0, verbose_name="درصد پیشرفت"
                    ),
                ),
                (
                    "total_budget",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="بودجه کل",
                    ),
                ),
                (
                    "actual_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه واقعی",
                    ),
                ),
                (
                    "estimated_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه تخمینی",
                    ),
                ),
                (
                    "color",
                    models.CharField(
                        default="#3B82F6", max_length=20, verbose_name="رنگ"
                    ),
                ),
                (
                    "tags",
                    models.JSONField(
                        blank=True, default=list, verbose_name="برچسب\u200cها"
                    ),
                ),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "calendar",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="projects",
                        to="pm.calendarmodel",
                        verbose_name="تقویم",
                    ),
                ),
                (
                    "company",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.PROTECT,
                        related_name="pm_projects",
                        to="core_organization.company",
                        verbose_name="شرکت",
                    ),
                ),
                (
                    "created_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="created_pm_projects",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="ایجادکننده",
                    ),
                ),
                (
                    "currency",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_projects",
                        to="core_currency.currency",
                        verbose_name="واحد پول",
                    ),
                ),
                (
                    "manager",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="managed_projects",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="مدیر پروژه",
                    ),
                ),
                (
                    "org_unit",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_projects",
                        to="core_organization.organizationalunit",
                        verbose_name="واحد سازمانی",
                    ),
                ),
                (
                    "parent",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="children",
                        to="pm.projectmodel",
                        verbose_name="پروژه مادر",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "updated_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="updated_pm_projects",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="بروزرسان",
                    ),
                ),
            ],
            options={
                "verbose_name": "پروژه",
                "verbose_name_plural": "پروژه\u200cها",
                "db_table": "pm_project",
                "ordering": ["-created_at"],
                "unique_together": {("tenant", "code")},
            },
        ),
        migrations.CreateModel(
            name="ChangeRequestModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "code",
                    models.CharField(
                        blank=True, db_index=True, max_length=50, verbose_name="کد"
                    ),
                ),
                ("title", models.CharField(max_length=500, verbose_name="عنوان")),
                ("description", models.TextField(blank=True, verbose_name="شرح")),
                ("justification", models.TextField(blank=True, verbose_name="توجیه")),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("draft", "پیش\u200cنویس"),
                            ("submitted", "ارسال\u200cشده"),
                            ("under_review", "در حال بررسی"),
                            ("approved", "تأیید\u200cشده"),
                            ("rejected", "ردشده"),
                            ("implemented", "اجراشده"),
                            ("closed", "بسته\u200cشده"),
                        ],
                        db_index=True,
                        default="draft",
                        max_length=20,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "priority",
                    models.CharField(
                        choices=[
                            ("critical", "بحرانی"),
                            ("high", "بالا"),
                            ("medium", "متوسط"),
                            ("low", "پایین"),
                        ],
                        default="medium",
                        max_length=20,
                        verbose_name="اولویت",
                    ),
                ),
                (
                    "scope_impact",
                    models.TextField(blank=True, verbose_name="تأثیر بر دامنه"),
                ),
                (
                    "cost_impact",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="تأثیر هزینه\u200cای",
                    ),
                ),
                (
                    "schedule_impact_days",
                    models.IntegerField(default=0, verbose_name="تأثیر زمانی (روز)"),
                ),
                (
                    "workflow_instance_id",
                    models.UUIDField(
                        blank=True, null=True, verbose_name="نمونه گردش کار"
                    ),
                ),
                (
                    "submitted_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ ارسال"),
                ),
                (
                    "decision_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ تصمیم"),
                ),
                (
                    "implementation_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ اجرا"),
                ),
                (
                    "decision_notes",
                    models.TextField(blank=True, verbose_name="یادداشت تصمیم"),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "requester",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_change_requests_made",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="درخواست\u200cکننده",
                    ),
                ),
                (
                    "reviewer",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_change_requests_reviewed",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="بررسی\u200cکننده",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="change_requests",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
            ],
            options={
                "verbose_name": "درخواست تغییر",
                "verbose_name_plural": "درخواست\u200cهای تغییر",
                "db_table": "pm_change_request",
                "ordering": ["-created_at"],
            },
        ),
        migrations.CreateModel(
            name="BudgetModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("name", models.CharField(max_length=255, verbose_name="نام بودجه")),
                ("description", models.TextField(blank=True, verbose_name="توضیحات")),
                (
                    "original_budget",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="بودجه اولیه",
                    ),
                ),
                (
                    "revised_budget",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="بودجه تجدیدنظرشده",
                    ),
                ),
                (
                    "committed_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه تعهدشده",
                    ),
                ),
                (
                    "actual_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه واقعی",
                    ),
                ),
                (
                    "period_start",
                    models.DateField(blank=True, null=True, verbose_name="شروع دوره"),
                ),
                (
                    "period_end",
                    models.DateField(blank=True, null=True, verbose_name="پایان دوره"),
                ),
                ("is_active", models.BooleanField(default=True, verbose_name="فعال")),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "currency",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_budgets",
                        to="core_currency.currency",
                        verbose_name="واحد پول",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="budgets",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
            ],
            options={
                "verbose_name": "بودجه",
                "verbose_name_plural": "بودجه\u200cها",
                "db_table": "pm_budget",
            },
        ),
        migrations.CreateModel(
            name="BaselineModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("name", models.CharField(max_length=255, verbose_name="نام")),
                ("description", models.TextField(blank=True, verbose_name="توضیحات")),
                (
                    "baseline_type",
                    models.CharField(
                        choices=[
                            ("initial", "اولیه"),
                            ("revised", "تجدیدنظرشده"),
                            ("current", "جاری"),
                        ],
                        default="initial",
                        max_length=20,
                        verbose_name="نوع",
                    ),
                ),
                ("is_active", models.BooleanField(default=False, verbose_name="فعال")),
                (
                    "snapshot_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ"),
                ),
                (
                    "snapshot_data",
                    models.JSONField(
                        blank=True, default=dict, verbose_name="داده\u200cهای خط پایه"
                    ),
                ),
                (
                    "total_tasks",
                    models.PositiveIntegerField(
                        default=0, verbose_name="تعداد تسک\u200cها"
                    ),
                ),
                (
                    "total_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه کل",
                    ),
                ),
                (
                    "planned_start",
                    models.DateField(
                        blank=True, null=True, verbose_name="شروع برنامه\u200cای"
                    ),
                ),
                (
                    "planned_end",
                    models.DateField(
                        blank=True, null=True, verbose_name="پایان برنامه\u200cای"
                    ),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "created_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_baselines",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="ایجادکننده",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="baselines",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
            ],
            options={
                "verbose_name": "خط پایه",
                "verbose_name_plural": "خطوط پایه",
                "db_table": "pm_baseline",
                "ordering": ["-created_at"],
            },
        ),
        migrations.CreateModel(
            name="ResourceModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("name", models.CharField(max_length=255, verbose_name="نام")),
                (
                    "code",
                    models.CharField(
                        blank=True, db_index=True, max_length=50, verbose_name="کد"
                    ),
                ),
                (
                    "resource_type",
                    models.CharField(
                        choices=[
                            ("human", "انسانی"),
                            ("equipment", "تجهیزات"),
                            ("material", "مواد"),
                        ],
                        default="human",
                        max_length=20,
                        verbose_name="نوع",
                    ),
                ),
                (
                    "employee_id",
                    models.UUIDField(
                        blank=True,
                        db_index=True,
                        help_text="UUID مرجع به Employee ماژول HRM",
                        null=True,
                        verbose_name="شناسه کارمند",
                    ),
                ),
                (
                    "standard_rate",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="نرخ استاندارد",
                    ),
                ),
                (
                    "overtime_rate",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="نرخ اضافه\u200cکاری",
                    ),
                ),
                (
                    "cost_per_use",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه هر بار استفاده",
                    ),
                ),
                (
                    "max_units",
                    models.DecimalField(
                        decimal_places=2,
                        default=100,
                        max_digits=5,
                        verbose_name="حداکثر واحد (%)",
                    ),
                ),
                (
                    "email",
                    models.EmailField(blank=True, max_length=254, verbose_name="ایمیل"),
                ),
                (
                    "phone",
                    models.CharField(blank=True, max_length=50, verbose_name="تلفن"),
                ),
                ("is_active", models.BooleanField(default=True, verbose_name="فعال")),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "calendar",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="resources",
                        to="pm.calendarmodel",
                        verbose_name="تقویم",
                    ),
                ),
                (
                    "company",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_resources",
                        to="core_organization.company",
                        verbose_name="شرکت",
                    ),
                ),
                (
                    "currency",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_resources",
                        to="core_currency.currency",
                        verbose_name="واحد پول",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_resources",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="کاربر",
                    ),
                ),
            ],
            options={
                "verbose_name": "منبع",
                "verbose_name_plural": "منابع",
                "db_table": "pm_resource",
                "unique_together": {("tenant", "code")},
            },
        ),
        migrations.CreateModel(
            name="RiskModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "code",
                    models.CharField(
                        blank=True, db_index=True, max_length=50, verbose_name="کد ریسک"
                    ),
                ),
                ("title", models.CharField(max_length=500, verbose_name="عنوان")),
                ("description", models.TextField(blank=True, verbose_name="شرح")),
                (
                    "category",
                    models.CharField(
                        blank=True, max_length=100, verbose_name="دسته\u200cبندی"
                    ),
                ),
                (
                    "probability",
                    models.CharField(
                        choices=[
                            ("very_low", "بسیار کم"),
                            ("low", "کم"),
                            ("medium", "متوسط"),
                            ("high", "زیاد"),
                            ("very_high", "بسیار زیاد"),
                        ],
                        default="medium",
                        max_length=20,
                        verbose_name="احتمال",
                    ),
                ),
                (
                    "impact",
                    models.CharField(
                        choices=[
                            ("negligible", "ناچیز"),
                            ("minor", "جزئی"),
                            ("moderate", "متوسط"),
                            ("major", "عمده"),
                            ("critical", "بحرانی"),
                        ],
                        default="moderate",
                        max_length=20,
                        verbose_name="تأثیر",
                    ),
                ),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("identified", "شناسایی\u200cشده"),
                            ("analyzing", "در حال تحلیل"),
                            ("planned", "برنامه\u200cریزی\u200cشده"),
                            ("mitigating", "در حال کاهش"),
                            ("monitoring", "نظارت"),
                            ("closed", "بسته\u200cشده"),
                            ("occurred", "رخ\u200cداده"),
                        ],
                        db_index=True,
                        default="identified",
                        max_length=20,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "response_strategy",
                    models.CharField(
                        choices=[
                            ("avoid", "اجتناب"),
                            ("mitigate", "کاهش"),
                            ("transfer", "انتقال"),
                            ("accept", "پذیرش"),
                            ("exploit", "بهره\u200cبرداری"),
                            ("enhance", "تقویت"),
                            ("share", "اشتراک"),
                        ],
                        default="mitigate",
                        max_length=20,
                        verbose_name="استراتژی پاسخ",
                    ),
                ),
                (
                    "response_plan",
                    models.TextField(blank=True, verbose_name="برنامه پاسخ"),
                ),
                (
                    "mitigation_actions",
                    models.TextField(blank=True, verbose_name="اقدامات کاهشی"),
                ),
                (
                    "cost_impact",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="تأثیر هزینه\u200cای",
                    ),
                ),
                (
                    "schedule_impact_days",
                    models.IntegerField(default=0, verbose_name="تأثیر زمانی (روز)"),
                ),
                (
                    "affected_tasks",
                    models.JSONField(
                        blank=True, default=list, verbose_name="تسک\u200cهای تأثیرپذیر"
                    ),
                ),
                (
                    "identified_date",
                    models.DateField(
                        blank=True, null=True, verbose_name="تاریخ شناسایی"
                    ),
                ),
                (
                    "due_date",
                    models.DateField(blank=True, null=True, verbose_name="مهلت"),
                ),
                (
                    "closed_date",
                    models.DateField(
                        blank=True, null=True, verbose_name="تاریخ بسته\u200cشدن"
                    ),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "owner",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="owned_pm_risks",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="صاحب ریسک",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="risks",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
            ],
            options={
                "verbose_name": "ریسک",
                "verbose_name_plural": "ریسک\u200cها",
                "db_table": "pm_risk",
                "ordering": ["-created_at"],
            },
        ),
        migrations.CreateModel(
            name="TaskModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "code",
                    models.CharField(
                        blank=True, db_index=True, max_length=50, verbose_name="کد WBS"
                    ),
                ),
                ("title", models.CharField(max_length=500, verbose_name="عنوان")),
                ("description", models.TextField(blank=True, verbose_name="توضیحات")),
                (
                    "sort_order",
                    models.IntegerField(db_index=True, default=0, verbose_name="ترتیب"),
                ),
                (
                    "task_type",
                    models.CharField(
                        choices=[
                            ("task", "تسک"),
                            ("milestone", "نقطه عطف"),
                            ("summary", "تسک خلاصه"),
                        ],
                        default="task",
                        max_length=20,
                        verbose_name="نوع",
                    ),
                ),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("not_started", "شروع نشده"),
                            ("in_progress", "در حال انجام"),
                            ("completed", "تکمیل\u200cشده"),
                            ("on_hold", "متوقف"),
                            ("cancelled", "لغوشده"),
                        ],
                        db_index=True,
                        default="not_started",
                        max_length=20,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "planned_start",
                    models.DateField(
                        blank=True, null=True, verbose_name="شروع برنامه\u200cای"
                    ),
                ),
                (
                    "planned_end",
                    models.DateField(
                        blank=True, null=True, verbose_name="پایان برنامه\u200cای"
                    ),
                ),
                (
                    "actual_start",
                    models.DateField(blank=True, null=True, verbose_name="شروع واقعی"),
                ),
                (
                    "actual_end",
                    models.DateField(blank=True, null=True, verbose_name="پایان واقعی"),
                ),
                (
                    "duration",
                    models.PositiveIntegerField(default=1, verbose_name="مدت (روز)"),
                ),
                (
                    "progress",
                    models.PositiveSmallIntegerField(
                        default=0, verbose_name="درصد پیشرفت"
                    ),
                ),
                (
                    "planned_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه برنامه\u200cای",
                    ),
                ),
                (
                    "actual_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه واقعی",
                    ),
                ),
                (
                    "is_critical",
                    models.BooleanField(default=False, verbose_name="مسیر بحرانی"),
                ),
                (
                    "is_milestone",
                    models.BooleanField(default=False, verbose_name="نقطه عطف"),
                ),
                (
                    "early_start",
                    models.DateField(blank=True, null=True, verbose_name="ES"),
                ),
                (
                    "early_finish",
                    models.DateField(blank=True, null=True, verbose_name="EF"),
                ),
                (
                    "late_start",
                    models.DateField(blank=True, null=True, verbose_name="LS"),
                ),
                (
                    "late_finish",
                    models.DateField(blank=True, null=True, verbose_name="LF"),
                ),
                (
                    "total_float",
                    models.IntegerField(
                        blank=True, null=True, verbose_name="شناوری کل"
                    ),
                ),
                (
                    "free_float",
                    models.IntegerField(
                        blank=True, null=True, verbose_name="شناوری آزاد"
                    ),
                ),
                (
                    "color",
                    models.CharField(blank=True, max_length=20, verbose_name="رنگ"),
                ),
                (
                    "tags",
                    models.JSONField(
                        blank=True, default=list, verbose_name="برچسب\u200cها"
                    ),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "assignee",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_assigned_tasks",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="مسئول",
                    ),
                ),
                (
                    "parent",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="children",
                        to="pm.taskmodel",
                        verbose_name="تسک والد",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="tasks",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
            ],
            options={
                "verbose_name": "تسک",
                "verbose_name_plural": "تسک\u200cها",
                "db_table": "pm_task",
                "ordering": ["sort_order", "created_at"],
            },
        ),
        migrations.CreateModel(
            name="CostEntryModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("description", models.CharField(max_length=500, verbose_name="شرح")),
                (
                    "amount",
                    models.DecimalField(
                        decimal_places=0, default=0, max_digits=18, verbose_name="مبلغ"
                    ),
                ),
                (
                    "cost_type",
                    models.CharField(
                        choices=[
                            ("fixed", "ثابت"),
                            ("variable", "متغیر"),
                            ("overhead", "سربار"),
                        ],
                        default="variable",
                        max_length=20,
                        verbose_name="نوع هزینه",
                    ),
                ),
                (
                    "entry_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ ثبت"),
                ),
                (
                    "reference_number",
                    models.CharField(
                        blank=True, max_length=100, verbose_name="شماره مرجع"
                    ),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "budget",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="cost_entries",
                        to="pm.budgetmodel",
                        verbose_name="بودجه",
                    ),
                ),
                (
                    "created_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_cost_entries",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="ثبت\u200cکننده",
                    ),
                ),
                (
                    "currency",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_cost_entries",
                        to="core_currency.currency",
                        verbose_name="واحد پول",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="cost_entries",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
                (
                    "resource",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="cost_entries",
                        to="pm.resourcemodel",
                        verbose_name="منبع",
                    ),
                ),
                (
                    "task",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="cost_entries",
                        to="pm.taskmodel",
                        verbose_name="تسک",
                    ),
                ),
            ],
            options={
                "verbose_name": "ثبت هزینه",
                "verbose_name_plural": "ثبت\u200cهای هزینه",
                "db_table": "pm_cost_entry",
                "ordering": ["-entry_date"],
            },
        ),
        migrations.CreateModel(
            name="CommentModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("content", models.TextField(verbose_name="محتوا")),
                (
                    "mentions",
                    models.JSONField(
                        blank=True, default=list, verbose_name="منشن\u200cها"
                    ),
                ),
                (
                    "is_edited",
                    models.BooleanField(default=False, verbose_name="ویرایش\u200cشده"),
                ),
                (
                    "is_deleted",
                    models.BooleanField(default=False, verbose_name="حذف\u200cشده"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "parent",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="replies",
                        to="pm.commentmodel",
                        verbose_name="پاسخ به",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="pm_comments",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="کاربر",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="comments",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
                (
                    "task",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="comments",
                        to="pm.taskmodel",
                        verbose_name="تسک",
                    ),
                ),
            ],
            options={
                "verbose_name": "نظر",
                "verbose_name_plural": "نظرات",
                "db_table": "pm_comment",
                "ordering": ["created_at"],
            },
        ),
        migrations.AddField(
            model_name="budgetmodel",
            name="task",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name="budgets",
                to="pm.taskmodel",
                verbose_name="تسک (WBS)",
            ),
        ),
        migrations.CreateModel(
            name="ActivityLogModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "action",
                    models.CharField(db_index=True, max_length=50, verbose_name="عمل"),
                ),
                (
                    "entity_type",
                    models.CharField(max_length=50, verbose_name="نوع موجودیت"),
                ),
                (
                    "entity_id",
                    models.UUIDField(
                        blank=True, null=True, verbose_name="شناسه موجودیت"
                    ),
                ),
                ("description", models.TextField(blank=True, verbose_name="شرح")),
                (
                    "changes",
                    models.JSONField(blank=True, default=dict, verbose_name="تغییرات"),
                ),
                (
                    "ip_address",
                    models.GenericIPAddressField(
                        blank=True, null=True, verbose_name="آدرس IP"
                    ),
                ),
                (
                    "created_at",
                    models.DateTimeField(
                        auto_now_add=True, db_index=True, verbose_name="تاریخ"
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_activity_logs",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="کاربر",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="activity_logs",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
                (
                    "task",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="activity_logs",
                        to="pm.taskmodel",
                        verbose_name="تسک",
                    ),
                ),
            ],
            options={
                "verbose_name": "لاگ فعالیت",
                "verbose_name_plural": "لاگ فعالیت\u200cها",
                "db_table": "pm_activity_log",
                "ordering": ["-created_at"],
            },
        ),
        migrations.CreateModel(
            name="TimesheetModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "work_date",
                    models.DateField(db_index=True, verbose_name="تاریخ کار"),
                ),
                (
                    "regular_hours",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=5,
                        verbose_name="ساعت عادی",
                    ),
                ),
                (
                    "overtime_hours",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=5,
                        verbose_name="ساعت اضافه\u200cکاری",
                    ),
                ),
                (
                    "description",
                    models.CharField(
                        blank=True, max_length=500, verbose_name="شرح فعالیت"
                    ),
                ),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("draft", "پیش\u200cنویس"),
                            ("submitted", "ارسال\u200cشده"),
                            ("approved", "تأیید\u200cشده"),
                            ("rejected", "ردشده"),
                        ],
                        db_index=True,
                        default="draft",
                        max_length=20,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "approved_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ تأیید"),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "approved_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_approved_timesheets",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="تأییدکننده",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="timesheets",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
                (
                    "resource",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="timesheets",
                        to="pm.resourcemodel",
                        verbose_name="منبع",
                    ),
                ),
                (
                    "task",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="timesheets",
                        to="pm.taskmodel",
                        verbose_name="تسک",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="pm_timesheet_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="pm_timesheets",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="کاربر",
                    ),
                ),
            ],
            options={
                "verbose_name": "تایم\u200cشیت",
                "verbose_name_plural": "تایم\u200cشیت\u200cها",
                "db_table": "pm_timesheet",
                "ordering": ["-work_date"],
            },
        ),
        migrations.CreateModel(
            name="HolidayModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("name", models.CharField(max_length=255, verbose_name="نام")),
                ("holiday_date", models.DateField(db_index=True, verbose_name="تاریخ")),
                (
                    "is_recurring",
                    models.BooleanField(default=False, verbose_name="تکرارشونده"),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "calendar",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="holidays",
                        to="pm.calendarmodel",
                        verbose_name="تقویم",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
            ],
            options={
                "verbose_name": "تعطیلی",
                "verbose_name_plural": "تعطیلات",
                "db_table": "pm_holiday",
                "ordering": ["holiday_date"],
                "unique_together": {("calendar", "holiday_date")},
            },
        ),
        migrations.CreateModel(
            name="ProjectMemberModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "role",
                    models.CharField(
                        choices=[
                            ("manager", "مدیر"),
                            ("member", "عضو"),
                            ("viewer", "مشاهده\u200cکننده"),
                            ("stakeholder", "ذینفع"),
                        ],
                        default="member",
                        max_length=20,
                        verbose_name="نقش",
                    ),
                ),
                ("is_active", models.BooleanField(default=True, verbose_name="فعال")),
                (
                    "joined_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ عضویت"),
                ),
                (
                    "left_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ خروج"),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="pm_memberships",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="کاربر",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="members",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
            ],
            options={
                "verbose_name": "عضو پروژه",
                "verbose_name_plural": "اعضای پروژه",
                "db_table": "pm_project_member",
                "unique_together": {("project", "user")},
            },
        ),
        migrations.CreateModel(
            name="ResourceAssignmentModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "units",
                    models.DecimalField(
                        decimal_places=2,
                        default=100,
                        max_digits=5,
                        verbose_name="واحد (%)",
                    ),
                ),
                (
                    "planned_hours",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=10,
                        verbose_name="ساعت برنامه\u200cای",
                    ),
                ),
                (
                    "actual_hours",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=10,
                        verbose_name="ساعت واقعی",
                    ),
                ),
                (
                    "planned_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه برنامه\u200cای",
                    ),
                ),
                (
                    "actual_cost",
                    models.DecimalField(
                        decimal_places=0,
                        default=0,
                        max_digits=18,
                        verbose_name="هزینه واقعی",
                    ),
                ),
                (
                    "start_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ شروع"),
                ),
                (
                    "end_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ پایان"),
                ),
                ("is_active", models.BooleanField(default=True, verbose_name="فعال")),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="resource_assignments",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "resource",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="assignments",
                        to="pm.resourcemodel",
                        verbose_name="منبع",
                    ),
                ),
                (
                    "task",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="resource_assignments",
                        to="pm.taskmodel",
                        verbose_name="تسک",
                    ),
                ),
            ],
            options={
                "verbose_name": "تخصیص منبع",
                "verbose_name_plural": "تخصیص\u200cهای منبع",
                "db_table": "pm_resource_assignment",
                "unique_together": {("task", "resource")},
            },
        ),
        migrations.CreateModel(
            name="DependencyModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "dependency_type",
                    models.CharField(
                        choices=[
                            ("FS", "پایان به شروع"),
                            ("SS", "شروع به شروع"),
                            ("FF", "پایان به پایان"),
                            ("SF", "شروع به پایان"),
                        ],
                        default="FS",
                        max_length=2,
                        verbose_name="نوع وابستگی",
                    ),
                ),
                (
                    "lag_days",
                    models.IntegerField(default=0, verbose_name="تأخیر/تقدم (روز)"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "project",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="dependencies",
                        to="pm.projectmodel",
                        verbose_name="پروژه",
                    ),
                ),
                (
                    "predecessor",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="successor_dependencies",
                        to="pm.taskmodel",
                        verbose_name="پیشنیاز",
                    ),
                ),
                (
                    "successor",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="predecessor_dependencies",
                        to="pm.taskmodel",
                        verbose_name="جانشین",
                    ),
                ),
            ],
            options={
                "verbose_name": "وابستگی",
                "verbose_name_plural": "وابستگی\u200cها",
                "db_table": "pm_dependency",
                "unique_together": {("predecessor", "successor")},
            },
        ),
    ]
