HandyCafe Docs
owner it-admin

تنظیمات کلاینت‌های قدیمی

HandyCafe می‌تواند بدون اختلال در کنار نصب‌های قدیمی کلاینت V3 و V4 کار کند. صفحه تنظیمات کلاینت‌های قدیمی دو قابلیت مستقل را کنترل می‌کند:

  1. Runtime Protocol. listenerهای شبکه‌ای را فعال می‌کند که به کلاینت‌های V3 و V4 اجازه می‌دهد روی پورت‌های اصلی خود به این سرور وصل شوند.
  2. Database Migration. در صورت نیاز اعضا، قیمت‌گذاری، محصولات، سفارش‌ها، تراکنش‌ها و لاگ‌ها را از یک نصب محلی قدیمی به پایگاه‌داده جدید HandyCafe وارد می‌کند. این بخش فقط روی ویندوز است.

این دو قابلیت مستقل از هم هستند. می‌توانید پشتیبانی زمان اجرا را بدون مهاجرت داده فعال کنید، داده را بدون فعال کردن پشتیبانی زمان اجرا مهاجرت دهید، یا هر دو کار را انجام دهید.

بخش Runtime Protocol

Enable Legacy Client Support

یک سوییچ اصلی در بالای بخش. وقتی روشن باشد، سرور سه listener شبکه را شروع می‌کند:

  • یک listener UDP روی multicast group پیکربندی‌شده.
  • یک listener فرمان TCP روی UDP port + 2.
  • یک listener انتقال فایل TCP روی UDP port + 7.

خاموش کردن این سوییچ هر سه listener را به‌صورت atomic متوقف می‌کند. می‌توانید وقتی غیرفعال است شماره پورت‌ها یا encoding را تغییر دهید و بعد دوباره آن را روشن کنید تا تغییرات اعمال شوند.

فیلدهای پیکربندی

فیلد مقدار پیش‌فرض توضیح
Auth Key HANDYCAFE یک کلید مشترک ۱۰کاراکتری. هر frame ورودی و خروجی این رشته را حمل می‌کند. frameهایی که مطابقت نداشته باشند رد می‌شوند. همه کلاینت‌های قدیمی شما باید از همین کلید استفاده کنند.
UDP Multicast IP 230.4.4.46 گروه multicast برای beaconهای کشف کلاینت و برای dispatch فرمان‌های مبتنی بر UDP. در بیشتر buildهای کلاینت قدیمی hard-coded شده است.
Server UDP Port 710 پورتی که سرور روی آن برای beaconها و فرمان‌های کلاینت گوش می‌دهد. کلاینت‌های قدیمی به این پورت می‌فرستند.
Client UDP Port 711 پورتی که کلاینت‌های قدیمی روی آن گوش می‌دهند. سرور فرمان‌های مدیریتی unicast را به این پورت و به IP کلاینت کشف‌شده می‌فرستد.
Encoding cp1254 encoding کاراکتر برای فیلدهای رشته‌ای wire-format. برای نصب‌های ترکیه‌ای از cp1254 و برای اروپای غربی از cp1252 استفاده کنید. مقادیر ناشناخته با هشدار در لاگ سرور به cp1254 برمی‌گردند.
Server Version 3.4.01 رشته نسخه‌ای که در هر beacon UDP broadcast می‌شود. بعضی کلاینت‌های قدیمی frameهای نسخه‌های ناشناس را رد می‌کنند. این مقدار را با رشته نسخه سرور اصلی خود هماهنگ کنید.
Protocol Variant STE انتخاب wire format. جدول مقایسه نسخه‌ها را ببینید.
Inactivity Timeout 10 ثانیه. یک watchdog بر اساس MAC. اگر در این بازه هیچ ترافیکی از یک کلاینت نرسد، آن کلاینت offline علامت می‌خورد. فاصله ۱۰ ثانیه برای کلاینت‌های قدیمی که هر ۲ یا ۳ ثانیه beacon می‌فرستند مناسب است.

پورت‌های مشتق‌شده

زیر فرم، صفحه یک خط فقط‌خواندنی نمایش می‌دهد که پورت‌های TCP مشتق‌شده را نشان می‌دهد:

TCP Command Port: 712   File Transfer Port: 717

این پورت‌ها از پورت UDP سرور محاسبه می‌شوند. آنها را جداگانه پیکربندی نمی‌کنید. اگر Server UDP Port را به مقدار دیگری تغییر دهید، پورت‌های مشتق‌شده هم همراه آن جابه‌جا می‌شوند.

گونه پروتکل

فیلد Protocol Variant قالب wire format استفاده‌شده توسط سرور را انتخاب می‌کند. گونه‌ای را انتخاب کنید که با نحوه ساخت سرور قدیمی شما مطابقت دارد.

گونه زمان استفاده
STE (Smart/Turbo Edition) کدبیس قدیمی مدرن. یک prefix اطلاعات مجوز 70 بایتی به ساختار frame اضافه می‌کند. اندازه frame برابر 1337 بایت است. اگر نصب قدیمی شما از نسخه Smart یا Turbo استفاده می‌کرد، این گزینه را انتخاب کنید.
Standard build پایه و ساده قدیمی. اندازه frame برابر 1267 بایت و بدون prefix اطلاعات مجوز است. این گزینه را فقط وقتی انتخاب کنید که نصب قدیمی شما نسخه Standard بدون ثبت مجوز بوده است.

انتخاب گونه اشتباه باعث می‌شود frameها رد شوند یا اشتباه خوانده شوند. نشانه‌ها شامل این است که کلاینت آنلاین به نظر می‌رسد اما به هیچ فرمانی پاسخ نمی‌دهد، یا داده فرمان با offset 70 بایتی جابه‌جا می‌شود.

همزیستی با کلاینت‌های مدرن

پورت‌های قدیمی (710، 711، 712، 717) کاملاً جدا از پورت‌های پروتکل مدرن HandyCafe هستند (TCP 5001، 5002، 5003، UDP 5004). هر دو stack پروتکل هم‌زمان و بدون تداخل اجرا می‌شوند. می‌توانید کلاینت‌های قدیمی و جدید را روی یک LAN ترکیب کنید و از همان Admin Panel مدیریتشان کنید.

اعمال تغییرات

همه فیلدهای بخش Runtime Protocol با دکمه جهانی Save در پایین صفحه ذخیره می‌شوند. هنگام ذخیره، سرور:

  1. اگر سه listener قدیمی در حال اجرا بودند آنها را متوقف می‌کند.
  2. Auth key را اعتبارسنجی می‌کند (نباید خالی باشد).
  3. بر اساس فیلدهای به‌روزشده پیکربندی listenerهای جدید می‌سازد.
  4. Listenerها را به‌صورت هم‌زمان restart می‌کند.
  5. وقتی هر سه دوباره online شدند اعلان می‌فرستد.

اگر پورتی توسط فرایند دیگری استفاده شده باشد، سرور خطا می‌دهد و toggle دوباره خاموش می‌شود. firewall و سرویس‌های دیگر را با netstat بررسی کنید و یک بازه پورت آزاد انتخاب کنید.

بخش Database Migration (فقط ویندوز)

این قابلیت فقط وقتی HandyCafe روی ویندوز اجرا می‌شود در دسترس است. در macOS و Linux، این بخش یک پیام نشان می‌دهد: "Database migration is supported on Windows only."

شناسایی

هنگام باز شدن صفحه، سرور سیستم شما را برای یک نصب قدیمی اسکن می‌کند. شناسایی این مسیرها را بررسی می‌کند:

  • Registry و مسیرهای رایج نصب مثل Program Files\HandyCafe و C:\HandyCafe.
  • فایل پایگاه‌داده در کنار نصب.
  • فایل‌های پیکربندی INI در پوشه نصب.

وقتی شناسایی موفق باشد، صفحه این اطلاعات را نشان می‌دهد:

برچسب معنی
Install Path محل نصب قدیمی روی دیسک.
Database Path مسیر کامل فایل پایگاه‌داده قدیمی.
Server Version نسخه‌ای که از تنظیمات قدیمی خوانده می‌شود.
INI File Count تعداد فایل‌های پیکربندی شناسایی‌شده. برای sanity check اینکه نصب کامل است مفید است.

اگر هیچ نصبی شناسایی نشود، صفحه پیام "No legacy installation detected." را نشان می‌دهد. هنوز هم می‌توانید پشتیبانی زمان اجرا را فعال کنید؛ فقط قابلیت مهاجرت چیزی برای وارد کردن ندارد.

وضعیت مهاجرت

صفحه تاریخچه مهاجرت را دنبال می‌کند:

وضعیت معنی
never هنوز هیچ مهاجرتی اجرا نکرده‌اید.
in_progress یک مهاجرت در حال اجراست. در این وضعیت سرور را نبندید.
completed آخرین مهاجرت بدون هشدار تمام شده است.
completed_with_warnings آخرین مهاجرت تمام شده اما بعضی رکوردها رد شده‌اند (برای مثال به‌دلیل خطای encoding یا تاریخ‌های خراب). قبل از ادامه هشدارها را بررسی کنید.
undone آخرین مهاجرت rollback شده است.

بعد از اولین اجرای موفق، دکمه Start Migration به Re-run Migration تغییر نام می‌دهد.

چه چیزهایی مهاجرت می‌شوند

جدول توضیح
Members رکوردهای مشتری با نام، اطلاعات تماس و موجودی حساب.
Pricing جدول‌های قیمت‌گذاری و نرخ‌های ساعتی.
Products آیتم‌های کاتالوگ محصول.
Orders تاریخچه سفارش‌ها با ارجاع به نشست.
Transactions رکوردهای دفترکل با timestamp، مبلغ و روش پرداخت.
Logs ورودی‌های audit و هشدار از پایگاه‌داده قدیمی.

تضمین «Files Safe»

صفحه یک پیام آبی نشان می‌دهد: "The original database files are not deleted. You can safely delete them once migration is confirmed." مهاجرت روی منبع فقط خواندنی است. حتی اگر مهاجرت را چند بار اجرا کنید، پایگاه‌داده قدیمی اصلی دست‌نخورده می‌ماند. این به شما اجازه می‌دهد import را آزمایش کنید، شمارش‌ها را بررسی کنید و بدون ریسک rollback انجام دهید.

Start، Re-run و Undo

  • Start Migration. یک modal پیشرفت باز می‌کند. modal در حین اجرای import، phase فعلی و شمارش رکوردها را نشان می‌دهد. در این زمان HandyCafe را نبندید.
  • Re-run Migration. بعد از یک اجرای کامل در دسترس است. import را از صفر دوباره اجرا می‌کند. import جدید داده قبلی را در HandyCafe جایگزین می‌کند.
  • Undo Migration. بعد از یک اجرای کامل در دسترس است. یک دیالوگ تأیید باز می‌کند. با تأیید، هر ردیف مهاجرت‌شده از HandyCafe حذف می‌شود. منبع قدیمی دست نمی‌خورد. بعد از undo، وضعیت دوباره never می‌شود.

completed_with_warnings

اگر مهاجرت با completed_with_warnings تمام شود، یک بنر زرد با لینک Details ظاهر می‌شود. با کلیک، فهرستی از رکوردهای ردشده به‌همراه دلیل باز می‌شود. دلایل رایج:

  • Encoding mismatch. ردیف منبع کاراکترهایی دارد که با encoding پیکربندی‌شده به‌درستی decode نمی‌شوند. فیلد encoding را (cp1254 یا cp1252) تغییر دهید و migration را دوباره اجرا کنید.
  • Malformed dates. بعضی رکوردهای قدیمی timestamp نامعتبر دارند. این رکوردها رد می‌شوند تا ردیف‌های معتبر همچنان وارد شوند.
  • Duplicate keys. رکوردی با همان شناسه از قبل در HandyCafe وجود دارد. مهاجرت رکورد موجود را حفظ می‌کند و duplicate را رد می‌کند.

نکته‌ها

  • قبل از اجرای migration، سرور قدیمی را متوقف کنید. اگر سیستم قدیمی هنوز در حال نوشتن در پایگاه‌داده باشد، import ممکن است داده‌های قدیمی یا ناقص ببیند.
  • قبل از اولین migration، فیلد Encoding را با locale قدیمی خود هماهنگ کنید. تغییر آن بعد از import، نام‌هایی را که از قبل خراب شده‌اند به‌طور جادویی درست نمی‌کند.
  • همیشه اول یک migration آزمایشی اجرا کنید. شمارش رکوردها را زیر "Last Counts" بررسی کنید و چند ردیف عضو و تراکنش را spot-check کنید تا قبل از واگذاری سیستم به کارکنان مطمئن شوید.
  • پشتیبانی زمان اجرا را فعال کنید و برای یک دوره گذار، کلاینت‌های قدیمی را متصل نگه دارید. این کار به شما اجازه می‌دهد قبل از کنار گذاشتن سرور قدیمی، مطمئن شوید سرور جدید همان رفتار را ارائه می‌دهد.
  • اگر Server UDP Port را تغییر دادید، یادتان باشد پورت‌های مشتق‌شده فرمان و انتقال فایل هم همراه آن جابه‌جا می‌شوند. قانون‌های firewall هم باید متناسب با آن به‌روزرسانی شوند.