API output without Persian diacritics or written ezafe ی (company decision); tutor answers too

plain_persian() strips kasra/fatha/damma/shadda/sukun/hamza-above and the written «ه‌ی» ezafe, keeping tanwin. Applied
at output, not in data: PlainPersianJSONRenderer runs one byte-level pass over every JSON response (~5 ms per MB
locally), and to_plain() cleans tutor answers including the stream. Rewriting titles in the DB/seed would have broken
question binding by title path and SeedRecord keys. Tests updated to expect the cleaned text; config/tests_plain_persian.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-14 16:57:17 +03:30
parent 7b241c1aac
commit 1c7c4b8eca
16 changed files with 181 additions and 64 deletions

View File

@@ -460,6 +460,19 @@ preferred setup, because there is then no key to leak. **Never let the server ru
`django-insecure-…` fallback from `config/settings.py`: that string is committed here, so
anyone who can read this repo can forge a token for any user.**
## متنِ بی‌اعراب، نقشه‌ی بی‌بنر، برگه‌ی پرداختِ آشنا، حذفِ حساب در «حساب کاربری» — ۲۰۲۶-۱۰-۱۴
- **هیچ اعراب و «ی»ِ اضافه‌ای به کاربر نمی‌رسد** (تصمیمِ شرکت): `content.plain_math.plain_persian` (تنوین می‌ماند).
بک‌اند آن را **در خروجی** می‌زند، نه در داده: `config.renderers.PlainPersianJSONRenderer` روی بایت‌های هر پاسخِ JSON،
و `rag.services.mathtext.to_plain` روی پاسخِ دستیار (استریم هم). دیتابیس، seed و ادمین متنِ اصلی را نگه می‌دارند؛
بازنویسیِ عنوان‌ها اتصالِ سوال به درس (مسیرِ عنوان) و کلیدهای `SeedRecord` را می‌شکست. هزینه: ~۵ میلی‌ثانیه برای
هر مگابایت پاسخ (محلی)؛ زیرِ بارِ سرور اندازه نشده. پیام‌های `JsonResponse`ِ بیرون از DRF دستی تمیز شدند. تست:
`config/tests_plain_persian.py`. فرانت متن‌هایش را مستقیم پاک کرد و `plainPersian` را در `MathText` دارد.
- فرانت: بنرِ همراه و حبابِ متن بالای نقشه رفت؛ همراهِ انتخابی کنارِ جزیره‌ی فعلی و هر سه پیچ (`IslandPath`). برگه‌ی
پرداخت ردیف‌های روش با نشانِ زرین‌پال/بازار دارد و روش‌ها از `paymentMethods` در `config.js` (مرورگر/اپ) می‌آیند.
«ورود با حسابِ دیگر» حذف شد؛ حذفِ حساب در برگه‌ی «حساب کاربری» است (Google Play و App Store «پیداشدنی» می‌خواهند؛
قاعده‌ی منتشرشده‌ای از کافه‌بازار پیدا نشد).
## بازبینیِ پروداکشن و سخت‌کردنِ سرور — ۲۰۲۶-۱۰-۱۳ (بک‌اند `e3bddb3` و بعد)
چک‌لیستِ سینیور: `~/Desktop/گزارشات Tadrisino/گزارش-۳۴/` (HTML و PDF؛ ساز در scratchpad، نه ریپو).