docs: handbook, diagrams and guides brought up to 2026-10-02
- technical-handbook: question packs instead of subscriptions, real hearts with the new wait screen (screenshot), math-only tutor and what is charged (new 9-7), admin cancel/refund, Bazaar planId, account deletion, 59 endpoints, 779 tests, 14 apps, status and open decisions. - Diagrams redrawn: use-case (buy a pack, refunds), data model (QuestionCredit, HeartsPass, Profile.birth_date), pack payment sequence. - The PDF is now built from the Markdown by docs/build_handbook.py (pandoc + Chrome, font in docs/assets); the hand-made HTML it used to come from was not in the repo and had been lost. - architecture, operations, security-before-production (item 13 closed), ai-cost-and-guardrails and README follow the same changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
| ۱۰ | ورودِ مهمان فقط با `deviceId` است | کم (طراحی) | کد |
|
||||
| ۱۱ | توکنِ refresh و کدِ OTP بیهش در دیتابیس | کم | کد |
|
||||
| ۱۲ | هزینهی دستیارِ AI با ساختِ حسابِ مهمان قابلِ بالا بردن است | کم (مالی) | کد |
|
||||
| ۱۳ | محدودیتِ قلب در سرور خاموش است (`HEARTS_ENFORCED=0`) | کم (کسبوکار) | `.env` + فرانت |
|
||||
| ۱۳ | ~~محدودیتِ قلب در سرور خاموش است (`HEARTS_ENFORCED=0`)~~ **بسته شد ۲۰۲۶-۱۰-۰۲** | کم (کسبوکار) | `.env` + فرانت |
|
||||
| ۱۴ | SQLite روی دیسکِ مشترکِ پُر، بدونِ بکاپِ خودکارِ بیرون از ماشین | کم (داده) | زیرساخت |
|
||||
| ۱۵ | دسترسیِ سرور: حسابِ مشترک، رمز، sudoِ کامل | بالا | ادمینِ سرور |
|
||||
| ۱۶ | فرانت توکن را در `localStorage` نگه میدارد | کم | فرانت |
|
||||
@@ -166,16 +166,17 @@
|
||||
|
||||
## ۱۲. هزینهی دستیارِ AI
|
||||
|
||||
- **چیست:** سقفِ روزانه ۱۵ سؤال **برای هر کاربر** (`DAILY_AI_QUOTA`) و ۲۰ در ساعت؛ مهمانها
|
||||
بر اساسِ IP محدود میشوند ولی هر IP ساعتی ۲۰ حسابِ مهمانِ تازه میسازد (`guest_session`)،
|
||||
و هر حسابِ تازه ۱۵ سؤالِ تازه دارد. طولِ سؤال از ۲۰۲۶-۰۹-۲۵ حداکثر ۲۰۰۰ نویسه است.
|
||||
- **چیست:** از ۲۰۲۶-۱۰-۰۲ هر کاربر روزی ۳ سؤالِ رایگان دارد (`AI_DAILY_QUOTA_FREE`؛ پیشتر ۱۵)
|
||||
و بعد فقط با اعتبارِ خریدهشده؛ ۲۰ در ساعت. مهمانها بر اساسِ IP محدود میشوند ولی هر IP ساعتی
|
||||
۲۰ حسابِ مهمانِ تازه میسازد (`guest_session`)، و هر حسابِ تازه ۳ سؤالِ رایگانِ تازه دارد. خطر
|
||||
کمتر شد (۳ بهجای ۱۵)، ولی بسته نیست. طولِ سؤال از ۲۰۲۶-۰۹-۲۵ حداکثر ۲۰۰۰ نویسه است.
|
||||
- **خطر:** با چند IP، اعتبارِ GapGPT در چند ساعت تمام میشود (اعتبار یک بار در ۲۰۲۶-۰۹-۲۵
|
||||
به صفر رسید، البته به دلیلِ دیگر).
|
||||
- **رفع:** سقفِ سراسریِ روزانه برای کلِ اپ؛ دستیار فقط برای کاربرِ واردشده با شماره یا
|
||||
با سقفِ بسیار کمتر برای مهمان؛ هشدار وقتی `aiProvider.state` در `/api/health` برابرِ
|
||||
`quota_exhausted` شد.
|
||||
|
||||
## ۱۳. محدودیتِ قلب خاموش است
|
||||
## ۱۳. ~~محدودیتِ قلب خاموش است~~ — بسته شد ۲۰۲۶-۱۰-۰۲
|
||||
|
||||
- **چیست:** با صفر قلب، سرور همچنان جواب را میپذیرد، مگر `HEARTS_ENFORCED=1`
|
||||
(`content/views.py::QuestionAnswerView`). «قلبِ نامحدود» تنها مزیتِ اشتراک است.
|
||||
@@ -183,6 +184,9 @@
|
||||
- **چرا باز مانده:** فرانت برای ۴۰۳ِ `no_hearts` هنوز صفحه ندارد؛ روشن کردنش دانشآموز را به
|
||||
صفحهی خطا میبرد. رفتار با صفر قلب هم تصمیمِ محصولیِ باز است.
|
||||
- **رفع:** بعد از صفحهی «قلبها تمام شد» در فرانت، `HEARTS_ENFORCED=1` در `.env`.
|
||||
- **بسته شد ۲۰۲۶-۱۰-۰۲** (بکاند `4700ccb`، فرانت `33f5f8d`): `HEARTS_ENFORCED` پیشفرض روشن؛ چکِ
|
||||
قلب داخلِ تراکنش؛ پایانِ درس/جزیرهی بیجواب با قلبِ صفر هم بسته؛ صفحهی «قلبهات تموم شد» با
|
||||
شمارشِ معکوس. تستها: `content/tests_hearts_gate.py`.
|
||||
|
||||
## ۱۴. دیتابیس و بکاپ
|
||||
|
||||
|
||||
Reference in New Issue
Block a user