SCRIPTS · REGISTRY SEED

seed_apps.sh — ثبت اولیهٔ اپلیکیشن‌ها

← بازگشت به فهرست اسکریپت‌ها


مسیر فایل: scripts/seed_apps.sh

مستند Application Registry در Application Registry مدل و API را شرح می‌دهد؛ این صفحه روی خودِ اسکریپت seed تمرکز دارد.


۱. کاراییش به زبان ساده

این اسکریپت لیست ثابت اپ‌های اولیهٔ PlayPulse را از روی host با curl به App API ثبت می‌کند. برای هر اپ یک POST /api/applications/ می‌زند: [OK] اگر ساخته شد (201)، [SKIP] اگر از قبل بود (409)، [FAIL] در غیر این صورت. اجرا idempotent است. هدفش این است که قبل از شروع crawler، registry خالی نباشد.


۲. کجا در پروژه کلی استفاده می‌شود؟

  • خودکار داخل bring_up.sh: بعد از healthy شدن app-api و قبل از بالا آوردن crawler / storage-consumer.
  • دستی: وقتی می‌خواهید بدون bring_up کامل فقط لیست اولیه را دوباره ثبت/تأیید کنید.
  • نه برای crawler-tests: آن سوئیت Mock است و به لیست واقعی DB وابسته نیست.
  • همیشه به localhost:${APP_API_PORT} وصل می‌شود (پورت publishشده)، نه به نام سرویس داخل شبکهٔ داکر.

۳. چیکارا می‌کند؟

  1. آدرس پایه: پیش‌فرض http://localhost:${APP_API_PORT:-8000}؛ با APP_API_BASE_URL یا APP_API_PORT قابل override.
  2. برای هر ردیف جدول زیر، POST با package_name، display_name، category، is_messaging_app، is_iranian_app (همه فعال ساخته می‌شوند — پیش‌فرض App API).
  3. گزارش رنگی شبیه check_infra.sh: [OK] / [SKIP] / [FAIL].
  4. اگر حداقل یک FAIL باشد → exit 1 (SKIP شکست نیست). bring_up در این حالت crawler را بالا نمی‌آورد.

لیست اپ‌های seed (۱۵ مورد):

package_name نام نمایشی category is_messaging_app is_iranian_app
org.telegram.messengerTelegramMessagingfalsefalse
com.whatsappWhatsAppMessagingfalsefalse
com.instagram.androidInstagramSocial Networkfalsefalse
com.facebook.katanaFacebookSocial Networkfalsefalse
com.zhiliaoapp.musicallyTikTokSocial Networkfalsefalse
com.myirancellMyirancellOperatorfalsetrue
ir.mci.ecareappMyMCIOperatorfalsetrue
com.shatelland.namava.mobileNamavaVideo Streamingfalsetrue
com.likotvLenzVideo Streamingfalsetrue
ir.tamashakhonehtvTamasha KhonehVideo Streamingfalsetrue
com.plus9.fandoghFandoghWord Gamefalsetrue
com.BrainLadder.AmirzaGPAmirzaWord Gamefalsetrue
com.plus9.samavarSamavarWord Gamefalsetrue
ir.android.bahamBahamDating Chattruetrue
app.pinnoPinnoDating Chattruetrue

is_iranian_app منطقه/زبان Play Store را برای crawler تعیین می‌کند؛ is_messaging_app برای مسیر تحلیل شبکه معنا دارد.


۴. تصمیمات معماری

  • فقط POST + گزارش وضعیت: بدون deactivate/reactivate یا منطق جانبی؛ همهٔ اپ‌های seed فعال‌اند.
  • Idempotent با 409: دوباره آوردن استک روی volume قبلی اپ‌های موجود را خراب نمی‌کند.
  • لیست داخل اسکریپت: منبع حقیقت واحد در git؛ package name و پرچم‌ها نهایی‌اند.
  • شکست جزئی = exit غیرصفر: bring_up نباید crawler را روی registry ناقص راه بیندازد.
  • Seed از host با curl: همان API عمومی که crawler مصرف می‌کند.

۵. دستورات

# معمولاً لازم نیست دستی بزنید؛ bring_up خودش صدا می‌زند.
# پیش‌نیاز: app-api سالم و پورت روی localhost publish شده باشد.

./scripts/seed_apps.sh

APP_API_PORT=8000 ./scripts/seed_apps.sh
APP_API_BASE_URL=http://localhost:8000 ./scripts/seed_apps.sh

# بررسی نتیجه (باید ۱۵ اپ فعال باشد)
curl -sS "http://localhost:${APP_API_PORT:-8000}/api/applications/" | python3 -c \
  'import json,sys; a=json.load(sys.stdin); print(len(a), "apps")'

پیش‌نیاز: curl روی host؛ app-api healthy؛ پورت APP_API_PORT (پیش‌فرض 8000) از host قابل دسترسی.

خروجی: همه OK/SKIP → exit 0؛ حداقل یک FAIL → exit 1.


← bring_up.sh · فهرست اسکریپت‌ها · Application Registry →