# Feature Map

ستون‌ها: قابلیت · Flow کاربر · Flow مدیر · جداول · Service · Worker/Job · API خارجی · Permission · Notification

| Feature | User Flow | Admin Flow | Database | Service | Worker / Job | External API | Permission | Notification |
|---|---|---|---|---|---|---|---|---|
| ثبت‌نام و پروفایل | `/start` → upsert | Users → کارت کاربر | `users`, `bot_users` | `Users\UserService` | `ProcessUpdateJob` | Telegram | `users.view` | — |
| مسدودسازی | پیام «حساب مسدود است» | Block / Unblock | `users` | `Admin\UserAdminService` | — | — | `users.block` | — |
| کیف پول و Ledger | 💰 کیف پول، تراکنش‌ها | Ledger، افزایش/کاهش دستی | `wallets`, `wallet_transactions` | `Wallet\WalletService` | — | — | `wallet.view`, `wallet.adjust` | — |
| انتقال موجودی | امور مالی → انتقال | — | `wallet_transactions` | `Wallet\TransferService` | — | — | — | `TransferReceived` |
| شارژ / پرداخت ریالی | کیف پول → شارژ → زرین‌پال | Payments | `payments`, `payment_transactions` | `Payments\PaymentService`, `ZarinPalGateway` | `ExpirePaymentsJob` | ZarinPal | `payments.view` | `PaymentConfirmed` |
| پرداخت رمزارزی | شارژ → TRON / TON / NowPayments / Payment4 | Payments → Verify مجدد | `payments` | `TronGateway`, `TonGateway`, `NowPaymentsGateway`, `Payment4Gateway`, `RateService` | `VerifyPaymentJob`, `ScanCryptoPaymentsJob` | TronGrid, TonCenter, NowPayments, Payment4, Nobitex | `payments.view`, `payments.refund` | `PaymentConfirmed` |
| برداشت | امور مالی → برداشت → روش → مبلغ → مقصد → تأیید | Withdrawals: approve/reject/process/complete | `withdrawals` | `Withdrawals\WithdrawalService`, `WithdrawalMethodRegistry` | `ExpireWithdrawalsJob` | — | `withdrawals.view/approve/reject` | `WithdrawalCreated/Approved/Rejected/Completed` |
| حساب بانکی / کیف رمزارز | امور مالی → حساب‌ها | مشاهده‌ی Mask شده | `bank_accounts`, `crypto_wallets` | `Withdrawals\AccountService` | — | — | `users.view` | — |
| احراز هویت (KYC) | امور مالی → احراز هویت | KYC → تأیید/رد | `kyc_requests` | `Kyc\KycService` | `ExpireKycJob` | — | `kyc.view`, `kyc.review` | `AuthenticationApproved/Rejected` |
| کانال‌ها | حساب کاربری → کانال‌های من → افزودن/حذف/آمار/لینک | Channels | `channels`, `channel_members`, `channel_links` | `Channels\ChannelService` | `ProcessChatMemberJob` | Telegram | `channels.view`, `channels.edit` | — |
| کمپین تبلیغاتی | 🛒 سفارش جدید | Campaigns: تأیید/رد/توقف/لغو/تکمیل/ویرایش | `campaigns`, `products` | `Campaigns\CampaignService`, `CampaignTypeRegistry` | `CampaignMaintenanceJob` | Telegram | `campaigns.view/approve/edit` | `CampaignApproved/Rejected/Completed` |
| لینک تبلیغاتی | 📢 تبلیغات → دریافت لینک | Links | `campaign_links` | `Campaigns\LinkService` | `CampaignMaintenanceJob` | Telegram `createChatInviteLink` | `campaigns.view` | — |
| Join / Leave Tracking | — | Dashboard: Join/Leave | `campaign_members`, `channel_members` | `Campaigns\JoinTrackingService` | `ProcessChatMemberJob` | Telegram `chat_member` | — | `CampaignCompleted` |
| تسویه‌ی درآمد | گزارش‌ها | — | `campaign_members`, `wallet_transactions` | `Campaigns\EarningService` | `SettleEarningsJob` | — | — | — |
| رفتار مشکوک | — | Risk | `risk_events` | `Security\FraudDetector` | `ProcessChatMemberJob` | — | `risk.view` | Admin Alert |
| سفارش | 🛒 / 📦 | Orders | `orders`, `order_items` | `Orders\OrderService` | `FulfilOrderJob`, `ExpireOrdersJob` | — | `orders.view`, `orders.edit` | `OrderCreated/Paid/Completed` |
| زیرمجموعه و کمیسیون | 👥 | Referrals، درصدها در Settings | `referrals`, `referral_transactions` | `Referrals\ReferralService`, `CommissionService` | — | — | `referrals.view` | `ReferralEarned` |
| رتبه‌بندی | 🏆 | وزن‌ها در Settings | `users.score/rank_position` | `Ranking\RankingService` | `RecalculateRankingJob` | — | `settings.edit` | — |
| گزارش درآمد | 📊 | Reports | `wallet_transactions`, `daily_stats` | `Reports\IncomeReportService`, `Reports\AdminReportService` | `AggregateStatsJob` | — | `reports.view` | — |
| پشتیبانی | 🎧 | Tickets → پاسخ/بستن | `tickets`, `ticket_messages` | `Support\TicketService` | — | — | `support.view`, `support.reply` | `TicketAnswered` |
| اعلان‌ها | پیام خودکار | — | `notifications` | `Notifications\NotificationService` | `SendNotificationJob` | Telegram | — | همه‌ی رویدادها |
| Broadcast | — | Broadcast → هدف → محتوا → تأیید | `broadcasts`, `broadcast_recipients` | `Broadcast\BroadcastService` | `PrepareBroadcastJob`, `SendBroadcastBatchJob` | Telegram | `broadcast.send` | — |
| RBAC | — | Admins / Roles | `admins`, `roles`, `permissions`, `role_permissions`, `admin_roles` | `Admin\Authorizer`, `Admin\AdminService` | — | — | `admins.manage` | — |
| Audit Log | — | Logs | `audit_logs` | `Admin\AuditLogger` | — | — | `logs.view` | — |
| Settings و Feature Flag | — | Settings / Flags | `settings` | `Core\Settings\Settings`, `FeatureFlags` | — | — | `settings.edit` | — |
| متن‌ها و Keyboardها | — | Settings → متن‌ها | `settings (text.*, keyboard.*)` | `Core\I18n\Translator`, `Telegram\Keyboards` | — | — | `settings.edit` | — |
| Force Join | پیام عضویت اجباری | Settings | `settings` | `Telegram\Middleware\ForceJoin` | — | Telegram `getChatMember` | `settings.edit` | — |
| Maintenance | پیام «در حال به‌روزرسانی» | Toggle | `settings` | `Telegram\Middleware\Maintenance` | — | — | `settings.edit` | — |
| Anti-Abuse | محدودیت نرخ / قفل موقت | Risk | Redis, `risk_events` | `Security\AbuseGuard` | — | — | `risk.view` | Admin Alert |
| جستجو | — | Search | همه | `Admin\SearchService` | — | — | `users.view` … | — |
| Export | — | Export CSV / Excel | — | `Admin\ExportService` | `ExportJob` | Telegram `sendDocument` | `reports.export` | — |
| Dashboard / Monitoring | — | Dashboard / Health | Redis, DB | `Reports\DashboardService`, `Workers\HealthService` | `HealthCheckJob` | همه | `reports.view` | Admin Alert |
| Backup / Restore | — | CLI | فایل | `Console\BackupCommand` | Cron | `mysqldump` | — | Admin Alert |
| Multi-Bot | — | CLI `bot:add` | `bots`, `bot_users` | `Bots\BotRegistry` | — | Telegram | — | — |
