Bazaar: plans cache cleared by migration 0014, enum name override, CLAUDE.md status
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
12
CLAUDE.md
12
CLAUDE.md
@@ -451,6 +451,18 @@ 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.**
|
||||
|
||||
## کافهبازار: اشتراک، تخفیفِ پویا، تمدیدِ خودکار — روی سرور از ۲۰۲۶-۱۰-۱۲ ۱۷:۵۴ (بکاند `8077ab4`، فرانت `fffdeac`)
|
||||
|
||||
- **محصولهای پیشخان** (پرسشِ API با توکنِ ساختگی، ۱۰۰۰۰–۱۰۶۹۹): فقط `10342`، `10343` (اشتراکِ ۹۰ روزه)، `10344` (۱۸۰ روزه)،
|
||||
زیرِ `com.tadrisino.math.app`. سهماهه و ششماهه SKU گرفتند (`subscription.0014`)؛ `10342` نامعلوم است و به هیچ پلنی وصل
|
||||
نیست. هیچ بستهای در بازار نیست. اتصالِ سرور به بازار از راهِ OAuthِ حسابِ شرکت است (کلیدِ پیشخان نداریم).
|
||||
- **مسیر** و تمدیدِ خودکار: `docs/operations.md` «فروش در کافهبازار». `BAZAAR_DYNAMIC_PRICE_KEY` در `.env` سرور است (بکاپ:
|
||||
`.deploy-backups/env-before-bazaar-dynamic-20261012-175336`)؛ توکن فقط وقتی کدِ تخفیف قیمت را کم کرده میرود.
|
||||
- **فرانت:** دو کاشیِ «کارتِ بانکی» و «کافهبازار» همیشه کنارِ هم؛ بازار جایی که ممکن نیست غیرفعال با دلیل. پلِ تازه
|
||||
`bazaarBuy`؛ کلیدِ RSA و `versionCode` ۲ در `android/`. `compileDebugKotlin` سبز؛ **APK ساخته نشده**.
|
||||
- **سنجیده:** ۹۷۹ تست؛ روی سایتِ زنده با دموی ۱۴ و پلِ اندرویدِ ساختگی در مرورگر: کاشیها، و سرور SKUِ `10343`/«subscription»
|
||||
را به اپ داد (سفارشِ ۱۴ بعد لغو شد). **نسنجیده:** هیچ خرید، JWT یا تمدیدِ واقعی در بازار؛ برابریِ قیمتِ پیشخان با ادمین.
|
||||
|
||||
## جزیرههای تمرینِ تازه و شکل در سوال — ۲۰۲۶-۱۰-۱۲ (عصر)
|
||||
|
||||
- **۱۶۰ جزیرهی «تمرین: …»** آخرِ فصلهای پایههای ۳ تا ۱۲، با **۱۳٬۶۸۹ سوالِ تازه** (کلِ `questions.json` ۱۸٬۵۲۲). هر جزیره ۳ تا ۶ درس دارد و هر درس
|
||||
|
||||
@@ -8,6 +8,7 @@ com.tadrisino.math.app شناخت (پرسشِ API با توکنِ ساختگی:
|
||||
پلنها با مدت پیدا میشوند، نه با id (idها بین دیتابیسها فرق دارند). اگر دقیقاً یک پلنِ فروشیِ هممدت
|
||||
نباشد، migration میشکند تا دستی دیده شود؛ SKUی که ادمین از پیش گذاشته دست نمیخورد.
|
||||
"""
|
||||
from django.core.cache import cache
|
||||
from django.db import migrations
|
||||
|
||||
SKUS = {90: '10343', 180: '10344'}
|
||||
@@ -27,6 +28,9 @@ def forward(apps, schema_editor):
|
||||
continue
|
||||
plan.bazaar_sku = sku
|
||||
plan.save(update_fields=['bazaar_sku'])
|
||||
# مدلِ تاریخیِ migration سیگنالِ post_save (subscription/receivers.py) را نمیزند؛ بیاین فهرستِ پلنها تا یک
|
||||
# ساعت SKUی خالی نشان میداد (روی سرور دیده شد). کلید همان PLANS_CACHE_KEY است، کپی تا migration به view وابسته نشود.
|
||||
cache.delete('subscription:plans:v3')
|
||||
|
||||
|
||||
def backward(apps, schema_editor):
|
||||
|
||||
Reference in New Issue
Block a user