نسخه اصلاح‌شده پایش محصولات آداس و همگام‌سازی با دو سایت مقصد

علت خرابی 22 مرداد 1405:
سایت آداس قالب لینک محصولات را از شکل زیر:
  /Product/Details/adp-1000/نام-محصول
به شکل زیر تغییر داد:
  /product/details/adp-1000

نسخه قبلی کل URL را شناسه محصول می‌گرفت و به همین دلیل 2602 محصول قبلی را
جدید تشخیص داد. این نسخه فقط شناسه پایدار adp-... را مبنا قرار می‌دهد.

محافظت‌های اضافه‌شده:
- یکسان‌سازی همه شکل‌های URL یک محصول
- شناسایی نگاشت قدیمی دیتابیس و انتخاب قدیمی‌ترین محصول به‌عنوان محصول اصلی
- توقف کامل پیش از نوشتن روی مقصد اگر جهش غیرعادی محصولات جدید دیده شود
- توقف روی sent.json خالی، خراب یا ناسازگار با baseline.done
- نوشتن اتمیک sent.json و ساخت خودکار sent.json.bak
- فشرده‌سازی رکوردهای تکراری sent.json به یک رکورد برای هر adp

نصب امن:
1) ابتدا کرون check_adas_mixin_sync.php را موقتاً متوقف کنید.
2) از پوشه فعلی و دیتابیس یک بکاپ بگیرید.
3) فایل‌های این بسته را جایگزین کنید. فایل‌های config.php و
   config_adas_mixin.php را فقط درصورتی جایگزین کنید که همین تنظیمات فعلی هستند.
4) هنوز کرون را روشن نکنید.

بررسی محصولات تکراری حس صورتی (هیچ چیزی حذف نمی‌شود):
  php repair_and_delete_duplicates.php --target=pinksense

خروجی مسیر گزارش CSV و تعداد محصولات تکراری را نشان می‌دهد. فقط اگر تعداد
گزارش منطقی بود، پاک‌سازی کنترل‌شده را اجرا کنید:
  php repair_and_delete_duplicates.php --target=pinksense --apply --confirm=KEEP_OLD_DELETE_NEW

اسکریپت پاک‌سازی قبل از تغییر:
- از جدول نگاشت دیتابیس یک جدول بکاپ می‌سازد.
- وجود محصول قدیمی را از API کنترل می‌کند؛ اگر مرجع قدیمی موجود نباشد آن گروه را حذف نمی‌کند.
- اطلاعات محصول قدیمی و جدید را در data_adas/old_and_new_products_backup_*.jsonl ذخیره می‌کند.
- قدیمی‌ترین محصول را نگه می‌دارد و فقط نسخه‌های جدیدتر همان adp را حذف می‌کند.
- نگاشت دیتابیس را به URL پایدار اصلاح می‌کند.

برای سایت xupingco ابتدا فقط گزارش بگیرید:
  php repair_and_delete_duplicates.php --target=xupingco

بدون دیدن گزارش، حالت --apply را برای xupingco یا all اجرا نکنید.

آزمایش نهایی، بعد از پاک‌سازی:
  php check_adas_mixin_sync.php

در cron_trace.log باید خط PREFLIGHT دیده شود. مقدار new باید عادی و کم باشد.
اگر MASS_NEW_GUARD دیده شد، ربات عمداً قبل از هر نوشتن متوقف شده و نباید حدها
را بدون بررسی علت بالا ببرید.

اجرای معمول:
  php check_adas_mixin_sync.php

کرون نمونه:
  * * * * * /usr/bin/php /PATH/poll_adas.php >/dev/null 2>&1
  */10 * * * * /usr/bin/php /PATH/check_adas_mixin_sync.php >/dev/null 2>&1

فایل‌های اصلی:
- check_adas_mixin_sync.php: پایش و همگام‌سازی اصلاح‌شده
- repair_and_delete_duplicates.php: تطبیق خودکار، نگه‌داشتن محصول قدیمی و حذف نسخه جدید
- poll_adas.php: ثبت مشترک‌های روبیکا
- config.php: تنظیمات دیتابیس و مقصدها
- config_adas_mixin.php: قوانین دسته‌ها و محافظ جهش انبوه
