══════════ نسخهٔ PHP (بدون Node) — برای هاست اشتراکی ══════════

این پوشه را کامل داخل مسیر سایت آپلود کنید (مثلاً  public_html/cafenetakbari/ ) و پوشه‌های Node
(server-part, node_modules, server.js, package.json) لازم نیستند.

۱) رمز مدیر:  فایل config.php را باز کنید و ADMIN_PASSWORD را عوض کنید.
۲) نسخهٔ PHP هاست را روی 7.4 یا بالاتر بگذارید (cPanel ← Select PHP Version) و مطمئن شوید
   pdo_sqlite ، mbstring ، fileinfo فعال‌اند.
۳) پوشهٔ data/ خودکار ساخته می‌شود (دیتابیس، فایل‌های مشتری، خدمت‌ها). اگر نساخت، خودتان بسازید و
   دسترسی 755 بدهید. از data/ پشتیبان بگیرید و موقع آپدیت پاکش نکنید.
۴) فایل .htaccess حتماً آپلود شود (فایل مخفی است). بدون آن آدرس‌های api/... کار نمی‌کنند.
   اگر سرور شما Nginx است، قاعدهٔ معادل لازم است:  location /cafenetakbari/api/ { rewrite ^/cafenetakbari/api/(.*)$ /cafenetakbari/api.php?r=$1 last; }
۵) آدرس‌ها: سایت  /cafenetakbari/  — پنل  /cafenetakbari/admin.html  — صندوق چت  /cafenetakbari/inbox.html

چه چیزی عوض شد
  • api.php جای server.js + chat3.js + services-admin.js را می‌گیرد (SQLite).
  • poll-socket.js جای socket.io را می‌گیرد: چت با polling کار می‌کند (هر ۲٫۵ تا ۱۰ ثانیه).
  • مسیرهای /api/... در صفحه‌ها نسبی شدند (api/...) تا داخل پوشهٔ سایت هم کار کنند.
  • اعلان Push و واتساپ فعلاً خاموش‌اند (فاز ۴: پیامک).

محدودیت‌ها
  • حجم آپلود به upload_max_filesize و post_max_size هاست بستگی دارد (برای ۱۰ مگابایت هر دو را ≥ 12M بگذارید).
    عکس‌های چت قبل از ارسال کوچک می‌شوند.
  • polling برای صدها مشتری هم‌زمان مناسب است؛ برای هزاران نفر هم‌زمان باید VPS با Node برگردید.
  • این کد را من اجرا نکرده‌ام (روی سیستم من PHP نبود)؛ بعد از آپلود یک بار سناریو را کامل تست کنید:
    ثبت درخواست ← ورود به admin.html ← خدمت جدید ← چت از دو مرورگر.


══════════ فاز ۴ (بدون پیامک) ══════════
  • بعد از ثبت درخواست، دکمهٔ «گفتگو دربارهٔ این درخواست» به همان چت می‌رود (chat.html?req=کد).
  • در پنل مدیر، دکمهٔ «گفتگو» کنار هر درخواست، صندوق چت همان مشتری را باز می‌کند؛ بالای چت
    مشخصات درخواست (خدمت، توضیحات، فایل‌ها) و انتخاب وضعیت دیده می‌شود.
  • پاسخ‌های آماده (قابل ویرایش با «✎ ویرایش») متغیر دارند: {name} {code} {service} {link}
    مثلاً «{name} عزیز، فرم برایتان آماده شد؛ لطفاً از این لینک پر کنید: {link}».
  • بازیابی گفتگو بدون پیامک: مشتری در chat.html دکمهٔ «بازیابی گفتگو» را می‌زند و کد پیگیری + موبایل
    را می‌نویسد؛ با پاک شدن مرورگر هم گفتگو برمی‌گردد.
  • اطلاع‌رسانی به شما (اختیاری): در config.php توکن ربات بله/تلگرام و chat_id را بگذارید؛
    درخواست جدید و پیام جدید (حداکثر یک بار در ۵ دقیقه برای هر مشتری) به گوشی‌تان می‌آید. نیاز به curl در PHP دارد.
  • مشتری وقتی پاسخ می‌دهید اعلان پوش نمی‌گیرد؛ با باز کردن سایت، نشان پیام جدید روی دکمهٔ چت دیده می‌شود.


══════════ فاز ۵ — پایداری و گزارش ══════════
  • check.php : بعد از آپلود، آدرس /cafenetakbari/check.php را باز کنید؛ نسخهٔ PHP، افزونه‌ها، دسترسی نوشتن،
    سقف آپلود و کار کردن آدرس‌های api را بررسی می‌کند. بعد از اطمینان، حذفش کنید.
  • report.html (لینک در پنل مدیر): تعداد امروز/هفته/کل، وضعیت‌ها، نمودار ۱۴ روز، پرتقاضاترین خدمت‌ها
    و دکمهٔ «دانلود اکسل (CSV)» از همهٔ درخواست‌ها.
  • تغییر وضعیت درخواست در پنل، خودکار در چت مشتری پیام «وضعیت درخواست … : انجام‌شده» می‌گذارد.
