پکیج پایش سایت سیکا + ربات روبیکا

این نسخه با قالب ربات قبلی ساخته شده، اما بخش اعمال تغییرات روی سایت مقصد/میکسین کاملاً حذف شده است.
کار این پکیج فقط این‌هاست:
- گرفتن محصولات دسته‌های سیکا از API /api/v1/products
- صفحه‌بندی کامل تا آخرین صفحه دسته
- ورود به صفحه هر محصول برای خواندن عنوان و توضیحات HTML
- ذخیره وضعیت اولیه بدون اعلان در اجرای اول
- اعلام تغییرات از اجرای دوم به بعد در ربات روبیکا

فایل‌های اصلی:
- config_sikair_monitor.php      تنظیمات دسته‌ها، ربات، مسیر داده‌ها و رفتار پایش
- poll_sikair.php                ثبت/حذف مشترک‌ها با /start و /stop و نمایش /status
- check_sikair_monitor.php       پایش محصولات و ارسال اعلان تغییرات
- data_sikair/                   فایل‌های runtime مثل state.json، subscribers.json، logها و baseline

دسته فعلی داخل config:
- حلقه، entity_id=29
- لینک: https://sikair.ir/category/%D8%AD%D9%84%D9%82%D9%87

برای اضافه کردن دسته جدید:
داخل config_sikair_monitor.php بخش site.categories یک آیتم مثل زیر اضافه کن:
[
    'id' => 29,
    'name' => 'حلقه',
    'url' => 'https://sikair.ir/category/...',
]

منطق موجودی:
- اگر محصول یا واریانت enabled=false باشد، غیرفعال/ناموجود حساب می‌شود.
- اگر is_stock_managed=true باشد، عدد stock_number معیار موجودی است.
- اگر is_stock_managed=false باشد، تا وقتی enabled=true است موجود حساب می‌شود؛ حتی اگر stock_number صفر باشد.
- اگر محصول واریانت نداشته باشد، یک واریانت داخلی با نام «پیش‌فرض» ساخته می‌شود تا قیمت/موجودی محصول قابل مقایسه باشد.

چه تغییراتی اعلان می‌شود؟
- محصول جدید بعد از baseline
- تغییر قیمت هر واریانت
- موجود/ناموجود یا غیرفعال شدن محصول یا هر واریانت
- کم یا زیاد شدن stock_number هر واریانت مدیریت‌شده
- اضافه/حذف شدن واریانت
- تغییر عنوان و توضیحات محصول
- حذف شدن محصول از API دسته، در صورتی که پایش کامل و موفق باشد

راه‌اندازی:
1) کل پوشه را روی هاست آپلود کن.
2) فایل config_sikair_monitor.php را کنترل کن.
   توکن روبیکا داخل همین فایل تنظیم شده، اما بهتر است در سرور با env هم قابل تنظیم باشد:
   export RUBIKA_BOT_TOKEN='TOKEN'
3) یک بار poll_sikair.php را اجرا کن و داخل ربات /start بزن.
4) بعد check_sikair_monitor.php را اجرا کن.
   اجرای اول فقط state.json و baseline.done می‌سازد و اعلان نمی‌دهد.
5) از اجرای دوم به بعد، تغییرات ارسال می‌شود.

کرون پیشنهادی:
* * * * * /usr/bin/php /home/USER/public_html/sikair/poll_sikair.php >/dev/null 2>&1
*/10 * * * * /usr/bin/php /home/USER/public_html/sikair/check_sikair_monitor.php >/dev/null 2>&1

شروع مجدد baseline:
اگر خواستی از صفر ذخیره کند و اجرای بعدی را baseline حساب کند، این فایل‌ها را حذف کن:
- data_sikair/state.json
- data_sikair/baseline.done

نکته عیب‌یابی:
- لاگ پایش: data_sikair/monitor.log
- لاگ ربات: data_sikair/poll.log
- اگر API بدون کوکی جواب نداد، مقدار Cookie مرورگر را در config_sikair_monitor.php بخش site.cookie بگذار.


---
Patch: اعمال روی سایت حس صورتی مثل ربات ژووپینگ

این نسخه علاوه بر اعلان در ربات، محصولات سیکمیر را روی سایت مقصد/حس صورتی ایجاد یا بروزرسانی می‌کند.
مپ دسته‌بندی طبق درخواست تنظیم شده است:
- دسته «ساعت» سیکمیر => «ساعت های مردانه» در حس صورتی
- تمام دسته‌های دیگر سیکمیر => «اکسسوری مردانه» در حس صورتی

تنظیمات جدید داخل config_sikair_monitor.php قرار دارد:
- site_sync.enabled
- site_sync.target_category_map
- site_sync.target_category_id_map
- mixin.base / mixin.api_key

فایل config.php از باندل ژووپینگ کپی شده تا کلید میکسین/حس صورتی همان مقصد قبلی باشد. اگر روی سرور نمی‌خواهی کلید داخل فایل باشد، متغیرهای محیطی MIXIN_BASE و MIXIN_API_KEY را ست کن.

نکته مهم: اگر نام دسته‌های مقصد دقیقاً در API حس صورتی پیدا نشد، ID عددی دسته را در site_sync.target_category_id_map وارد کن.
نقشه ارتباط محصول‌های سیکمیر با محصول‌های ساخته‌شده در مقصد در data_sikair/site_sync_map.json ذخیره می‌شود. این فایل را پاک نکنی، وگرنه ممکن است محصول‌ها دوباره ساخته شوند.
