42d7667735
Core changes: - ISmsService: add SendBulkAsync (batches of 200) + GetAccountInfoAsync - KavenegarSmsService: POST requests, sender number config, bulk send via comma-separated receptors, account balance, full error code mapping (HTTP 400-432), enabled-flag check before any send - SmsMarketingService: replaced per-recipient loop with SendBulkAsync - SmsController: new GET /sms/balance endpoint returns Kavenegar credit - SmsDtos: SmsBalanceDto - IntegrationDtos + PlatformIntegrationService: SenderNumber field - appsettings.json + docker-compose: Kavenegar__SenderNumber = 90005671 Dashboard: - sms-screen: char counter, SMS parts indicator (Persian 70/67 chars, Latin 160/153), account balance card, sender line display, result banner Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Meezi Dashboard
Next.js 14 POS dashboard for Meezi (میزی).
Setup
cd web/dashboard
npm install
cp .env.example .env.local
npm run dev
Open http://localhost:3000/fa/login
Ensure the API is running at NEXT_PUBLIC_API_URL (default https://localhost:7208).
Demo login
- Phone:
09121234567 - OTP: check API console log (
DEV OTP for ...) when Kavenegar is not configured
Features (Sprint 4)
- i18n:
fa(default, RTL),ar(RTL),en(LTR) - Dashboard layout with RTL-aware sidebar
- POS screen: menu grid + cart + order submit
- KDS screen: live orders + SignalR + status advance
- Placeholder pages for upcoming modules