diff --git a/apps/api/src/common/excel.ts b/apps/api/src/common/excel.ts index baff4bb..5a1885e 100644 --- a/apps/api/src/common/excel.ts +++ b/apps/api/src/common/excel.ts @@ -2,23 +2,37 @@ import { BadRequestException } from '@nestjs/common'; import ExcelJS from 'exceljs'; export function cellStr(value: ExcelJS.CellValue | undefined): string { - if (value == null) return ''; - if (typeof value === 'string' || typeof value === 'number') { - return String(value).trim(); + try { + if (value == null) return ''; + if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { + return String(value).trim(); + } + if (value instanceof Date) { + return Number.isNaN(value.getTime()) ? '' : value.toISOString(); + } + if (typeof value === 'object' && 'richText' in value && Array.isArray(value.richText)) { + return value.richText.map((part) => part?.text ?? '').join('').trim(); + } + if (typeof value === 'object' && 'text' in value && typeof value.text === 'string') { + return value.text.trim(); + } + if (typeof value === 'object' && 'result' in value && value.result != null) { + const result = value.result; + if (typeof result === 'string' || typeof result === 'number' || typeof result === 'boolean') { + return String(result).trim(); + } + if (result instanceof Date) { + return Number.isNaN(result.getTime()) ? '' : result.toISOString(); + } + return ''; + } + if (typeof value === 'object' && 'error' in value && value.error != null) { + return String(value.error).trim(); + } + return ''; + } catch { + return ''; } - if (typeof value === 'object' && 'richText' in value && Array.isArray(value.richText)) { - return value.richText.map((part) => part.text).join('').trim(); - } - if (typeof value === 'object' && 'text' in value && typeof value.text === 'string') { - return value.text.trim(); - } - if (typeof value === 'object' && 'result' in value && value.result != null) { - return String(value.result).trim(); - } - if (value instanceof Date) { - return value.toISOString(); - } - return String(value).trim(); } export function normalizeHeader(raw: string) { @@ -182,7 +196,17 @@ export async function workbookFromUpload(file: Express.Multer.File | undefined) throw new BadRequestException('فایل اکسل انتخاب نشده است'); } const wb = new ExcelJS.Workbook(); - await wb.xlsx.load(Uint8Array.from(file.buffer) as unknown as ExcelJS.Buffer); + try { + // Pass Node Buffer directly — Uint8Array copies can break ExcelJS on some runtimes. + await wb.xlsx.load(file.buffer as unknown as ExcelJS.Buffer); + } catch (err) { + const detail = err instanceof Error ? err.message : ''; + throw new BadRequestException( + detail.includes('central directory') || detail.includes('zip') + ? 'فایل اکسل نامعتبر است. فقط فرمت .xlsx پشتیبانی می‌شود (نه .xls یا csv).' + : 'خواندن فایل اکسل ناموفق بود. فایل را با فرمت .xlsx ذخیره کنید و دوباره تلاش کنید.', + ); + } const sheet = wb.worksheets[0]; if (!sheet) throw new BadRequestException('شیت اکسل پیدا نشد'); return sheet; diff --git a/apps/api/src/contacts/companies.controller.ts b/apps/api/src/contacts/companies.controller.ts index c35251a..eb16911 100644 --- a/apps/api/src/contacts/companies.controller.ts +++ b/apps/api/src/contacts/companies.controller.ts @@ -1,4 +1,5 @@ import { + BadRequestException, Body, Controller, Delete, @@ -14,6 +15,7 @@ import { UseInterceptors, } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; +import { memoryStorage } from 'multer'; import type { Response } from 'express'; import { JwtAuthGuard } from '../auth/jwt-auth.guard'; import { CurrentUser } from '../auth/current-user.decorator'; @@ -23,6 +25,11 @@ import { CreateCompanyDto, ListQueryDto, UpdateCompanyDto } from './dto'; import { ContactsExcelService } from './contacts-excel.service'; import { brand } from '@mento/shared'; +const excelUpload = FileInterceptor('file', { + storage: memoryStorage(), + limits: { fileSize: 15_000_000 }, +}); + @Controller('companies') @UseGuards(JwtAuthGuard) export class CompaniesController { @@ -57,18 +64,24 @@ export class CompaniesController { } @Post('import/preview') - @UseInterceptors(FileInterceptor('file')) - previewImport(@UploadedFile() file: Express.Multer.File) { + @UseInterceptors(excelUpload) + previewImport(@UploadedFile() file?: Express.Multer.File) { + if (!file?.buffer?.length) { + throw new BadRequestException('فایل ارسال نشده'); + } return this.excelService.previewCompanies(file); } @Post('import') - @UseInterceptors(FileInterceptor('file')) + @UseInterceptors(excelUpload) import( @CurrentUser() user: Actor, - @UploadedFile() file: Express.Multer.File, + @UploadedFile() file?: Express.Multer.File, @Body('mapping') mapping?: string, ) { + if (!file?.buffer?.length) { + throw new BadRequestException('فایل ارسال نشده'); + } return this.excelService.importCompanies(user, file, mapping); } diff --git a/apps/api/src/contacts/people.controller.ts b/apps/api/src/contacts/people.controller.ts index 969898f..46af7a2 100644 --- a/apps/api/src/contacts/people.controller.ts +++ b/apps/api/src/contacts/people.controller.ts @@ -1,4 +1,5 @@ import { + BadRequestException, Body, Controller, Delete, @@ -14,6 +15,7 @@ import { UseInterceptors, } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; +import { memoryStorage } from 'multer'; import type { Response } from 'express'; import { JwtAuthGuard } from '../auth/jwt-auth.guard'; import { CurrentUser } from '../auth/current-user.decorator'; @@ -25,6 +27,11 @@ import { PeopleService } from './people.service'; import { ContactsExcelService } from './contacts-excel.service'; import { brand } from '@mento/shared'; +const excelUpload = FileInterceptor('file', { + storage: memoryStorage(), + limits: { fileSize: 15_000_000 }, +}); + @Controller('people') @UseGuards(JwtAuthGuard, OrgModuleGuard) @RequireOrgModule('customers') @@ -61,20 +68,24 @@ export class PeopleController { } @Post('import/preview') - @UseInterceptors(FileInterceptor('file')) - previewImport( - @UploadedFile() file: Express.Multer.File, - ) { + @UseInterceptors(excelUpload) + previewImport(@UploadedFile() file?: Express.Multer.File) { + if (!file?.buffer?.length) { + throw new BadRequestException('فایل ارسال نشده'); + } return this.excelService.previewPeople(file); } @Post('import') - @UseInterceptors(FileInterceptor('file')) + @UseInterceptors(excelUpload) import( @CurrentUser() user: Actor, - @UploadedFile() file: Express.Multer.File, + @UploadedFile() file?: Express.Multer.File, @Body('mapping') mapping?: string, ) { + if (!file?.buffer?.length) { + throw new BadRequestException('فایل ارسال نشده'); + } return this.excelService.importPeople(user, file, mapping); } diff --git a/docs/export-doc.py b/docs/export-doc.py index b0b4c5e..7c65730 100644 --- a/docs/export-doc.py +++ b/docs/export-doc.py @@ -305,6 +305,31 @@ def parse_table(lines: list[str], start: int) -> tuple[list[str], list[list[str] return header, rows, i +def add_image(doc, path: Path, caption: str = ""): + if not path.exists(): + add_quote(doc, f"(عکس پیدا نشد: {path.name})") + return + p = doc.add_paragraph() + set_paragraph_rtl(p, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=4, space_before=8) + run = p.add_run() + # Keep screenshots readable on A4 without overflowing margins. + run.add_picture(str(path), width=Cm(16.5)) + if caption: + cap = doc.add_paragraph() + set_paragraph_rtl(cap, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=10) + run = cap.add_run(caption) + set_run_font(run, 11, color=MUTED) + + +IMG_RE = re.compile(r"^!\[([^\]]*)\]\(([^)]+)\)$") + + +def resolve_image_path(md_path: Path, rel: str) -> Path: + raw = rel.strip() + candidate = (md_path.parent / raw).resolve() + return candidate + + def convert(md_path: Path, docx_path: Path, header_text: str, footer_text: str): if not md_path.exists(): raise FileNotFoundError(md_path) @@ -345,6 +370,12 @@ def convert(md_path: Path, docx_path: Path, header_text: str, footer_text: str): i += 1 continue + img = IMG_RE.match(stripped) + if img: + add_image(doc, resolve_image_path(md_path, img.group(2)), img.group(1).strip()) + i += 1 + continue + if stripped.startswith("# "): add_heading(doc, stripped[2:], 1) i += 1 diff --git a/docs/landing-data.md b/docs/landing-data.md new file mode 100644 index 0000000..580f8c6 --- /dev/null +++ b/docs/landing-data.md @@ -0,0 +1,144 @@ +# محتوای لندینگ مُنتَکت (Montact CRM) + +> **منبع:** داده‌های واقعی از `packages/shared/src/brand.ts`، `packages/shared/src/index.ts` (پلن و ماژول‌ها)، `apps/web/src/lib/nav-hubs.ts`، `docs/قابلیت‌های-منتکت.md`، `docs/راهنما-و-نقشه-راه.md` +> **پنل زنده:** `https://crm.montzar.ir` +> **تاریخ استخراج:** ۱۴۰۴/۰۷/۰۹ + +--- + +## ۱) هیرو سکشن + +**عنوان (FA):** مُنتَکت +**عنوان (EN):** Montact CRM +**زیرعنوان:** نرم‌افزار مدیریت ارتباط با مشتری +**شرکت:** Mentech + +**تیتر پیشنهادی لندینگ:** +CRM فروش و پشتیبانی برای تیم‌های ایرانی — از سرنخ تا فاکتور، در یک پنل. + +**متن کوتاه (۲–۳ خط):** +مُنتَکت دفتر کار دیجیتال فروش شماست: مشتری و لید، کاریز معامله، کار روزانه، گفتگو و پشتیبانی، گزارش و اتوماسیون — با تاریخ شمسی، پیامک و رابط موبایل. + +**دکمه‌ها:** +| دکمه | مقصد | +|---|---| +| ورود / شروع | `https://crm.montzar.ir` | +| ثبت‌نام سازمان | همان دامنه → ثبت‌نام با OTP موبایل | + +**آمار کوتاه (قابل نمایش در هیرو):** +| عدد | معنی | +|---|---| +| ۳۴+ | ماژول/قابلیت قابل فعال‌سازی برای هر سازمان | +| ۴ | نقش تیم: مالک، مدیر، فروش، پشتیبانی | +| ۱۵ روز | دوره دمو رسمی (`trial`) | + +--- + +## ۲) درباره CRM (مُنتَکت چیست؟) + +**تعریف یک پارagraph:** +مُنتَکت یک CRM **فروش‌محور و پشتیبانی‌محور** برای کسب‌وکارهای ایرانی است. حلقهٔ اصلی محصول این است: + +```text +سرنخ → شخص / شرکت → معامله در کاریز → فعالیت و یادداشت هوشمند → فاکتور و پیش‌فاکتور → پس از فروش (تیکت، پرتال، وفاداری) +``` + +**برای چه کسب‌وکارهایی مناسب است؟** +فروش B2B/B2C، تیم‌های چندنفره، و کسب‌وکارهایی که به **پیگیری منظم مشتری**، **کاریز فروش** و **پشتیبانی بعد از فروش** نیاز دارند — از جمله حوزه **طلا و جواهر** با اتصال **ته‌حساب**. + +**تمایز کلی (یک جمله):** +هویت بصری مستقل، تمرکز روی ثبت سریع اطلاعات (Smart Notes) و دستیار هوشمند روی پرونده مشتری — نه فقط جدول و فرم. + +**فاز محصول (از نقشه راه):** +هسته فاز ۱ (فروش، Smart Notes، مالی سبک، پشتیبانی، گزارش، یکپارچگی‌ها) **پیاده‌سازی شده**؛ لندینگ بازاریابی Nuxt عمداً بعد از ثبات محصول آماده می‌شود (`apps/landing` فعلاً خالی است). + +--- + +## ۳) کیفیت و قابلیت‌ها (حداکثر ۱۰ مورد — اولویت بالا) + +| # | قابلیت | توضیح یک‌خطی برای لندینگ | +|---|---|---| +| 1 | **کاریز فروش (Kanban)** | معاملات را بین مراحل بکشید؛ چند قیف فروش برای یک سازمان. | +| 2 | **اشخاص و شرکت‌ها** | دفترچه مشتری با جستجو، ضدتکراری، اکسل و فیلد سفارشی. | +| 3 | **مدیریت لیدها** | لید جدا از مشتری؛ ایمپورت اکسل، تخصیص، کاریز لید، تبدیل به مشتری. | +| 4 | **فرم‌ساز سرنخ** | فرم عمومی با لینک، iframe و QR برای جذب سرنخ. | +| 5 | **Smart Notes و Montact Memory** | یادداشت سریع روی پرونده + خلاصه پایدار مشتری با منبع. | +| 6 | **Ask Montact** | پرسش به زبان طبیعی از روی یادداشت‌ها و زمینه پرونده. | +| 7 | **فعالیت و تقویم شمسی** | تماس، جلسه، وظیفه؛ یادآور با اعلان و پیامک. | +| 8 | **پیش‌فاکتور و فاکتور** | پیشنهاد قیمت، صدور فاکتور، پرداخت و اقساط سبک. | +| 9 | **تیکت و پرتال مشتری** | پشتیبانی داخلی + ورود مشتری با OTP در `/p/:slug`. | +| 10 | **اتوماسیون و پیامک گروهی** | قوانین اگر/آنگاه + کمپین پیامک به مخاطبان انتخاب‌شده. | + +**یکپارچگی‌های مکمل (برای سکشن فرعی یا accordion، نه لزوماً در ۱۰ تای بالا):** ته‌حساب (طلا و جواهر)، ووکامرس، VoIP و خلاصه تماس با AI، API و وب‌هوک، گفتگو (`conversations`). + +--- + +## ۴) نقاط قوت (حداکثر ۱۰ مورد — اولویت بالا) + +| # | نقطه قوت | چرا برای لندینگ مهم است | +|---|---|---| +| 1 | **بومی و فارسی** | RTL، تاریخ جلالی، جداکننده هزارگان مبلغ، OTP/پیامک. | +| 2 | **پرونده یکپارچه مشتری** | شخص/شرکت، معامله، یادداشت، فعالیت و تایم‌لاین در یک جا. | +| 3 | **کم‌کردن اصطکاک ثبت** | Smart Notes شبیه یادداشت سریع؛ کمتر وابسته به فرم‌های سنگین. | +| 4 | **AI عملی، نه نمایشی** | Memory، Ask، پیشنهاد اقدام با تأیید کاربر، Voice-to-Text. | +| 5 | **تیم واقعی فروش/پشتیبانی** | نقش‌ها و محدودیت دید پرونده برای کارشناس vs مدیر. | +| 6 | **چندمحیطی (multi-tenant)** | هر سازمان فضای جدا؛ اشتراک روی مالک حساب. | +| 7 | **ماژولار** | بیش از ۳۰ ماژول — فعال‌سازی متناسب با نیاز سازمان. | +| 8 | **موبایل‌فرندلی** | منوی کشویی و لیست کارت‌محور برای کار میدانی. | +| 9 | **تمایز صنف طلا و جواهر** | اتصال ته‌حساب: مانده، اسناد و ثبت سند از CRM. | +| 10 | **قابل استقرار اختصاصی** | monorepo (Vue + NestJS + PostgreSQL) — مناسب نصب روی سرور خودتان. | + +--- + +## ۵) تعرفه‌ها و قیمت + +> **وضعیت در کد:** مدت و سقف محیط برای هر پلن تعریف شده؛ **مبلغ ریالی/تومانی در مخزن ثبت نشده** (فعال‌سازی دستی از پنل `/adm`؛ درگاه پرداخت در فاز بعد). + +### پلن‌های اشتراک (از `@mento/shared`) + +| کد پلن | نام نمایشی | مدت پیش‌فرض | حداکثر محیط (سازمان) پیش‌فرض | +|---|---|---|---| +| `trial` | دمو ۱۵ روزه | ۱۵ روز | ۱ | +| `monthly` | ماهانه | ۳۰ روز | ۳ | +| `quarterly` | سه‌ماهه | ۹۰ روز | ۵ | +| `semiannual` | شش‌ماهه | ۱۸۰ روز | ۱۰ | +| `yearly` | یکساله | ۳۶۵ روز | ۲۰ | +| `custom` | سفارشی | تاریخ پایان دستی | طبق تنظیم | + +### پیشنهاد کپی لندینگ (بدون عدد قیمت) + +- **شروع:** «۱۵ روز دمو رایگان» — ثبت‌نام با موبایل و ساخت اولین سازمان. +- **بعد از دمو:** تماس برای پلن ماهانه / فصلی / سالانه و فعال‌سازی ماژول‌ها. +- **CTA:** «قیمت و پکیج ماژول‌ها را بگیرید» → فرم تماس یا واتساپ (خارج از مخزن). + +*(وقتی مبلغ نهایی تعیین شد، همین جدول را با ستون «قیمت» تکمیل کنید.)* + +--- + +## ۶) مشتریان من (نمایش روی لندینگ) + +> **وضعیت در مخزن:** فهرست، لوگو یا نظر مشتریان واقعی **در پروژه ذخیره نشده** (داده عملیاتی داخل دیتابیس production است، نه در git). +> برای این سکشن باید از تیم فروش/پشتیبانی نام شرکت‌ها، لوگو (با اجازه) و یک جمله نتیجه را جمع کنید. + +**الگوی placeholder (تا دیتای واقعی بیاید):** + +| نام سازمان | حوزه | یک جمله نتیجه | +|---|---|---| +| *(مثال: فروشگاه …)* | *(مثلاً طلا و جواهر)* | *(مثلاً «پیگیری معاملات و مانده ته‌حساب روی یک پرونده»)* | +| … | … | … | + +**آنچه در محصول برای «مشتری نهایی» پشتیبانی می‌شود (برای متن سکشن، نه جایگزین لوگو):** +پرتال OTP، تیکت، FAQ و CSAT — مشتری شما بدون ورود به پنل داخلی با موبایل وارد می‌شود. + +--- + +## منابع برای به‌روزرسانی + +| موضوع | فایل | +|---|---| +| برند و شعار | `packages/shared/src/brand.ts` | +| پلن اشتراک | `packages/shared/src/index.ts` → `BILLING_PLAN_*` | +| برچسب ماژول‌ها | `ORG_MODULE_LABELS` در همان فایل | +| توضیح منو/هاب | `apps/web/src/lib/nav-hubs.ts` | +| فهرست کامل قابلیت | `docs/قابلیت‌های-منتکت.md` | +| فلسفه محصول | `docs/راهنما-و-نقشه-راه.md` | diff --git a/docs/user-guide/README.md b/docs/user-guide/README.md new file mode 100644 index 0000000..0214f4c --- /dev/null +++ b/docs/user-guide/README.md @@ -0,0 +1,34 @@ +# راهنمای تصویری مُنتَکت + +نسخهٔ کامل متنی: + +→ [`../راهنمای-کاربری.md`](../راهنمای-کاربری.md) + +نسخهٔ Word: + +→ [`../راهنمای-کاربری.docx`](../راهنمای-کاربری.docx) + +## فهرست عکس‌ها + +| فایل | موضوع | +|---|---| +| `images/01-dashboard-desktop.png` | داشبورد دسکتاپ | +| `images/02-contacts-people.png` | اشخاص | +| `images/03-pipeline-desktop.png` | کاریز فروش | +| `images/04-conversations-desktop.png` | گفتگو | +| `images/05-reports-desktop.png` | گزارش‌ها | +| `images/06-dashboard-mobile.png` | داشبورد موبایل‌وار | +| `images/07-contacts-companies.png` | شرکت‌ها | +| `images/08-leads-list.png` | فهرست لیدها | +| `images/09-leads-board.png` | کاریز لیدها | +| `images/10-activities.png` | میز کار | +| `images/11-calendar.png` | تقویم | +| `images/12-notes.png` | یادداشت‌ها | +| `images/13-tickets.png` | تیکت‌ها | +| `images/14-loyalty.png` | باشگاه مشتریان | +| `images/15-sms-campaigns.png` | پیامک گروهی | +| `images/16-automations.png` | اتوماسیون گردش کار | +| `images/17-message-automations.png` | اتوماسیون پیامک | +| `images/18-settings-team.png` | تنظیمات تیم | +| `images/19-products.png` | محصولات | +| `images/20-projects.png` | کاریز پروژه | diff --git a/docs/user-guide/images/01-dashboard-desktop.png b/docs/user-guide/images/01-dashboard-desktop.png new file mode 100644 index 0000000..f5e5fd1 Binary files /dev/null and b/docs/user-guide/images/01-dashboard-desktop.png differ diff --git a/docs/user-guide/images/02-contacts-people.png b/docs/user-guide/images/02-contacts-people.png new file mode 100644 index 0000000..caf0665 Binary files /dev/null and b/docs/user-guide/images/02-contacts-people.png differ diff --git a/docs/user-guide/images/03-pipeline-desktop.png b/docs/user-guide/images/03-pipeline-desktop.png new file mode 100644 index 0000000..1409dc1 Binary files /dev/null and b/docs/user-guide/images/03-pipeline-desktop.png differ diff --git a/docs/user-guide/images/04-conversations-desktop.png b/docs/user-guide/images/04-conversations-desktop.png new file mode 100644 index 0000000..91448d6 Binary files /dev/null and b/docs/user-guide/images/04-conversations-desktop.png differ diff --git a/docs/user-guide/images/05-reports-desktop.png b/docs/user-guide/images/05-reports-desktop.png new file mode 100644 index 0000000..cb5c5cd Binary files /dev/null and b/docs/user-guide/images/05-reports-desktop.png differ diff --git a/docs/user-guide/images/06-dashboard-mobile.png b/docs/user-guide/images/06-dashboard-mobile.png new file mode 100644 index 0000000..3fdd3e9 Binary files /dev/null and b/docs/user-guide/images/06-dashboard-mobile.png differ diff --git a/docs/user-guide/images/07-contacts-companies.png b/docs/user-guide/images/07-contacts-companies.png new file mode 100644 index 0000000..7d5dda7 Binary files /dev/null and b/docs/user-guide/images/07-contacts-companies.png differ diff --git a/docs/user-guide/images/08-leads-list.png b/docs/user-guide/images/08-leads-list.png new file mode 100644 index 0000000..6961218 Binary files /dev/null and b/docs/user-guide/images/08-leads-list.png differ diff --git a/docs/user-guide/images/09-leads-board.png b/docs/user-guide/images/09-leads-board.png new file mode 100644 index 0000000..ebc8a74 Binary files /dev/null and b/docs/user-guide/images/09-leads-board.png differ diff --git a/docs/user-guide/images/10-activities.png b/docs/user-guide/images/10-activities.png new file mode 100644 index 0000000..dafb6ca Binary files /dev/null and b/docs/user-guide/images/10-activities.png differ diff --git a/docs/user-guide/images/11-calendar.png b/docs/user-guide/images/11-calendar.png new file mode 100644 index 0000000..d633416 Binary files /dev/null and b/docs/user-guide/images/11-calendar.png differ diff --git a/docs/user-guide/images/12-notes.png b/docs/user-guide/images/12-notes.png new file mode 100644 index 0000000..e740f41 Binary files /dev/null and b/docs/user-guide/images/12-notes.png differ diff --git a/docs/user-guide/images/13-tickets.png b/docs/user-guide/images/13-tickets.png new file mode 100644 index 0000000..48ef4b0 Binary files /dev/null and b/docs/user-guide/images/13-tickets.png differ diff --git a/docs/user-guide/images/14-loyalty.png b/docs/user-guide/images/14-loyalty.png new file mode 100644 index 0000000..4dc404d Binary files /dev/null and b/docs/user-guide/images/14-loyalty.png differ diff --git a/docs/user-guide/images/15-sms-campaigns.png b/docs/user-guide/images/15-sms-campaigns.png new file mode 100644 index 0000000..dd1db0d Binary files /dev/null and b/docs/user-guide/images/15-sms-campaigns.png differ diff --git a/docs/user-guide/images/16-automations.png b/docs/user-guide/images/16-automations.png new file mode 100644 index 0000000..b44759f Binary files /dev/null and b/docs/user-guide/images/16-automations.png differ diff --git a/docs/user-guide/images/17-message-automations.png b/docs/user-guide/images/17-message-automations.png new file mode 100644 index 0000000..d7e4405 Binary files /dev/null and b/docs/user-guide/images/17-message-automations.png differ diff --git a/docs/user-guide/images/18-settings-team.png b/docs/user-guide/images/18-settings-team.png new file mode 100644 index 0000000..53e8a44 Binary files /dev/null and b/docs/user-guide/images/18-settings-team.png differ diff --git a/docs/user-guide/images/19-products.png b/docs/user-guide/images/19-products.png new file mode 100644 index 0000000..eab2dc8 Binary files /dev/null and b/docs/user-guide/images/19-products.png differ diff --git a/docs/user-guide/images/20-projects.png b/docs/user-guide/images/20-projects.png new file mode 100644 index 0000000..3aa604d Binary files /dev/null and b/docs/user-guide/images/20-projects.png differ diff --git a/docs/راهنمای-کاربری.docx b/docs/راهنمای-کاربری.docx index d59a9b3..540289f 100644 Binary files a/docs/راهنمای-کاربری.docx and b/docs/راهنمای-کاربری.docx differ diff --git a/docs/راهنمای-کاربری.md b/docs/راهنمای-کاربری.md index f3505fb..cba61f8 100644 --- a/docs/راهنمای-کاربری.md +++ b/docs/راهنمای-کاربری.md @@ -1,321 +1,495 @@ -# راهنمای کاربری منتکت (Montact CRM) +# راهنمای کامل کاربری مُنتَکت (Montact) -**نسخه راهنما:** هماهنگ با محصول روی `https://crm.montzar.ir` (به‌روز ۱۴ شهریور ۱۴۰۵) -**مخاطب:** همکاران فروش، پشتیبانی و مدیران — با یا بدون تجربه CRM. - -اسناد مرتبط: [`قابلیت‌های-منتکت.md`](قابلیت‌های-منتکت.md) · [`وضعیت-پیشرفت.md`](وضعیت-پیشرفت.md) +**مخاطب:** همه همکاران — فروش، پشتیبانی، مدیر و مالک +**زبان:** خیلی ساده، بدون اصطلاح تخصصی +**نسخه:** هماهنگ با پنل روی `https://crm.montzar.ir` +**عکس‌ها:** پوشه [`user-guide/images`](user-guide/images) --- -## فهرست مطالب +## این راهنما چطور خوانده شود؟ -1. [این راهنما چیست؟](#این-راهنما-چیست) -2. [منتکت چیست؟](#منتکت-چیست-به-زبان-خیلی-ساده) -3. [آدرس‌ها و حساب‌های دمو](#آدرسها-و-حسابهای-دمو) -4. [شروع خیلی ساده](#شروع-خیلی-ساده-۱۰-دقیقه) -5. [منوی کناری](#منوی-کناری-و-ساختار-صفحه) -6. [ورود، ثبت‌نام، نقش‌ها و تیم](#۱-ورود-ثبتنام-نقشها-و-تیم) -7. [خانه امروز](#۲-خانه-امروز) -8. [اشخاص و شرکت‌ها](#۳-اشخاص-و-شرکتها) -9. [کاریز فروش](#۴-کاریز-فروش-معاملات) -10. [فعالیت‌ها و تقویم](#۵-فعالیتها-و-تقویم) -11. [یادداشت‌های هوشمند](#۶-یادداشتهای-هوشمند-smart-notes) -12. [تایم‌لاین و اعلان‌ها](#۷-تایملین-و-اعلانها) -13. [محصولات و مبلغ‌ها](#۸-محصولات-و-مبلغها) -14. [پیش‌فاکتور و فاکتور](#۹-پیشفاکتور-و-فاکتور) -15. [هدف و گزارش فروش](#۱۰-هدف-و-گزارش-فروش) -16. [تیکت و پرتال مشتری](#۱۱-تیکت-و-پرتال-مشتری) -17. [کاریز پروژه و باشگاه](#۱۲-کاریز-پروژه-و-باشگاه) -18. [اتوماسیون و فرم‌ساز سرنخ](#۱۳-اتوماسیون-و-فرمساز-سرنخ) -19. [تنظیمات سازمان](#۱۴-تنظیمات-سازمان) -20. [ته‌حساب (طلا و جواهر)](#۱۵-تهحساب-طلا-و-جواهر) -21. [کار روی موبایل](#۱۶-کار-روی-موبایل) -22. [سناریوهای روزمره](#۱۷-سناریوهای-روزمره) -23. [مشکلات رایج](#۱۸-مشکلات-رایج) -24. [برای مسئول فنی](#برای-مسئول-فنی-کوتاه) +1. اگر تازه‌واردید: از **ورود** و **منو** شروع کنید. +2. بعد بخش **داشبورد** را کامل بخوانید. +3. بعد از روی منو، یکی‌یکی جلو بروید. +4. در هر بخش، تفاوت **دسکتاپ** و **موبایل** جدا آمده است. + +> **دسکتاپ** یعنی کامپیوتر یا لپ‌تاپ با صفحهٔ عریض. +> **موبایل** یعنی گوشی یا صفحهٔ باریک. --- -## این راهنما چیست؟ +## فهرست -به زبان ساده می‌گوید منتکت چیست، کجا بروید، چه دکمه‌ای بزنید و نتیجه چه می‌شود. -اگر تازه‌کارید از **شروع خیلی ساده** شروع کنید. +1. [ورود به سیستم](#۱-ورود-به-سیستم) +2. [نمای کلی صفحه (منو و نوار بالا)](#۲-نمای-کلی-صفحه-منو-و-نوار-بالا) +3. [داشبورد](#۳-داشبورد) +4. [مشتریان](#۴-مشتریان) +5. [لیدها](#۵-لیدها) +6. [فروش](#۶-فروش) +7. [کارها و فعالیت‌ها](#۷-کارها-و-فعالیتها) +8. [گفتگو](#۸-گفتگو) +9. [یادداشت‌ها](#۹-یادداشتها) +10. [پشتیبانی](#۱۰-پشتیبانی) +11. [باشگاه مشتریان](#۱۱-باشگاه-مشتریان) +12. [گزارش‌ها](#۱۲-گزارشها) +13. [اتوماسیون و پیامک گروهی](#۱۳-اتوماسیون-و-پیامک-گروهی) +14. [ابزارها](#۱۴-ابزارها) +15. [تنظیمات](#۱۵-تنظیمات) +16. [کار روی موبایل](#۱۶-کار-روی-موبایل) +17. [سناریوهای روزمره](#۱۷-سناریوهای-روزمره) +18. [مشکلات رایج](#۱۸-مشکلات-رایج) --- -## منتکت چیست؟ (به زبان خیلی ساده) +## ۱) ورود به سیستم -منتکت یک **CRM فارسی** است: دفترچه مشتری، تخته فروش، پیگیری، پشتیبانی، فاکتور، پرتال مشتری و (برای طلا و جواهر) اتصال به ته‌حساب — در یک جا. +### دسکتاپ و موبایل (تقریباً یکسان) -| مفهوم | یعنی چه؟ | -|---|---| -| **سازمان** | شرکت شما داخل منتکت | -| **شخص / شرکت** | مخاطب حقیقی یا حقوقی | -| **معامله** | یک فروش احتمالی روی کاریز | -| **فعالیت** | تماس، جلسه، وظیفه | -| **یادداشت** | ثبت سریع حرف‌ها + هوش منتکت | -| **تیکت** | درخواست پشتیبانی | -| **کاریز پروژه** | کارهای داخلی پس‌ازفروش | -| **باشگاه** | امتیاز وفاداری مشتری | -| **اتوماسیون** | اگر اتفاقی افتاد، خودکار کاری انجام شود | +1. آدرس پنل را باز کنید (مثلاً `https://crm.montzar.ir`). +2. **ایمیل یا موبایل** خود را وارد کنید. +3. **رمز عبور** را بزنید. +4. روی **ورود** بزنید. ---- - -## آدرس‌ها و حساب‌های دمو - -| مورد | آدرس | -|---|---| -| پنل اصلی | `https://crm.montzar.ir` | -| پرتال مشتری دمو | `https://crm.montzar.ir/p/demo-mento` | -| سلامت API | `https://crm.montzar.ir/api/health` | -| پنل لوکال | `http://localhost:5173` | - -| ایمیل | رمز | نقش | -|---|---|---| -| `owner@demo.local` | `demo1234` | مالک | -| `admin@demo.local` | `demo1234` | مدیر | -| `sales@demo.local` | `demo1234` | فروش | - ---- - -## شروع خیلی ساده (۱۰ دقیقه) - -1. آدرس پنل را باز کنید. -2. با `owner@demo.local` / `demo1234` وارد شوید (ورود با **رمز**؛ نیازی به OTP نیست). -3. **اشخاص** را ببینید → یک کارت کاریز را جابه‌جا کنید → یک **فعالیت** و یک **یادداشت** بسازید. -4. زنگ اعلان کنار برند را باز کنید. -5. پایین منو **خروج** را تست کنید. - ---- - -## منوی کناری و ساختار صفحه - -منوی سمت راست (دسکتاپ ثابت؛ موبایل با همبرگر). - -**اصلی:** خانه · فعالیت‌ها · کاریز فروش · اشخاص · تیکت‌ها · یادداشت‌ها - -**فروش و مالی:** پیش‌فاکتور · فاکتور · هدف و پیش‌بینی · گزارشات - -**بیشتر:** تقویم · کاریز پروژه · باشگاه مشتریان - -**تنظیمات (مالک/مدیر):** تیم · اتوماسیون · فرم‌ساز سرنخ · فیلد سفارشی · محصولات · ارزها · FAQ · ته‌حساب - -بالای منو: اعلان‌ها · پایین منو: کارت پروفایل شما + خروج - ---- - -## ۱) ورود، ثبت‌نام، نقش‌ها و تیم - -### ورود با رمز (روش اصلی) - -1. شناسه را وارد کنید: **ایمیل یا موبایل**. -2. رمز عبور را بزنید. -3. **ورود** — مستقیم وارد پنل می‌شوید (بدون OTP). - -### ورود اختیاری با OTP موبایل - -اگر روی حساب موبایل ثبت شده باشد، می‌توانید مسیر «ورود با کد» را بزنید، کد پیامکی را وارد کنید و وارد شوید. +روش دیگر (اگر برای حساب شما فعال باشد): **ورود با کد پیامکی** — موبایل را می‌زنید، کد می‌آید، وارد می‌شوید. ### ثبت‌نام سازمان جدید +اگر سازمان هنوز ساخته نشده: + 1. **ثبت‌نام** را باز کنید. -2. نام سازمان، حوزه کسب‌وکار، نام خودتان، موبایل (و در صورت فعال بودن ایمیل) را پر کنید. -3. کد OTP موبایل را تأیید کنید و رمز بگذارید. +2. نام سازمان، حوزه کار، نام خودتان و موبایل را پر کنید. +3. کد پیامکی را تأیید کنید و رمز بگذارید. 4. به‌عنوان **مالک** وارد می‌شوید. -### نقش‌ها +### نقش‌ها به زبان ساده -| نقش | پرونده‌ها | تنظیمات | دعوت کاربر | -|---|---|---|---| -| مالک | همه | بله | بله | -| مدیر | همه | بله | بله | -| فروش | معمولاً فقط مال خودش | خیر | خیر | -| پشتیبانی | پرونده/تیکت مرتبط | خیر | خیر | +| نقش | چه می‌بیند؟ | تنظیمات را عوض می‌کند؟ | +|---|---|---| +| مالک | تقریباً همه چیز | بله | +| مدیر | تقریباً همه چیز | بله | +| فروش | معمولاً پرونده‌های خودش | خیر | +| پشتیبانی | تیکت و پرونده‌های مرتبط | خیر | -### تیم - -**تنظیمات → تیم و نقش‌ها:** دعوت با ایمیل/نام/رمز اولیه و نقش. +اگر دکمه‌ای را نمی‌بینید، معمولاً به‌خاطر **نقش** یا **ماژول خاموش سازمان** است — از مالک/مدیر بپرسید. --- -## ۲) خانه امروز +## ۲) نمای کلی صفحه (منو و نوار بالا) -بعد از ورود می‌بینید: خلاصه فعالیت‌ها، میانبرها، نمای کاریز/روند فروش، و امکان **پرسیدن از منتکت** (Ask Montact) درباره کار امروز. +![داشبورد دسکتاپ — منو سمت راست و نوار بالا](user-guide/images/01-dashboard-desktop.png) + +### دسکتاپ + +- **منوی سمت راست:** همه بخش‌ها همین‌جاست. بعضی آیتم‌ها فلش دارند و با کلیک باز می‌شوند (مثل مشتریان، فروش، تنظیمات). +- **نوار بالا:** + - **جستجوی سراسری:** مشتری، معامله و … را سریع پیدا می‌کند. + - **هوش مصنوعی / از مُنتَکت بپرس** + - **اعلان‌ها** (زنگ) + - **تقویم** + - **پیام‌ها / گفتگو** + - وضعیت اشتراک (اگر نمایش داده شود) و تاریخ امروز +- **پایین منو:** عکس و نام شما + دکمهٔ **خروج** +- **دکمهٔ شناور پایین چپ:** ایجاد سریع (شخص، کار، معامله و …) + +### موبایل + +![نمای موبایل داشبورد](user-guide/images/06-dashboard-mobile.png) + +- منوی کناری معمولاً جمع می‌شود؛ با **آیکون منو (همبرگر)** باز می‌شود. +- جستجو و اعلان‌ها در بالای صفحه هستند. +- لیست‌ها بیشتر به‌شکل **کارت** دیده می‌شوند، نه جدول عریض. --- -## ۳) اشخاص و شرکت‌ها +## ۳) داشبورد -1. منو **اشخاص و شرکت‌ها**. -2. تب شخص یا شرکت؛ جستجو و فیلتر (از جمله وضعیت/خلق مشتری). -3. دکمه **+** برای ایجاد. -4. روی ردیف/کارت کلیک کنید تا **پروفایل مشتری** باز شود (خلاصه، تب‌ها، تایم‌لاین، در صورت اتصال: دارایی ته‌حساب). -5. اکسل: خروجی / ورود از اکسل از همان صفحه. +داشبورد صفحهٔ اول بعد از ورود است — خلاصهٔ کار امروز و وضعیت فروش. -**نکته موبایل:** لیست به‌صورت کارت دیده می‌شود؛ جدول مخصوص دسکتاپ است. +![داشبورد کامل](user-guide/images/01-dashboard-desktop.png) + +### چه چیزهایی می‌بینید؟ + +#### الف) نوار خوش‌آمد و هشدارها +- سلام شخصی (مثلاً «ظهر بخیر …») +- کارت‌های کوتاه هشدار، مثلاً: + - معامله‌ای که امروز باید تماس بگیرید + - پیگیری‌های عقب‌افتاده + - نزدیک بودن به هدف ماه +- با زدن هر کارت، مستقیم به همان موضوع می‌روید. + +#### ب) از مُنتَکت بپرس +کادر سؤال در همان بالای داشبورد. مثال سؤال‌ها: +- امروز چند پیگیری دارم؟ +- معاملات باز من کدام‌اند؟ +- فروش این ماه چقدر بوده؟ + +روی دسکتاپ میانبر صفحه‌کلید: **Ctrl+K** (در مک: ⌘K). + +#### ج) کارت‌های عددی (خلاصه وضعیت) +معمولاً چهار کارت مهم: +1. **فروش این ماه** +2. **مشتریان جدید** +3. **معاملات باز** +4. **پیگیری امروز** + +کنار بعضی عددها، درصد تغییر نسبت به دوره قبل هم هست (سبز = رشد، قرمز = کاهش). + +#### د) نمودارها و بخش‌های پایین +- **روند فروش:** فروش ماه‌های اخیر +- **منابع مشتریان:** مشتری‌ها از کجا آمده‌اند +- **دستیار هوشمند:** پیشنهاد سؤال و دستورهای سریع (حتی با میکروفون در صورت فعال بودن) +- **فعالیت‌های اخیر** +- **نمای کوچک کاریز فروش** +- **برترین مشتریان** + +### دسکتاپ در برابر موبایل +| مورد | دسکتاپ | موبایل | +|---|---|---| +| نمودارها | چندتایی کنار هم | زیر هم، اسکرول عمودی | +| کارت‌های عددی | معمولاً در یک ردیف | زیر هم یا دو‌ستونه | +| منو | همیشه دیده می‌شود | با همبرگر باز می‌شود | --- -## ۴) کاریز فروش (معاملات) +## ۴) مشتریان -1. **کاریز فروش** را باز کنید. -2. کاریز موردنظر را انتخاب کنید (اگر چند تا دارید). -3. معامله جدید بسازید یا کارت را بین ستون‌ها بکشید. -4. با باز کردن معامله: مبلغ، ارز، مسئول، محصولات، منبع، برچسب، یادداشت و فیلد سفارشی را کامل کنید. -5. از معامله می‌توانید پیش‌فاکتور یا فاکتور بسازید. +مسیر: منو → **مشتریان** -مبالغ با **جداکننده هزارگان** نمایش و وارد می‌شوند. +![لیست اشخاص](user-guide/images/02-contacts-people.png) + +### اشخاص +- لیست همه مخاطبان حقیقی +- جستجو، مرتب‌سازی، فیلتر +- دکمه‌ها: + - **شخص جدید** + - **خروجی اکسل** + - **ورود از اکسل** + - **از مخاطبین گوشی** (روی موبایل/مرورگر مناسب) + +با زدن روی هر شخص، **پروفایل** باز می‌شود: +- اطلاعات تماس +- خلق/وضعیت مشتری +- فعالیت‌ها، یادداشت‌ها، معاملات، فاکتورها +- تایم‌لاین رویدادها +- در صورت اتصال حسابداری: دارایی و اسناد مرتبط + +### شرکت‌ها +![لیست شرکت‌ها](user-guide/images/07-contacts-companies.png) + +همان منطق برای مشتری حقوقی (سازمان‌ها). تب **شرکت‌ها** را بزنید و با **شرکت جدید** شروع کنید. + +### میانبرهای سریع +از خود منوی مشتریان می‌توانید مستقیم **شخص جدید** یا **شرکت جدید** بسازید. + +### موبایل +لیست به‌صورت کارت است. برای ساخت شخص جدید همان دکمهٔ سبز/اصلی را بزنید. ذخیره در فرم‌ها اغلب با **تیک بالای صفحه** است. --- -## ۵) فعالیت‌ها و تقویم +## ۵) لیدها -### لیست فعالیت‌ها +مسیر: منو → **لیدها** +لید یعنی **مخاطب بالقوه** قبل از اینکه مشتری کامل شود. -فیلتر امروز / عقب‌افتاده / بعداً / انجام‌شده · جستجو · نوع فعالیت. -فعالیت جدید: عنوان، نوع، موعد (جلالی)، مسئول، اتصال به شخص/معامله. +### فهرست لیدها +![فهرست لیدها](user-guide/images/08-leads-list.png) -### یادآور +- جستجو و فیلتر +- تخصیص به همکار +- ورود از اکسل (اگر دسترسی دارید) -اگر موعد یادآور بگذارید، می‌توانید مشخص کنید اعلان **داخل برنامه** و/یا **پیامک** برود. حداقل یکی باید روشن باشد. +### کاریز لیدها +![کاریز لیدها](user-guide/images/09-leads-board.png) -### تقویم +نمای ستون‌به‌ستون (کانبان). کارت را بین مراحل بکشید تا وضعیت عوض شود. -**تقویم فعالیت‌ها:** نمای ماه شمسی موعدها. ساعت را می‌توانید با صفحهٔ دایره‌ای انتخاب کنید. +### مراحل و وضعیت‌ها (معمولاً فقط مدیر) +تعریف ستون‌های کاریز لید. + +### فرم‌ساز سرنخ (معمولاً فقط مدیر) +- لینک عمومی برای جذب سرنخ +- قابل گذاشتن در سایت / QR / iframe +- وقتی کسی فرم را پر کند، سرنخ در سیستم ثبت می‌شود --- -## ۶) یادداشت‌های هوشمند (Smart Notes) +## ۶) فروش -1. **یادداشت‌ها** را باز کنید. -2. نوع یادداشت را انتخاب کنید و متن را بنویسید (یا با دکمه **میکروفون** دیکته کنید). -3. **سطح دسترسی** را تنظیم کنید: تیمی (پیش‌فرض) یا شخصی (فقط شما). -4. به شخص/شرکت/معامله وصل کنید؛ در صورت نیاز پین/برچسب/یادآور. -5. پیشنهاد هوشمند یا Memory را فقط بعد از خواندن و **تأیید** اعمال کنید. -6. از منوی کارت یا دکمهٔ **تاریخچه** در ویرایش، نسخه‌های قبلی را ببینید و در صورت نیاز بازگردانید. -7. از کادر **از منتکت بپرس** سؤال زبان طبیعی بپرسید (مثلاً «آخرین بار درباره قیمت چه گفت؟»). +مسیر: منو → **فروش** -پیوست فایل روی یادداشت از همان فرم قابل افزودن است. +![کاریز فروش](user-guide/images/03-pipeline-desktop.png) + +### کاریز فروش +- نمای **کاریز** (ستون‌ها) یا **لیست** +- هر ستون یک مرحله است (مثلاً سرنخ، تماس اول، پیشنهاد، …) +- کارت معامله را بکشید تا مرحله عوض شود +- روی کارت بزنید تا جزئیات باز شود: مبلغ، مسئول، محصولات، یادداشت، … +- از معامله می‌توانید پیش‌فاکتور یا فاکتور بسازید +- خروجی/ورود اکسل و فیلتر ذخیره‌شده هم هست + +**موبایل:** ستون‌ها را افقی ورق بزنید. برای کشیدن کارت، صفحهٔ عریض‌تر راحت‌تر است. + +### محصولات و خدمات (معمولاً مدیر) +![محصولات و خدمات](user-guide/images/19-products.png) + +نام، قیمت، ارز، موجودی مرتبط. خروجی و ورود اکسل هم از همین صفحه است. + +### پیش‌فاکتورها +پیشنهاد قیمت برای مشتری — وضعیت، چاپ، تبدیل به فاکتور. + +### فاکتورها +صدور فاکتور، ثبت پرداخت، اقساط، چاپ. + +### پورسانت +سهم فروشندگان از فاکتورهای صادرشده. + +### هدف و پیش‌بینی +هدف فروش دوره را بگذارید و ببینید چقدر جلو رفته‌اید. --- -## ۷) تایم‌لاین و اعلان‌ها +## ۷) کارها و فعالیت‌ها -- روی پرونده شخص/شرکت/معامله، تایم‌لاین رویدادها را می‌بینید. -- زنگ کنار برند: اعلان‌های خوانده/نخوانده (از جمله یادآور فعالیت). +مسیر: منو → **کارها** +عدد روی منو یعنی چند کار باز/مهم دارید. + +![میز کار و فعالیت‌ها](user-guide/images/10-activities.png) + +### میز کار من +- فیلتر: امروز / عقب‌افتاده / بعداً / انجام‌شده +- نوع کار: تماس، جلسه، وظیفه، یادداشت +- کار جدید: عنوان، موعد (تاریخ شمسی)، مسئول، اتصال به شخص یا معامله +- یادآور: اعلان داخل برنامه و/یا پیامک + +### تقویم کارها +![تقویم فعالیت‌ها](user-guide/images/11-calendar.png) + +نمای ماه شمسی برای دیدن موعدها. روی هر روز بزنید تا جزئیات همان روز را ببینید یا فعالیت جدید بسازید. + +### موبایل +لیست کارها کارت‌مانند است. ساعت را معمولاً با انتخابگر لمسی می‌گذارید. --- -## ۸) محصولات و مبلغ‌ها +## ۸) گفتگو -**تنظیمات → محصولات:** نام، قیمت واحد، ارز. -روی معامله/پیش‌فاکتور/فاکتور ردیف اضافه کنید؛ جمع خودکار محاسبه می‌شود. -در همه فیلدهای قیمت، اعداد سه‌رقم‌سه‌رقم جدا می‌شوند. +مسیر: منو → **گفتگو** +چت داخلی تیم — بدون نیاز به پیام‌رسان بیرونی. + +![صفحه گفتگو](user-guide/images/04-conversations-desktop.png) + +### چه کارهایی می‌توانید بکنید؟ + +#### انواع گفتگو +- **خصوصی:** یک‌به‌یک با همکار +- **گروه:** چند نفر +- **کانال:** اطلاع‌رسانی؛ معمولاً فقط مدیر پیام می‌فرستد + +#### فهرست گفتگوها +- جستجو +- تب همه / خصوصی / گروه / کانال +- سنجاق کردن گفتگوی مهم +- بی‌صدا کردن (منشن معمولاً مستثنی است) + +#### داخل گفتگو +- متن، عکس، ویدیو، صوت، فایل (تا حدود ۱۰۰ مگابایت) +- ضبط صدا +- ایموجی، پررنگ، ایتالیک، لیست +- لینک مستقیم به شخص / معامله / تیکت +- پاسخ، ویرایش، حذف، ارسال برای دیگری +- سنجاق پیام، واکنش (ایموجی روی پیام) +- منشن با `@` +- تبدیل پیام به فعالیت +- جستجو داخل همان گفتگو +- دستیار هوشمند داخل چت (پرسش از مُنتَکت و درج پاسخ در پیام) +- وضعیت «در حال نوشتن…» و خوانده‌شدن پیام + +### دسکتاپ در برابر موبایل +| مورد | دسکتاپ | موبایل | +|---|---|---| +| چیدمان | لیست + پنجره پیام کنار هم | اول لیست، بعد ورود به گفتگو تمام‌صفحه | +| منوی پیام | راست‌کلیک | لمس طولانی روی پیام | +| پیش‌نمایش عکس | کلیک | تمام‌صفحه | --- -## ۹) پیش‌فاکتور و فاکتور +## ۹) یادداشت‌ها -### پیش‌فاکتور +مسیر: منو → **یادداشت‌ها** -لیست با فیلتر وضعیت · فرم با ردیف و چاپ · صدور از معامله · تبدیل به فاکتور. +![یادداشت‌های هوشمند](user-guide/images/12-notes.png) -### فاکتور +1. نوع یادداشت را انتخاب کنید. +2. متن را بنویسید یا با **میکروفون** دیکته کنید. +3. سطح دسترسی: تیمی یا شخصی. +4. به شخص / شرکت / معامله وصل کنید. +5. در صورت نیاز: پین، برچسب، یادآور، پیوست فایل. +6. پیشنهادهای هوشمند را فقط بعد از خواندن و **تأیید** اعمال کنید. +7. از کادر «از مُنتَکت بپرس» درباره پرونده سؤال کنید. -صدور، وضعیت، چاپ · ثبت پرداخت · برنامه اقساط (۲ قسط / ۳ قسط / دستی). +تاریخچه نسخه‌های قبلی یادداشت هم قابل مشاهده و بازگردانی است. --- -## ۱۰) هدف و گزارش فروش +## ۱۰) پشتیبانی -- **هدف و پیش‌بینی:** تارگت دوره و پیگیری تحقق. -- **گزارشات:** داشبورد فروش، قیف، فعالیت، تیم و تیکت با فیلتر تاریخ. +مسیر: منو → **پشتیبانی** → **تیکت‌ها** ---- +![تیکت‌های پشتیبانی](user-guide/images/13-tickets.png) -## ۱۱) تیکت و پرتال مشتری - -### تیکت داخل پنل - -ثبت موضوع، اولویت، مسئول · گفتگو · FAQ پیشنهادی · فیلتر تأخیر SLA · بعد از حل: CSAT. +- تیکت جدید: موضوع، اولویت، مسئول +- گفتگو با مشتری داخل تیکت +- پیشنهاد از FAQ +- فیلتر تأخیر پاسخ +- بعد از حل: رضایت مشتری (در صورت فعال بودن) ### پرتال مشتری - -آدرس شبیه `https://crm.montzar.ir/p/نام-سازمان`. -مشتری موبایلی را وارد می‌کند که روی **شخص** ثبت شده، OTP پیامکی می‌گیرد و تیکت/FAQ را می‌بیند. +مشتری با لینک شبیه `https://crm.montzar.ir/p/نام-سازمان` وارد می‌شود، با موبایل کد می‌گیرد و تیکت/FAQ را می‌بیند. موبایل باید روی پروندهٔ شخص ثبت شده باشد. --- -## ۱۲) کاریز پروژه و باشگاه +## ۱۱) باشگاه مشتریان -- **کاریز پروژه:** کارهای داخلی جدا از فروش (کشیدن کارت بین مراحل). -- **باشگاه مشتریان:** امتیاز و سطح روی شخص؛ تعدیل دستی برای مدیر؛ امتیاز خودکار از اتوماسیون ممکن است. +مسیر: منو → **باشگاه مشتریان** + +![باشگاه مشتریان](user-guide/images/14-loyalty.png) + +- امتیاز و سطح وفاداری روی شخص +- مدیر می‌تواند امتیاز را دستی کم/زیاد کند +- بعضی قوانین اتوماسیون می‌توانند خودکار امتیاز بدهند +- از **تنظیمات باشگاه** سطوح (مثل نقره‌ای/طلایی) را مدیریت کنید --- -## ۱۳) اتوماسیون و فرم‌ساز سرنخ +## ۱۲) گزارش‌ها -### اتوماسیون +مسیر: منو → **گزارش‌ها** -**تنظیمات → اتوماسیون:** اگر معامله برنده شد / تیکت حل شد → ساخت فعالیت، اعلان، یا امتیاز باشگاه. +![گزارش‌ها و داشبورد تحلیلی](user-guide/images/05-reports-desktop.png) -### فرم‌ساز سرنخ +### داشبورد گزارش +- بازه زمانی: امروز / هفته / ماه / سه‌ماهه / سال یا تاریخ دلخواه +- کارت‌هایی مثل: مشتریان جدید، تعداد فاکتور، مبلغ فروش، میانگین‌ها +- مقایسه با دوره قبل +- قیف تبدیل مراحل کاریز +- نمودارها و جداول فروش، منابع، فعالیت، تیم، تیکت +- خروجی اکسل/CSV +- ذخیره نما و کپی لینک اشتراک (اگر فعال باشد) -**تنظیمات → فرم‌ساز سرنخ:** لینک عمومی، iframe، QR · ثبت شخص+معامله · توزیع نوبتی بین تیم. +### گزارش‌ساز +گزارش سادهٔ خودتان را با انتخاب موضوع و فیلتر می‌سازید. + +### موبایل +کارت‌ها و نمودارها زیر هم می‌آیند؛ برای جدول‌های عریض صفحه را افقی کنید یا از دسکتاپ استفاده کنید. --- -## ۱۴) تنظیمات سازمان +## ۱۳) اتوماسیون و پیامک گروهی -فقط مالک/مدیر: +مسیر: منو → **اتوماسیون** (معمولاً مدیر/مالک) -| بخش | کار | +### اتوماسیون گردش کار +![اتوماسیون گردش کار](user-guide/images/16-automations.png) + +قانون «اگر این شد → آن کار انجام شود». +مثال: معامله برنده شد → فعالیت پیگیری ساخته شود یا اعلان برود. +یک محرک مهم جدید: **کلیک روی لینک پیامک**. + +### اتوماسیون پیامک‌ها +![اتوماسیون پیامک‌ها](user-guide/images/17-message-automations.png) + +پیامک یا اعلان با تأخیر و تکرار. +مثال: اگر روی لینک پیامک کلیک شد → یک روز بعد پیامک دوم برود. + +### پیامک گروهی +![پیامک گروهی](user-guide/images/15-sms-campaigns.png) + +1. نام کمپین و متن را بنویسید. +2. مخاطبان را انتخاب کنید. +3. ارسال فوری یا پیش‌نویس/صف. +4. اگر داخل متن **لینک** باشد، برای هر نفر لینک اختصاصی ساخته می‌شود. +5. از دکمهٔ **گزارش** ببینید چند نفر ارسال شدند، چند نفر کلیک کردند و چه کسانی کلیک کردند. + +> کلیک روی لینک ردیابی برای مخاطب نامرئی است؛ او مستقیم به صفحهٔ اصلی می‌رود، ولی سیستم کلیک را ثبت می‌کند. + +--- + +## ۱۴) ابزارها + +مسیر: منو → **ابزارها** + +![کاریز پروژه](user-guide/images/20-projects.png) + +| بخش | کار ساده | |---|---| -| تیم و نقش‌ها | کاربران | -| فیلدهای سفارشی | فیلد اضافه | -| محصولات | کاتالوگ | -| ارزها | ارز پایه و نرخ | -| FAQ | مقالات پشتیبانی | -| اتوماسیون | قوانین | -| فرم‌ساز سرنخ | جذب سرنخ | -| ته‌حساب | اتصال حسابداری طلا | +| کاریز پروژه | کارهای داخلی تیم بعد از فروش (ستون‌ها و کارت‌ها) | +| انبار | موجودی کالا و جابه‌جایی داخلی | +| چک‌ها | چک دریافتی و پرداختی + یادآوری | +| رزرو و نوبت‌دهی | خدمات، زمان آزاد، ثبت نوبت مشتری | +| پیوست‌ها | فایل‌های وصل‌شده به یادداشت‌ها | --- -## ۱۵) ته‌حساب (طلا و جواهر) +## ۱۵) تنظیمات -برای سازمان‌هایی که حوزه طلا/جواهر دارند (یا اتصال حسابداری می‌خواهند): +مسیر: منو → **تنظیمات** (معمولاً مالک/مدیر) -1. **تنظیمات → ته‌حساب:** اتصال (آدرس، توکن، نام DB) بسازید و تست کنید. می‌توانید چند اتصال داشته باشید. -2. در **پروفایل شخص → دارایی:** تطبیق خودکار/دستی با کد مشتری ته‌حساب، یا ثبت مشتری جدید در ته‌حساب. -3. مانده و اسناد را ببینید؛ در صورت نیاز **ثبت سند** (خرید/فروش، طلب/بدهی، بانک و …) از همین تب. +![تنظیمات تیم و کاربران](user-guide/images/18-settings-team.png) -جزئیات فنی: [`integrations/tahesab.md`](integrations/tahesab.md) +| بخش | یعنی چه؟ | +|---|---| +| تنظیمات عمومی | نام سازمان و تنظیمات پایه | +| تیم و نقش‌ها | دعوت همکار، نقش، دسترسی | +| تیم‌ها و سطح دسترسی به پرونده‌ها | چه کسی کدام پرونده‌ها را ببیند | +| لاگ فعالیت کاربران | تاریخچه ایجاد/ویرایش/حذف | +| API و وب‌هوک | اتصال سیستم‌های بیرونی | +| فیلدهای سفارشی | فیلد اضافه روی پرونده‌ها | +| ارزها | ارز پایه و نرخ | +| ته‌حساب | اتصال حسابداری (مخصوص طلا و جواهر و مشابه) | +| ووکامرس | سفارش فروشگاه → مشتری و فاکتور | +| تلفن سازمانی | ثبت تماس سانترال و اعلان ورودی | +| FAQ | پرسش‌های پرتکرار پشتیبانی | + +اگر آیتمی در منو نیست، یا نقش شما اجازه ندارد یا آن ماژول برای سازمان خاموش است. --- ## ۱۶) کار روی موبایل -- منوی کشویی از همبرگر -- لیست‌ها به‌صورت کارت؛ کاریز را افقی ورق بزنید -- در فرم‌ها دکمه ذخیره بالای موبایل (آیکون تیک) را پیدا کنید -- برای کشیدن کارت کاریز، صفحهٔ عریض‌تر راحت‌تر است +![نمونه داشبورد روی صفحه باریک](user-guide/images/06-dashboard-mobile.png) + +### نکات مهم موبایل +1. منو را با آیکون همبرگر باز کنید. +2. لیست‌ها کارت‌مانند هستند؛ برای دیدن جزئیات روی کارت بزنید. +3. در فرم‌ها دکمهٔ ذخیره اغلب **بالا** و با آیکون تیک است. +4. کاریز فروش/لید را افقی ورق بزنید. +5. در گفتگو: لمس طولانی روی پیام = منوی کارها. +6. برای گزارش‌های شلوغ و اکسل، دسکتاپ راحت‌تر است. +7. ورود از مخاطبین گوشی در صفحه اشخاص در دسترس است. --- ## ۱۷) سناریوهای روزمره ### کارشناس فروش - -سرنخ (فرم یا دستی) → معامله روی کاریز → فعالیت و یادداشت → پیش‌فاکتور → فاکتور → برنده → کارت در کاریز پروژه. +1. لید جدید (دستی یا از فرم سایت) +2. تبدیل/ساخت معامله روی کاریز +3. ثبت تماس و یادداشت +4. پیش‌فاکتور → فاکتور +5. بردن معامله به مرحله برنده +6. در صورت نیاز کارت در کاریز پروژه ### پشتیبانی - -تیکت / پرتال → FAQ → پاسخ → تغییر وضعیت → CSAT → (اتوماسیون) امتیاز باشگاه. +1. تیکت جدید یا پیام از پرتال +2. پاسخ + FAQ +3. حل تیکت و ثبت رضایت ### مدیر - -خانه و گزارشات → هدف ماه → معاملات راکد → تیکت‌های تأخیر SLA → مرور اتوماسیون و فرم سرنخ. +1. داشبورد و گزارش ماه +2. پیگیری معاملات راکد و کارهای عقب‌افتاده +3. بررسی گزارش پیامک گروهی و کلیک‌ها +4. تنظیم اتوماسیون و تیم --- @@ -323,24 +497,60 @@ | مشکل | کار ساده | |---|---| -| ورود ناموفق | ایمیل/موبایل و رمز؛ وضعیت API؛ Ctrl+F5 | -| OTP ثبت‌نام/پرتال نمی‌رسد | موبایل درست؟ تنظیمات SMS سرور؟ | -| رکورد «پیدا نشد» | نقش شما فروش است و مالک پرونده دیگری است | -| منوی تنظیمات نیست | نقش مالک/مدیر نیست | -| مبلغ عجیب در کاریز | ارز معامله و نرخ در تنظیمات ارزها | -| ته‌حساب وصل نمی‌شود | توکن/DB/آدرس؛ تست اتصال در تنظیمات | -| صفحه سفید بعد از آپدیت | Ctrl+F5 | +| وارد نمی‌شوم | ایمیل/موبایل و رمز را چک کنید؛ یک‌بار صفحه را سخت‌تازه‌سازی کنید (Ctrl+F5) | +| کد پیامک نمی‌آید | موبایل درست است؟ از مدیر بخواهید تنظیم پیامک سرور را چک کند | +| فلان منو را نمی‌بینم | نقش شما یا ماژول سازمان اجازه نمی‌دهد | +| پرونده پیدا نمی‌شود | ممکن است مال همکار دیگری باشد و دسترسی‌تان محدود باشد | +| مبلغ عجیب است | ارز معامله و نرخ ارز در تنظیمات را چک کنید | +| بعد از آپدیت صفحه سفید | Ctrl+F5 یا کش مرورگر | --- -## برای مسئول فنی (کوتاه) +## جمع‌بندی یک‌خطی -| مورد | مقدار | +مُنتَکت دفتر کار دیجیتال تیم شماست: مشتری و لید را نگه می‌دارد، فروش را روی کاریز جلو می‌برد، کار و گفتگو و پشتیبانی را یک‌جا می‌کند، و با گزارش و اتوماسیون به مدیر نشان می‌دهد واقعاً چه خبر است — هم روی کامپیوتر، هم روی گوشی. + +--- + +## پیوست: نقشهٔ منو (برای چاپ روی میز) + +``` +داشبورد +مشتریان → اشخاص / شرکت‌ها +لیدها → فهرست / کاریز / مراحل / فرم‌ساز +فروش → کاریز / محصولات / فاکتور / پیش‌فاکتور / پورسانت / هدف +کارها → میز کار / تقویم +گفتگو +یادداشت‌ها +پشتیبانی → تیکت‌ها +باشگاه مشتریان +گزارش‌ها +اتوماسیون → گردش کار / پیامک خودکار / پیامک گروهی +ابزارها → پروژه / انبار / چک / نوبت / پیوست +تنظیمات → تیم / دسترسی / فیلد / ارز / اتصالات / FAQ +``` + +عکس‌های راهنما در مسیر `docs/user-guide/images/`: + +| فایل | موضوع | |---|---| -| ریپو | `http://get.feep.ir/Mahdi/CRM_Montzar.git` | -| مسیر سرور | `/var/www/crm` | -| دامنه | `https://crm.montzar.ir` | -| API PM2 | `mento-crm-api` | -| راهنمای استقرار | [`deploy/DEPLOY.md`](../deploy/DEPLOY.md) | - -برای بازتولید Word/PDF راهنما از همین Markdown، مثل قبل از ابزار تبدیل داخلی پروژه استفاده کنید (در صورت وجود اسکریپت تولید در `docs/`). +| `01-dashboard-desktop.png` | داشبورد دسکتاپ | +| `02-contacts-people.png` | اشخاص | +| `03-pipeline-desktop.png` | کاریز فروش | +| `04-conversations-desktop.png` | گفتگو | +| `05-reports-desktop.png` | گزارش‌ها | +| `06-dashboard-mobile.png` | داشبورد موبایل‌وار | +| `07-contacts-companies.png` | شرکت‌ها | +| `08-leads-list.png` | فهرست لیدها | +| `09-leads-board.png` | کاریز لیدها | +| `10-activities.png` | میز کار و فعالیت‌ها | +| `11-calendar.png` | تقویم فعالیت‌ها | +| `12-notes.png` | یادداشت‌ها | +| `13-tickets.png` | تیکت‌ها | +| `14-loyalty.png` | باشگاه مشتریان | +| `15-sms-campaigns.png` | پیامک گروهی | +| `16-automations.png` | اتوماسیون گردش کار | +| `17-message-automations.png` | اتوماسیون پیامک | +| `18-settings-team.png` | تنظیمات تیم و کاربران | +| `19-products.png` | محصولات | +| `20-projects.png` | کاریز پروژه |