رفتن به محتوا

پیام‌رسان پشت صحنه

گروه‌محور و بی‌پیام شخصی، چه کسی را می‌شود اضافه کرد، پیام چطور لحظه‌ای می‌رسد، و چه چیزهایی از پیام‌ها محافظت می‌کند

SYS-10همه
نوع چه کسی می‌سازد اعضا پیش‌فرض نوشتن
گروه کلاس معلم همان کلاس یا مدیر مدرسه — با دکمه، یک گروه برای هر کلاس خودکار: دانش‌آموزها و معلم‌های کلاس همه
کل مدرسه فقط مدیر مدرسه انتخابی از کل مدرسه فقط مدیران
دلخواه (اولیا، تیم، …) مدیر یا معلم (معلم کلاس شخصی هم) انتخابی طبق درخت همه

پیام شخص‌به‌شخص عمداً وجود ندارد: هر گفتگو در گروهی است که مدرسه یا معلم ساخته، کنار هر پیام نام و نقش فرستنده هست و شماره‌ی تلفن هیچ‌کس نمایش داده نمی‌شود.

۲. قاعده‌ی درخت: چه کسی را می‌شود اضافه کرد؟

Section titled “۲. قاعده‌ی درخت: چه کسی را می‌شود اضافه کرد؟”
  • مدیر مدرسه ← همه‌ی معلم‌ها، دانش‌آموزها و اولیای مدرسه.
  • معلم ← دانش‌آموزهای کلاس‌های خودش، اولیای آن‌ها و معلم‌های دیگرِ همان کلاس‌ها.
  • معلم کلاس شخصی ← همین قاعده روی کلاس‌های شخصی خودش.

فهرست «افزودن عضو» در اپ از همین قاعده ساخته می‌شود، ولی تصمیم نهایی همیشه با سرور است: درخواست افزودن کسی بیرون از دامنه — حتی ساختگی — رد می‌شود. کسی که از درخت بیرون برود (خروج از کلاس یا مدرسه، قطع ارتباط ولی) خودکار از گروه‌هایی که دیگر به آن تعلق ندارد حذف می‌شود.

۳. پیام چطور لحظه‌ای می‌رسد؟

Section titled “۳. پیام چطور لحظه‌ای می‌رسد؟”
  1. اپ پیام را به سرور برینو می‌فرستد. سرور عضویت، حالت «فقط مدیران»، آرشیو، سقف سرعت و فیلتر واژه‌ها را می‌سنجد و پیام را در پایگاه داده ثبت می‌کند. اپ هیچ‌وقت مستقیم در جدول پیام‌ها نمی‌نویسد.
  2. هر گروه یک «اتاق» روی لبه‌ی Cloudflare دارد. هر عضوی که گروه را باز کرده با یک اتصال زنده (WebSocket) به این اتاق وصل است؛ سرور پیام ثبت‌شده را به اتاق می‌دهد و اتاق آن را به همه‌ی اعضای آنلاین پخش می‌کند. «آنلاین» و «در حال نوشتن» هم از همین اتاق می‌آیند.
  3. وصل‌شدن با یک بلیت یک‌دقیقه‌ای است که فقط عضو گروه می‌گیرد؛ اتاق هم خودش عضویت را دوباره می‌سنجد. عضوی که حذف شود، اتصالش فوری بسته می‌شود.
  4. اگر اتصال قطع شود، اپ با فاصله‌ی رو به افزایش (۱ تا ۳۰ ثانیه) دوباره وصل می‌شود — با برگشت اینترنت یا برگشت به اپ، فوری — و پیام‌هایی را که در این فاصله ثبت شده‌اند از سرور می‌گیرد. منبع حقیقت همیشه پایگاه داده است؛ پیامی گم نمی‌شود.
سقف پیش‌فرض
طول هر پیام ۴۰۰۰ نویسه
سرعت فرستادن ۲۰ پیام در دقیقه برای هر نفر
اعضای هر گروه ۱۰۰۰ نفر
«در حال نوشتن» فقط در گروه‌های تا ۵۰ عضو

همه‌ی این عددها را ادمین برینو تغییر می‌دهد. فیلتر واژه‌ها فهرستی است که ادمین نگه می‌دارد؛ تطبیق با کل واژه است (نه بخشی از واژه) و ی/ک عربی، نیم‌فاصله، کشیده و حروف تکراری را یکسان می‌گیرد. پیام مشکوک ثبت نمی‌شود و فرستنده پیام فارسی می‌بیند.

  • پیام‌های هر گروه را فقط اعضای فعلی می‌بینند؛ کسی که حذف شود تاریخچه را هم دیگر نمی‌بیند. با شناسه‌ی مستقیم هم نمی‌شود پیام گروهی را که عضوش نیستی خواند.
  • مدیر مدرسه گروه‌های مدرسه‌اش را مدیریت می‌کند (اعضا، نام، حالت نوشتن، آرشیو) حتی اگر عضو نباشد، ولی پیام‌ها را فقط اگر عضو باشد می‌بیند.
  • ولی که روی پروفایل فرزند سوییچ کند، با نشست واقعی فرزند همان گروه‌های فرزند را می‌بیند؛ با نشست خودش فقط گروه‌هایی که خودش عضو است.
  • آرشیو گروه نرم است: پیام‌ها می‌مانند و گروه فقط‌خواندنی می‌شود.

۶. رسانه، سهمیه و فضای شخصی

Section titled “۶. رسانه، سهمیه و فضای شخصی”
  • بارگذاری از سرور برینو: فایل تکه‌تکه (۸ مگابایتی) از همان دامنه‌ی برینو (api.braino.ir) به فضای ابری Cloudflare R2 می‌رود. بارگذاری قطع‌شده از آخرین تکه‌ی رسیده ادامه پیدا می‌کند. عکس پیش از فرستادن در خود گوشی فشرده می‌شود (WebP، ضلع بلند ≤ ۱۶۰۰ پیکسل).
  • بررسی نوع واقعی: سرور نوع فایل را از بایت‌های ابتدای خودش تشخیص می‌دهد، نه از پسوند یا ادعای مرورگر. SVG، HTML، zip و برنامه پذیرفته نمی‌شوند. فایل غیرتصویری همیشه دانلود می‌شود و در مرورگر اجرا نمی‌شود.
  • اثر انگشت (hash): گوشی پیش از بارگذاری اثر انگشت SHA-256 فایل را حساب می‌کند. اگر همان کاربر همان فایل را قبلاً بارگذاری کرده باشد، چیزی منتقل نمی‌شود و سهمیه دوباره کم نمی‌شود. سرور پس از رسیدن فایل، اثر انگشت را دوباره خودش می‌سنجد.
  • سهمیه: ۲۰۰ مگابایت برای هر نفر (قابل تغییر توسط ادمین). فقط فایل‌های بارگذاری‌شده‌ی خود شخص حساب می‌شوند. چند بارگذاری هم‌زمان هم نمی‌توانند از سقف عبور کنند، چون سهمیه هنگام تکمیل دوباره در یک قفل بررسی می‌شود.
  • لینک امضاشده: هر عکس یا فایل با لینکی باز می‌شود که حدود ۱۰ دقیقه معتبر است و فقط به عضو همان گروه (یا صاحب آیتم فضای شخصی) داده می‌شود. لینک بی‌امضا یا منقضی هیچ فایلی برنمی‌گرداند؛ اپ لینک منقضی را خودکار تازه می‌کند.
  • پاک‌سازی: فایل تا وقتی دست‌کم یک پیام زنده یا آیتم فضای شخصی به آن اشاره کند می‌ماند. با حذف آخرین اشاره، سهمیه همان لحظه آزاد می‌شود و یک کار زمان‌بندی‌شده‌ی ساعتی شیء را از R2 پاک می‌کند. بارگذاری‌های نیمه‌کاره و فایل‌هایی که بارگذاری شده‌اند ولی هرگز فرستاده نشده‌اند، پس از ۲۴ ساعت پاک می‌شوند.
  • نقش‌ها: ویدیو فقط معلم و مدیر مدرسه. کلید «رسانه فقط مدیران» گروه، عکس، فایل و صدا را به مدیران گروه محدود می‌کند. هر دو را سرور می‌سنجد.

۷. تعامل‌ها و رسیدگی به تخلف

Section titled “۷. تعامل‌ها و رسیدگی به تخلف”
  • واکنش: یک ایموجی per نفر از ۸ ایموجی ثابت؛ تغییرش لحظه‌ای برای همه پخش می‌شود.
  • دیده‌شده: برای هر عضو فقط «آخرین پیامی که دیده» نگه داشته می‌شود (همیشه رو به جلو). اپ پیامی را دیده‌شده می‌شمارد که واقعاً روی صفحه آمده و هر ۲ ثانیه یک بار خبر می‌دهد. شمار برای همه، نام‌ها فقط برای فرستنده و مدیران گروه (گروه ≤ ۱۰۰ نفر). شمار زنده تقریبی است و با باز کردن دوباره‌ی گروه دقیق می‌شود.
  • ویرایش و حذف: ویرایش تا ۳۰ دقیقه و حذف برای همه تا ۴۸ ساعت (فرستنده)؛ مدیر گروه/مدرسه همیشه. حذف برای همه متن را از دید همه برمی‌دارد ولی برای رسیدگی به گزارش در پایگاه داده می‌ماند و در لاگ مدیریت ثبت می‌شود. هر دو را سرور می‌سنجد، نه فقط اپ.
  • منشن و پین: منشن فقط اعضای همان گروه را می‌پذیرد؛ @همه فقط مدیر گروه. پین: ۳ دائمی + ۱ موقت (۲۴ ساعت یا ۷ روز).
  • جست‌وجو: متن پیام‌ها و فضای شخصی با یک نرمال‌سازی فارسی ذخیره و جست‌وجو می‌شود (ی/ک عربی، همزه‌دارها، اعراب، کشیده، نیم‌فاصله، ارقام)؛ فقط در گروه‌هایی که عضوشان هستی.
  • گزارش و بستن خودکار: هر گزارش به صف مدیر گروه و مدیر مدرسه می‌رود. ۳ گزارش‌دهنده‌ی متمایز روی گزارش‌های باز یک فرستنده در یک گروه — یا یک معلم/مدیر — ارسال او را در همان گروه تا رسیدگی می‌بندد؛ مدیران گروه و کادر مدرسه خودکار بسته نمی‌شوند. رد همه‌ی گزارش‌های باز، بستن خودکار را برمی‌دارد؛ بستن دستی فقط دستی باز می‌شود.
  • بی‌صدا: فعلاً فقط ذخیره می‌شود و در فهرست دیده می‌شود؛ اعلان گوشی (و عبور منشن از بی‌صدا) با فاز اعلان‌ها می‌آید.

راهنمای کاربر: UG-ALL-08.

اعلان گوشی وقتی اپ بسته است (منشن، پیام گروه‌های صدادار) · پیش‌نمایش لینک. خرید فضای بیشتر اضافه شد: SYS-17.