// File: src/core/state.js

export function createInitialState() {
    return {
        // اطلاعات پروژه
        project: {
            id: null,
            code: '',
            name: '',
            description: '',
            startDate: null,
            endDate: null,
            status: 'planned',
            currency: 'IRR'
        },

        // تقویم‌ها
        calendars: {
            byId: {},     // key: calendarId -> calendarObject
            defaultId: null
        },

        // WBS
        wbs: {
            byId: {},     // key: wbsId -> wbsNode
            rootIds: []   // لیست ریشه‌ها
        },

        // تسک‌ها
        tasks: {
            byId: {},        // key: taskId -> taskObject
            allIds: []       // برای حفظ ترتیب
        },

        // وابستگی‌ها
        dependencies: {
            byId: {},        // key: depId -> depObject
            bySuccessorId: {} // key: successorId -> [depIds]
            // (در صورت نیاز: byPredecessorId)
        },

        // منابع
        resources: {
            byId: {},          // key: resourceId -> resourceObject
            byType: {}         // key: type -> [resourceId]
        },

        // تخصیص‌ها
        assignments: {
            byId: {},
            byTaskId: {},      // key: taskId -> [assignmentId]
            byResourceId: {}   // key: resourceId -> [assignmentId]
        },

        // آیتم‌های مالی
        financialItems: {
            byId: {},
            byCategory: {}     // key: category -> [itemId]
        },

        // هزینه‌ها (cache)
        costs: {
            taskCosts: {
                byTaskId: {}   // key: taskId -> costObject
            },
            projectCost: null  // یا یک object
        },

        // Cashflow
        cashflow: {
            byDate: {}         // key: 'YYYY-MM-DD' -> flowObject
        },

        // وضعیت UI (نه داده: فقط presentation)
        ui: {
            selectedTaskId: null,
            selectedResourceId: null,
            filters: {
                taskStatus: null,
                resourceType: null
            },
            gantt: {
                zoomLevel: 'month',   // day/week/month
                viewStart: null,
                viewEnd: null
            },
            layout: {
                // تنظیمات layout (مثلاً نسبت عرض جدول تسک و گانت)
                taskTableWidth: 0.3
            }
        }
    };
}
