مسیر فایل: 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شده)، نه به نام سرویس داخل شبکهٔ داکر.
۳. چیکارا میکند؟
- آدرس پایه: پیشفرض
http://localhost:${APP_API_PORT:-8000}؛ باAPP_API_BASE_URLیاAPP_API_PORTقابل override. - برای هر ردیف جدول زیر، POST با
package_name،display_name،category،is_messaging_app،is_iranian_app(همه فعال ساخته میشوند — پیشفرض App API). - گزارش رنگی شبیه
check_infra.sh: [OK] / [SKIP] / [FAIL]. - اگر حداقل یک FAIL باشد → exit
1(SKIP شکست نیست). bring_up در این حالت crawler را بالا نمیآورد.
لیست اپهای seed (۱۵ مورد):
| package_name | نام نمایشی | category | is_messaging_app | is_iranian_app |
|---|---|---|---|---|
org.telegram.messenger | Telegram | Messaging | false | false |
com.whatsapp | Messaging | false | false | |
com.instagram.android | Social Network | false | false | |
com.facebook.katana | Social Network | false | false | |
com.zhiliaoapp.musically | TikTok | Social Network | false | false |
com.myirancell | Myirancell | Operator | false | true |
ir.mci.ecareapp | MyMCI | Operator | false | true |
com.shatelland.namava.mobile | Namava | Video Streaming | false | true |
com.likotv | Lenz | Video Streaming | false | true |
ir.tamashakhonehtv | Tamasha Khoneh | Video Streaming | false | true |
com.plus9.fandogh | Fandogh | Word Game | false | true |
com.BrainLadder.AmirzaGP | Amirza | Word Game | false | true |
com.plus9.samavar | Samavar | Word Game | false | true |
ir.android.baham | Baham | Dating Chat | true | true |
app.pinno | Pinno | Dating Chat | true | true |
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.