This commit is contained in:
2026-06-22 01:31:47 +03:30
parent eec7001c2f
commit f44cb7263b
+108 -44
View File
@@ -13,7 +13,8 @@
--
-- اصول:
-- • چند بار قابل اجرا (idempotent)
-- • value / is_active ردیف‌های موجود دست نخورده (به‌جز ته‌حساب: can_edit و value خالی؛ is_store: can_edit=0)
-- • value / is_active ردیف‌های موجود دست نخورده
-- • can_edit هر deploy از این فایل override می‌شود (استاندارد مشترک همه پروژه‌ها)
-- • فقط INSERT برای کلیدهای جدید + به‌روز type / title_fa / description
-- • schema (جدول/ستون) فقط با migrate — نه این فایل
--
@@ -121,6 +122,10 @@ INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `de
SELECT 'montzar_order_response', '[]', 'پاسخ سفارش همکار', 0, 1, NULL, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_order_response' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'montzar_last_product_log', '{}', 'لاگ محصول همکار', 0, 1, NULL, 'longtext'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montzar_last_product_log' LIMIT 1);
-- قیمت zaarbox (اگر از قبل دارید value دست نخورده)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'chart_use_local_data', 'false', 'نمودار از داده خود سایت', 1, 1,
@@ -215,7 +220,22 @@ SELECT 'sse_path', '/api/price/stream', 'مسیر SSE قیمت', 0, 1, 'GET لا
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sse_path' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'montify_name', '', 'نام فروشگاه در درگاه', 1, 1, NULL, 'text'
SELECT 'wss_path', '/prc/ws', 'مسیر WebSocket قیمت', 0, 1,
'مسیر WebSocket روی دامنه اپ — معمولاً /prc/ws (پروکسی به پورت داخلی ws).', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'wss_path' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'wss_link', '', 'آدرس trigger وب‌سوکت (سرور)', 0, 1,
'آدرس HTTP سرویس ws برای trigger برادکست از سرور لاراول — مثال: http://localhost:2090. اولویت با env WSS_LINK/wssLink است.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'wss_link' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'wss_trigger_path', '/prc/api/trigger-update', 'مسیر trigger برادکست', 0, 1,
'مسیر POST برای ارسال رویداد last/list به سرویس ws — پیش‌فرض: /prc/api/trigger-update', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'wss_trigger_path' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'montify_name', '', 'نام فروشگاه در درگاه', 0, 1, NULL, 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'montify_name' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
@@ -595,7 +615,10 @@ WHERE `key` = 'main_product';
-- =============================================================================
-- longtext
UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN ('text_rule', 'text_about', 'support_messenger_text', 'invite_link_text', 'montzar_order_response');
UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN (
'text_rule', 'text_about', 'support_messenger_text', 'invite_link_text',
'montzar_order_response', 'montzar_last_product_log'
);
-- select (+ گزینه‌ها در description)
UPDATE `settings` SET `type` = 'select', `description` = 'منبع فعال قیمت|montzar,zaarbox,main_product' WHERE `key` = 'price_provider';
@@ -612,7 +635,8 @@ UPDATE `settings` SET `type` = 'switch' WHERE `key` IN (
'has_page_earn_money', 'charge_notif', 'group_sms',
'montzar_closed', 'montzar_open_buy', 'montzar_open_sell',
'payping_fin_sync_enabled', 'external_order_api_enabled', 'is_store', 'wss_enabled',
'register_referral_sms_to_referrer', 'register_referral_bonus_message', 'price_from_nasiryan'
'register_referral_sms_to_referrer', 'register_referral_bonus_message', 'price_from_nasiryan',
'banner_enabled'
);
-- number
@@ -701,6 +725,16 @@ SELECT 'main_wallet_products', '', 'محصولات متصل به کیف اصلی
'idهای محصول با کاما (مثل 13,25). موجودی = gold کیف اصلی. خالی = غیرفعال'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'main_wallet_products' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'apk_download_link', '', 'لینک دانلود اپ اندروید', 0, 1,
'آدرس کامل فایل APK اندروید (https). اگر خالی باشد لینک دانلود در اپ نمایش داده نمی‌شود.', 'text'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'apk_download_link' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
SELECT 'banner_enabled', 'true', 'نمایش بنرها', 0, 1,
'روشن: اسلایدر بنر صفحه اصلی در اپ کاربر نمایش داده می‌شود. خاموش: بنرها مخفی می‌مانند (محتوای بنر از پنل «بنرها» مدیریت می‌شود).', 'switch'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'banner_enabled' LIMIT 1);
-- ---------------------------------------------------------------------------
-- const — کلیدهای اضافی
-- ---------------------------------------------------------------------------
@@ -769,7 +803,7 @@ DELETE FROM `settings` WHERE `key` IN (
DELETE FROM `const` WHERE `key` = 'log' OR `key` LIKE 'goldir%';
-- ---------------------------------------------------------------------------
-- metadata — type / title_fa / description (+ can_edit ته‌حساب)
-- metadata — type / title_fa / description (value / is_active دست نمی‌خورند؛ can_edit در انتها)
-- ---------------------------------------------------------------------------
UPDATE `settings` SET `description` = NULL
WHERE LOWER(TRIM(COALESCE(`description`, ''))) IN ('true', 'false', '0', '1', 'yes', 'no', 'in server')
@@ -817,10 +851,6 @@ UPDATE `settings` SET
`description` = @invite_link_desc
WHERE `key` = 'invite_link_text';
UPDATE `settings` SET `value` = @invite_link_default_text
WHERE `key` = 'invite_link_text'
AND (`value` IS NULL OR TRIM(`value`) = '');
UPDATE `settings` SET
`title_fa` = 'پیام‌رسان پشتیبانی',
`type` = 'select',
@@ -851,34 +881,6 @@ UPDATE `settings` SET
`description` = 'نام حساب بانکی در سند واریز'
WHERE `key` = 'tahesab_bank_account';
-- ته‌حساب: قابل ویرایش + مقدار پیش‌فرض خالی
UPDATE `settings` SET `can_edit` = 1
WHERE `key` LIKE 'tahesab_%' OR `key` = 'send_to_tahesab';
UPDATE `settings` SET `value` = ''
WHERE `key` IN ('tahesab_host', 'tahesab_port', 'tahesab_token', 'tahesab_db', 'tahesab_bank_account');
UPDATE `settings` SET `value` = 'false'
WHERE `key` = 'send_to_tahesab' AND TRIM(COALESCE(`value`, '')) = '';
-- is_store فقط از دیتابیس/دیپلوی — در پنل قابل ویرایش نیست
UPDATE `settings` SET `can_edit` = 0 WHERE `key` = 'is_store';
-- metal_type فقط از دیپلوی/SQL (مثلاً «کاتد مس» برای بورس مس)
UPDATE `settings` SET `can_edit` = 0 WHERE `key` = 'metal_type';
-- fee_cash legacy — فقط از دیپلوی/SQL
UPDATE `settings` SET `can_edit` = 0 WHERE `key` = 'fee_cash';
-- SSE قیمت — فقط دیپلوی/SQL
UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN (
'wss_enabled', 'sse_path', 'tahesab_port'
);
-- لوگو / PWA / favicon — فقط از دیپلوی؛ در پنل نمایش داده نمی‌شوند
UPDATE `settings` SET `can_edit` = 0, `is_active` = 0
WHERE `key` IN ('logo_login', 'logo_register', 'title_pwa', 'title_fav');
UPDATE `settings` SET `title_fa` = 'مقدار پاداش معرف' WHERE `key` = 'referral_bonus_amount';
UPDATE `settings` SET `type` = 'text' WHERE `key` = 'balance_report_exclude_customer_id';
@@ -975,6 +977,12 @@ UPDATE `settings` SET `description` = 'روشن: امکان ثبت سفارش خ
UPDATE `settings` SET `description` = 'روشن: امکان ثبت سفارش فروش از طریق قیمت همکار باز است.' WHERE `key` = 'montzar_open_sell';
UPDATE `settings` SET `description` = 'روشن: سرویس همکار در حال حاضر بسته/غیرفعال گزارش شده است.' WHERE `key` = 'montzar_closed';
UPDATE `settings` SET `description` = 'پاسخ JSON آخرین سفارش ارسالی به همکار. برای عیب‌یابی؛ توسط سیستم پر می‌شود.' WHERE `key` = 'montzar_order_response';
UPDATE `settings` SET `description` = 'لاگ JSON آخرین محصول دریافت‌شده از API همکار. توسط سیستم پر می‌شود.' WHERE `key` = 'montzar_last_product_log';
UPDATE `settings` SET `description` = 'آدرس کامل فایل APK اندروید (https). اگر خالی باشد لینک دانلود در اپ نمایش داده نمی‌شود.' WHERE `key` = 'apk_download_link';
UPDATE `settings` SET `description` = 'روشن: اسلایدر بنر صفحه اصلی در اپ کاربر نمایش داده می‌شود. خاموش: بنرها مخفی می‌مانند (محتوای بنر از پنل «بنرها» مدیریت می‌شود).' WHERE `key` = 'banner_enabled';
UPDATE `settings` SET `description` = 'مسیر WebSocket روی دامنه اپ — معمولاً /prc/ws (پروکسی به پورت داخلی ws).' WHERE `key` = 'wss_path';
UPDATE `settings` SET `description` = 'آدرس HTTP سرویس ws برای trigger برادکست از سرور لاراول — مثال: http://localhost:2090. اولویت با env WSS_LINK/wssLink است.' WHERE `key` = 'wss_link';
UPDATE `settings` SET `description` = 'مسیر POST برای ارسال رویداد last/list به سرویس ws — پیش‌فرض: /prc/api/trigger-update' WHERE `key` = 'wss_trigger_path';
UPDATE `settings` SET `description` = 'شناسه کلاینت برای API سفارش خارجی (هدر X-Client-Id). باید با مقدار تنظیم‌شده در سرویس مقصد یکسان باشد.' WHERE `key` = 'node_client_id';
UPDATE `settings` SET `description` = 'کلید مشترک امضای HMAC برای احراز درخواست‌های API سفارش خارجی. محرمانه نگه دارید.' WHERE `key` = 'node_shared_secret';
@@ -1028,17 +1036,73 @@ WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'invite_link_text' LIMI
UPDATE `settings` SET
`title_fa` = 'متن دعوتنامه اشتراک‌گذاری',
`type` = 'longtext',
`can_edit` = 1,
`is_active` = 1,
`description` = @invite_link_desc
WHERE `key` = 'invite_link_text';
UPDATE `settings` SET `value` = @invite_link_default_text
WHERE `key` = 'invite_link_text'
AND (`value` IS NULL OR TRIM(`value`) = '');
UPDATE `settings` SET `type` = 'longtext'
WHERE `key` IN ('text_rule', 'text_about', 'support_messenger_text', 'invite_link_text', 'montzar_order_response');
WHERE `key` IN (
'text_rule', 'text_about', 'support_messenger_text', 'invite_link_text',
'montzar_order_response', 'montzar_last_product_log'
);
-- ---------------------------------------------------------------------------
-- can_edit — استاندارد مشترک (override؛ value دست نمی‌خورد)
-- ---------------------------------------------------------------------------
-- غیرقابل ویرایش در پنل (can_edit = 0)
UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN (
'admin_url', 'apk_download_link', 'app_url',
'bale_bot_token', 'banner_enabled',
'chart_id', 'chart_use_local_data',
'default_vc_number',
'external_order_api_enabled',
'fee_cash', 'group_sms',
'has_page_earn_money',
'is_store',
'logo_login', 'logo_register', 'title_pwa', 'title_fav',
'main_product', 'main_wallet_products', 'metal_type',
'montify_name',
'montzar_base_url', 'montzar_closed',
'montzar_diff', 'montzar_last_product_log', 'montzar_live_price', 'montzar_mazaneh',
'montzar_order_response', 'montzar_token',
'montzar_truly_buy_mazaneh', 'montzar_truly_sell_mazaneh',
'node_client_id', 'node_shared_secret',
'payping_fin_customer_id', 'payping_fin_sync_enabled', 'payping_fin_token', 'payping_fin_url',
'payping_gateway_item', 'payping_gateway_items', 'payping_gateway_name',
'payping_round_toman', 'payping_start_url', 'payping_strict_failed_withdraw', 'payping_verify_url',
'price_extreme_date', 'price_provider', 'profit_gold_api_enabled',
'send_to_tahesab', 'service_charge_percentage',
'sse_path',
'tahesab_bank_account', 'tahesab_db', 'tahesab_host', 'tahesab_port', 'tahesab_token',
'telegram_bot_token',
'unit',
'up_price', 'down_price',
'wss_enabled', 'wss_link', 'wss_path', 'wss_trigger_path',
'zaarbox_api_url', 'zaarbox_price_key'
);
-- قابل ویرایش در پنل (can_edit = 1)
UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN (
'name_fa',
'auto_active_customer', 'balance_report_exclude_customer_id',
'buy_fee', 'charge_notif', 'close_price',
'deposit_sms_support_number', 'endDay',
'fee_free', 'fee_service_charge_percentage', 'fee_single',
'gift_for_referral', 'gift_for_referrer',
'invite_link_text',
'jibit_verification',
'main_product_price',
'min_first_buy', 'min_withdraw', 'minimum_sell',
'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell',
'montzar_password', 'montzar_price', 'montzar_product_id',
'open_register',
'price_from_nasiryan',
'referral_bonus_amount', 'referral_id', 'referral_limit',
'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer',
'sell_fee', 'show_last_price', 'startDay',
'support_messenger', 'support_messenger_id', 'support_messenger_text',
'text_about', 'text_rule'
);
COMMIT;