- Add haptic_enabled field to AppDTO with default value true
- Update SettingsSerializerService to deserialize haptic_enabled
- Add haptic_enabled setting in admin panel (GeneralView) with toggle
- Update admin settings store to include haptic_enabled default value
- Update SPA SettingsStore to load haptic_enabled from API
- Refactor useHapticFeedback composable to return safe wrapper object
- Replace all direct window.Telegram.WebApp.HapticFeedback usage with composable
- Update useHapticScroll to use useHapticFeedback composable
- Add getHapticFeedback helper function in CheckoutStore for store usage
- Add haptic_enabled default value to app.php configuration
- All haptic feedback methods now check settings internally
- Remove redundant if checks from components (handled in composable)
- Create Account.vue page component with user profile display
- Add account route to router.js
- Update Navbar.vue to remove avatar button (moved to Dock)
- Add avatar icon to Dock.vue for account page navigation
- Implement 'Contact us' action that opens manager chat via Telegram
- Implement 'Add to home screen' feature using Telegram Web App API 8.0+
- Add home screen status checking with checkHomeScreenStatus API
- Display customer registration date and days with us counter
- Add Russian language declension for days word (Π΄Π΅Π½Ρ/Π΄Π½Ρ/Π΄Π½Π΅ΠΉ)
- Update TelegramCustomerHandler to return created_at in saveOrUpdate response
- Add getByTelegramUserId method to TelecartCustomerService
- Store customer_created_at in Pulse store during app initialization
- Update App.vue to show Dock on account page
- Remove unused getCurrentCustomer API endpoint and function
- Add text_manager_button field to TextsDTO with getter method
- Update SettingsSerializerService to validate and deserialize new field
- Add text_manager_button field to admin settings store
- Add input field in admin TextsView for configuring button text
- Update SPA SettingsStore with default value including emoji
- Replace hardcoded button text in Product.vue with configurable text
- Remove SVG icon from manager button to allow emoji usage
- Add default value with emoji to app.php configuration
- Button text now customizable via admin panel Texts tab
- Add ItemToggleButton component for 3-way toggle in admin panel
- Add product_interaction_mode setting with options: order, manager, browser
- Add manager_username setting for Telegram manager contact
- Remove store_enabled setting, replaced with product_interaction_mode
- Create migration to automatically migrate store_enabled to product_interaction_mode
- Update Product.vue to handle all three interaction modes
- Update Dock.vue to show cart button only when product_interaction_mode is 'order'
- Rename 'ΠΠ°Π³Π°Π·ΠΈΠ½' tab to 'ΠΠΈΡΡΠΈΠ½Π°' in admin panel
- Remove 'Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠΊΡΠΏΠΊΠΈ' option (now controlled via product_interaction_mode)
- Set default product_interaction_mode to 'browser'
- Update StoreDTO to remove enableStore field
- Update SettingsHandler to return product_interaction_mode instead of store_enabled
- Add show_category_products_button field to StoreDTO
- Update SettingsSerializerService to support new field
- Add setting in admin panel on 'Store' tab with toggle
- Pass setting to SPA through SettingsHandler
- Button displays only for categories with child categories
- Add default value true to configuration
Implement comprehensive event tracking system for TeleCart Pulse that ensures
all user interactions and order events are reliably captured and delivered to
the analytics platform, even in case of network failures or service outages.
Business Value:
- Guaranteed event delivery: All events are stored in database before sending,
ensuring no data loss even if SaaS service is temporarily unavailable
- Automatic retry mechanism: Failed events are automatically retried with
configurable attempts, reducing manual intervention
- Real-time monitoring: Admin dashboard displays event statistics (pending,
sent, failed) to track system health and delivery status
- Data integrity: Idempotency keys prevent duplicate events, ensuring accurate
analytics and metrics
- Performance optimization: Statistics are cached for 1 hour to reduce database
load while maintaining visibility
Key Features:
- Event queue system: Events are queued in database with status tracking
(pending/sent/failed)
- Asynchronous processing: Events are sent via background tasks, not blocking
user interactions
- Error tracking: Failed events include detailed error reasons for debugging
- Campaign tracking: Only events with valid campaign_id and tracking_id are
stored, ensuring data quality
- Admin visibility: Statistics dashboard shows delivery status at a glance
This system ensures reliable data collection for campaign analytics, A/B testing,
and performance metrics, providing accurate insights for business decisions.