import type { ExcelFieldOption } from '@mento/shared'; /** * ترتیب ستون‌های خروجی فعالیت دیدار (۲۲ ستون). * بعضی فایل‌ها بدون ردیف هدر هستند و ردیف اول همان دیتا است. */ export const DIDAR_ACTIVITY_POSITIONAL: Array<{ key: string; label: string }> = [ { key: '_type', label: '_type' }, { key: 'kind', label: 'نوع فعالیت' }, { key: 'title', label: 'عنوان فعالیت' }, { key: 'body', label: 'متن فعالیت' }, { key: 'result', label: 'نتیجه فعالیت' }, { key: 'assignee', label: 'مسئول اجرا فعالیت' }, { key: 'creator', label: 'ثبت کننده فعالیت' }, { key: 'dueDate', label: 'تاریخ برنامه ریزی شده اجرا فعالیت' }, { key: 'dueTime', label: 'زمان برنامه ریزی شده اجرا فعالیت' }, { key: 'status', label: 'وضعیت اجرای فعالیت' }, { key: 'doneDate', label: 'تاریخ انجام شدن فعالیت' }, { key: 'dealCode', label: 'کد معامله فعالیت' }, { key: 'cardCode', label: 'کد کارت فعالیت' }, { key: 'doneTime', label: 'زمان انجام شدن فعالیت' }, { key: 'personName', label: 'اشخاص فعالیت' }, { key: 'personCode', label: 'کد اشخاص فعالیت' }, { key: 'personMobile', label: 'موبایل اشخاص فعالیت' }, { key: 'companyName', label: 'شرکت های فعالیت' }, { key: 'companyCode', label: 'کد شرکت های فعالیت' }, { key: 'dealTitle', label: 'معامله فعالیت_1' }, { key: 'cardTitle', label: 'کارت فعالیت_1' }, { key: 'hashtag', label: 'هشتگ' }, ]; /** هم‌تراز با aliases سمت API برای ایمپورت فعالیت */ export const ACTIVITY_EXCEL_ALIASES: Record = { _type: '_type', type: '_type', activity: '_type', نوعفعالیت: 'kind', عنوانفعالیت: 'title', عنوان: 'title', متنفعالیت: 'body', نتیجهفعالیت: 'result', مسئولاجرافعالیت: 'assignee', ثبتکنندهفعالیت: 'creator', تاریخبرنامهریزیشدهاجرافعالیت: 'dueDate', زمانبرنامهریزیشدهاجرافعالیت: 'dueTime', وضعیتاجرایفعالیت: 'status', تاریخانجامشدنفعالیت: 'doneDate', زمانانجامشدنفعالیت: 'doneTime', کدمعاملهفعالیت: 'dealCode', کدکارتفعالیت: 'cardCode', اشخاصفعالیت: 'personName', کداشخاصفعالیت: 'personCode', موبایلاشخاصفعالیت: 'personMobile', شرکتهایفعالیت: 'companyName', کدشرکتهایفعالیت: 'companyCode', معاملهفعالیت1: 'dealTitle', معاملهفعالیت_1: 'dealTitle', کارتفعالیت1: 'cardTitle', کارتفعالیت_1: 'cardTitle', هشتگ: 'hashtag', }; export const ACTIVITY_EXCEL_FIELDS: ExcelFieldOption[] = DIDAR_ACTIVITY_POSITIONAL.filter( (c) => c.key !== '_type', ).map((c) => ({ key: c.key, label: c.label, required: c.key === 'title', })); /** ردیف اول شبیه دیتای دیدار است نه هدر فارسی */ export function looksLikeDidarActivityHeaderless(firstRow: string[]): boolean { const first = (firstRow[0] ?? '').trim().toLowerCase(); if (first !== 'activity' && first !== '_type') return false; const kind = (firstRow[1] ?? '').trim(); return /تماس|پیگیری|جلسه|یادداشت|ملاقات|call|task|meeting|note|پیام/i.test(kind); }