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
|
`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.**
|
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` ۱۸٬۵۲۲). هر جزیره ۳ تا ۶ درس دارد و هر درس
|
- **۱۶۰ جزیرهی «تمرین: …»** آخرِ فصلهای پایههای ۳ تا ۱۲، با **۱۳٬۶۸۹ سوالِ تازه** (کلِ `questions.json` ۱۸٬۵۲۲). هر جزیره ۳ تا ۶ درس دارد و هر درس
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ com.tadrisino.math.app شناخت (پرسشِ API با توکنِ ساختگی:
|
|||||||
پلنها با مدت پیدا میشوند، نه با id (idها بین دیتابیسها فرق دارند). اگر دقیقاً یک پلنِ فروشیِ هممدت
|
پلنها با مدت پیدا میشوند، نه با id (idها بین دیتابیسها فرق دارند). اگر دقیقاً یک پلنِ فروشیِ هممدت
|
||||||
نباشد، migration میشکند تا دستی دیده شود؛ SKUی که ادمین از پیش گذاشته دست نمیخورد.
|
نباشد، migration میشکند تا دستی دیده شود؛ SKUی که ادمین از پیش گذاشته دست نمیخورد.
|
||||||
"""
|
"""
|
||||||
|
from django.core.cache import cache
|
||||||
from django.db import migrations
|
from django.db import migrations
|
||||||
|
|
||||||
SKUS = {90: '10343', 180: '10344'}
|
SKUS = {90: '10343', 180: '10344'}
|
||||||
@@ -27,6 +28,9 @@ def forward(apps, schema_editor):
|
|||||||
continue
|
continue
|
||||||
plan.bazaar_sku = sku
|
plan.bazaar_sku = sku
|
||||||
plan.save(update_fields=['bazaar_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):
|
def backward(apps, schema_editor):
|
||||||
|
|||||||
Reference in New Issue
Block a user