Fix mobile viewer chrome and keep pages visible during autoplay.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+48
-14
@@ -1,6 +1,6 @@
|
||||
# کاتالوگ دیجیتال (Digital Catalog)
|
||||
|
||||
سند مرجع پروژه — ۱۸ اوت ۲۰۲۶
|
||||
سند مرجع پروژه — ۱۸ اوت ۲۰۲۶، بهروز تا ۱۹ اوت ۲۰۲۶
|
||||
قبل از پیادهسازی نوشته شده است. اگر رفتار محصول عوض شد، همین فایل باید بهروز شود.
|
||||
|
||||
---
|
||||
@@ -25,10 +25,12 @@
|
||||
| ثبتنام / ورود | ندارد. هر بازدیدکننده دامنه میتواند بسازد |
|
||||
| گالری عمومی | ندارد |
|
||||
| خروجی ساخت | لینک مشاهده + تصویر QR + لینک حذف |
|
||||
| ویرایش بعدی | ندارد (صفحات، PDF، افکت بعد از ساخت عوض نمیشود) |
|
||||
| ویرایش بعدی | ندارد (صفحات، PDF، افکت و زمان ورق بعد از ساخت عوض نمیشود) |
|
||||
| انقضای خودکار | ندارد |
|
||||
| زبان رابط | فارسی، راستبهچپ |
|
||||
| نسخه اول | ساده؛ بدون حساب کاربری، بدون پنل ادمین، بدون SEO کاتالوگ |
|
||||
| دامنهٔ زنده | `https://ktg.montzar.ir` |
|
||||
| دیتابیس نسخه اول | SQLite روی دیسک همین پروژه؛ به Postgres مونتایم/سوپرادمین وصل نمیشود |
|
||||
|
||||
---
|
||||
|
||||
@@ -76,7 +78,7 @@
|
||||
- یک PDF **یا** چند تصویر (نه هر دو با هم در یک کاتالوگ)
|
||||
- ترتیب تصاویر = ترتیب انتخاب / ترتیب نام فایل؛ امکان جابهجایی قبل از ساخت
|
||||
- انتخاب یکی از افکتهای ورقزدن
|
||||
- تعیین زمان ورقخوردن (۴۰۰ تا ۵۰۰۰ میلیثانیه؛ پیشفرض ۱ ثانیه). بعد از ساخت عوض نمیشود
|
||||
- تعیین زمان ورقخوردن (۴۰۰ تا ۵۰۰۰ میلیثانیه؛ پیشفرض ۱ ثانیه). بعد از ساخت عوض نمیشود. روی مجله، اسلاید، محو و کارت اعمال میشود؛ اسکرول عمودی فقط فاصلهٔ پخش خودکار را از همین زمان میگیرد
|
||||
- عنوان اختیاری (اگر خالی باشد: «کاتالوگ»)
|
||||
|
||||
### مشاهده
|
||||
@@ -87,7 +89,7 @@
|
||||
- بندانگشتی صفحات
|
||||
- زوم و تمامصفحه
|
||||
- دسکتاپ: فقط افکت `magazine` دو صفحه روبهرو نشان میدهد؛ بقیه همیشه یک صفحه
|
||||
- موبایل: همیشه یک صفحه؛ اگر ورق سهبعدی روی دستگاه ضعیف بود، همان کاتالوگ با اسلاید افقی دیده میشود (تنظیم ذخیرهشده عوض نمیشود)
|
||||
- موبایل: همیشه یک صفحه؛ نوار عنوان و دکمهها جمع میشوند و هنگام پخش خودکار مخفی میشوند (دکمهٔ کوچک توقف میماند). اگر ورق سهبعدی روی دستگاه ضعیف بود، همان کاتالوگ با اسلاید افقی دیده میشود (تنظیم ذخیرهشده عوض نمیشود)
|
||||
|
||||
### اشتراک
|
||||
|
||||
@@ -97,9 +99,11 @@
|
||||
|
||||
### حذف
|
||||
|
||||
- حذف فقط با توکن مخفی
|
||||
- بعد از حذف، لینک و QR دیگر کار نمیکنند
|
||||
- فایل صفحات از دیسک پاک میشوند
|
||||
- لینک حذف فقط روی صفحهٔ نتیجه نشان داده میشود؛ باید همان لحظه کپی و ذخیره شود
|
||||
- بعداً فقط وقتی به کار میآید که سازنده بخواهد همین کاتالوگ را پاک کند (باز کردن لینک در مرورگر و تأیید)
|
||||
- در برنامه ذخیره یا بازیابی نمیشود؛ اگر گم شود راهی نیست
|
||||
- لینک مشاهده برای اشتراک است؛ لینک حذف را نباید پخش کرد
|
||||
- بعد از حذف، لینک مشاهده و QR دیگر کار نمیکنند و فایل صفحات از دیسک پاک میشوند
|
||||
|
||||
---
|
||||
|
||||
@@ -264,29 +268,53 @@ storage/catalogs/{id}/
|
||||
|
||||
سه صفحه اصلی، فارسی و RTL:
|
||||
|
||||
1. **ساخت:** ناحیه آپلود، لیست صفحات (مرتبسازی)، انتخاب افکت، دکمه ساخت
|
||||
2. **نتیجه:** لینک، QR، هشدار «لینک حذف را ذخیره کن»، دکمه حذف
|
||||
1. **ساخت:** ناحیه آپلود، لودینگ هنگام خواندن فایل و ساخت، لیست صفحات، انتخاب افکت، اسلایدر زمان ورقخوردن، دکمه ساخت
|
||||
2. **نتیجه:** لینک مشاهده، QR، هشدار «لینک حذف را ذخیره کن»، فیلد لینک حذف، دکمه حذف
|
||||
3. **نمایش:** استیج کاتالوگ، کنترلها، بندانگشتی
|
||||
|
||||
ظاهر نسخه اول تمیز و ساده باشد، نه داشبورد شلوغ.
|
||||
|
||||
---
|
||||
|
||||
## ۱۴. اجرا و پیکربندی
|
||||
## ۱۴. اجرا، دامنه و استقرار
|
||||
|
||||
یک سرور Node کافی است. SQLite و پوشه `storage/` کنار اپ میمانند.
|
||||
|
||||
توسعه محلی: `npm run dev` — فرانت `http://127.0.0.1:3000`، API روی `3010` و از طریق `/api` پروکسی میشود.
|
||||
|
||||
### دامنهٔ زنده (۱۹ اوت ۲۰۲۶)
|
||||
|
||||
- آدرس عمومی: `https://ktg.montzar.ir`
|
||||
- کد: `http://get.feep.ir/Mahdi/digitalcatalog.git` (شاخه `main`)
|
||||
- مسیر روی سرور: `/var/www/ktg`
|
||||
- PM2: نام `ktg-catalog`، **یک اینستنس، fork** (نه cluster؛ sql.js با چند پروسه خراب میشود)
|
||||
- پورت داخلی: `3020` — تداخل نکند با مونتایم (`3000`)، فوریسند (`3001`)، سوپرادمین (`3010`)
|
||||
- Nginx: فقط `server_name ktg.montzar.ir`؛ همهٔ مسیرها به `127.0.0.1:3020` پروکسی میشوند (`client_max_body_size 100M` فقط در همین vhost)
|
||||
- راهنمای قدمبهقدم: [`deploy/DEPLOY.md`](../deploy/DEPLOY.md)
|
||||
|
||||
این اپ روی همان هاست مشترک مونتایم است (`185.50.38.53`) ولی **جدا** میماند: پوشه، پورت، پروسهٔ PM2، فایل SQLite و دامنهٔ خودش. دیتابیس Postgres و JWT سوپرادمین لمس نمیشود. اگر بعداً لاگین/پروفایل آمد، باز هم داخل همین دامنه و دیتابیس همین پروژه است؛ کوکی نباید روی `.montzar.ir` باشد.
|
||||
|
||||
متغیرهای محیط:
|
||||
|
||||
```text
|
||||
# توسعه
|
||||
PORT=3000
|
||||
API_PORT=3010
|
||||
PUBLIC_BASE_URL=https://ktg.montzar.ir
|
||||
PUBLIC_BASE_URL=http://localhost:3000
|
||||
STORAGE_DIR=./storage
|
||||
DATABASE_PATH=./data/catalogs.sqlite
|
||||
|
||||
# سرور ktg.montzar.ir
|
||||
NODE_ENV=production
|
||||
PORT=3020
|
||||
PUBLIC_BASE_URL=https://ktg.montzar.ir
|
||||
STORAGE_DIR=/var/www/ktg/storage
|
||||
DATABASE_PATH=/var/www/ktg/data/catalogs.sqlite
|
||||
```
|
||||
|
||||
`PUBLIC_BASE_URL` همان دامنهای است که داخل QR نوشته میشود.
|
||||
`PUBLIC_BASE_URL` همان دامنهای است که داخل QR نوشته میشود. کاتالوگهای ساختهشده با `localhost` روی دامنهٔ زنده معتبر نیستند؛ باید روی سرور دوباره ساخته شوند.
|
||||
|
||||
آپدیت کد روی سرور: `git pull` سپس `npm ci && npm run build && pm2 restart ktg-catalog`. پوشههای `storage` و `data` و فایل `.env` پاک نشوند.
|
||||
|
||||
---
|
||||
|
||||
@@ -305,7 +333,7 @@ DATABASE_PATH=./data/catalogs.sqlite
|
||||
نسخه اول وقتی تمام است که:
|
||||
|
||||
- [x] با چند تصویر کاتالوگ ساخته شود (تست API با JPEG)
|
||||
- [ ] با PDF چندصفحهای در مرورگر (نیاز به بررسی دستی)
|
||||
- [x] با PDF چندصفحهای در مرورگر (بررسی دستی روی دامنهٔ زنده)
|
||||
- [x] پنج افکت در UI پیاده شدهاند (بررسی ظاهری باقی است)
|
||||
- [x] لینک `/c/:id` از API متادیتا میگیرد
|
||||
- [x] QR همان لینک را کد میکند
|
||||
@@ -314,6 +342,7 @@ DATABASE_PATH=./data/catalogs.sqlite
|
||||
- [x] گالری یا لیست عمومی وجود نداشته باشد
|
||||
- [ ] روی موبایل بررسی دستی
|
||||
- [x] سقف تعداد صفحه پیام خطا بدهد
|
||||
- [x] روی `https://ktg.montzar.ir` زنده است؛ ساخت کاتالوگ و لینک `/c/:id` کار میکند
|
||||
|
||||
---
|
||||
|
||||
@@ -326,7 +355,7 @@ DATABASE_PATH=./data/catalogs.sqlite
|
||||
- انقضای اختیاری
|
||||
- رمز روی کاتالوگ
|
||||
- هاست چند سروره / S3
|
||||
- حساب کاربری برای تیم
|
||||
- حساب کاربری، پروفایل و «کاتالوگهای من» — جدا از سوپرادمین/مونتایم؛ دیتابیس و کوکی مال `ktg.montzar.ir`
|
||||
|
||||
---
|
||||
|
||||
@@ -340,3 +369,8 @@ DATABASE_PATH=./data/catalogs.sqlite
|
||||
| ۲۰۲۶-۰۸-۱۸ | بدون گالری؛ فقط لینک و QR |
|
||||
| ۲۰۲۶-۰۸-۱۸ | بعد از ساخت: لینک + QR + لینک حذف؛ بدون ویرایش و بدون انقضا |
|
||||
| ۲۰۲۶-۰۸-۱۸ | استک: Vue 3 + Hono + SQLite + pdf.js + StPageFlip |
|
||||
| ۲۰۲۶-۰۸-۱۸ | زمان ورقخوردن هنگام ساخت (۴۰۰–۵۰۰۰ms)؛ روی مجله/اسلاید/محو/کارت |
|
||||
| ۲۰۲۶-۰۸-۱۸ | لودینگ هنگام خواندن فایل، آمادهسازی صفحات و ساخت کاتالوگ |
|
||||
| ۲۰۲۶-۰۸-۱۹ | استقرار روی هاست مشترک؛ دامنه `ktg.montzar.ir`؛ پورت ۳۰۲۰؛ SQLite جدا |
|
||||
| ۲۰۲۶-۰۸-۱۹ | مخزن Gitea: `http://get.feep.ir/Mahdi/digitalcatalog.git` |
|
||||
| ۲۰۲۶-۰۸-۱۹ | لاگین بعدی اگر آمد به Nest/Postgres بقیه وصل نمیشود |
|
||||
|
||||
Reference in New Issue
Block a user