Implement comprehensive Telegram customers storage and management functionality: Backend: - Add database migration for telecart_customers table with indexes - Create TelegramCustomer model with CRUD operations - Implement TelegramCustomerService for business logic - Add TelegramCustomerHandler for API endpoint (saveOrUpdate) - Add TelegramCustomersHandler for admin API (getCustomers with pagination, filtering, sorting) - Add SendMessageHandler for sending messages to customers via Telegram - Create custom exceptions: TelegramCustomerNotFoundException, TelegramCustomerWriteNotAllowedException - Refactor TelegramInitDataDecoder to separate decoding logic - Add TelegramHeader enum for header constants - Update SignatureValidator to use TelegramInitDataDecoder - Register new routes in bastion/routes.php and src/routes.php Frontend (Admin): - Add CustomersView.vue component with PrimeVue DataTable - Implement advanced filtering (text, date, boolean filters) - Add column visibility toggle functionality - Add global search with debounce - Implement message sending dialog with validation - Add Russian locale for PrimeVue components - Add navigation link in App.vue - Register route in router Frontend (SPA): - Add saveTelegramCustomer utility function - Integrate automatic customer data saving on app initialization - Extract user data from Telegram.WebApp.initDataUnsafe The system automatically saves/updates customer data when users access the Telegram Mini App, and provides admin interface for viewing, filtering, and messaging customers. BREAKING CHANGE: None
45 lines
1.3 KiB
JSON
45 lines
1.3 KiB
JSON
{
|
|
"rules": {
|
|
"preferCompositionAPI": true,
|
|
"strictTypes": true,
|
|
"noHardcodedValues": true,
|
|
"useDependencyInjection": true
|
|
},
|
|
"paths": {
|
|
"telecart_module": "module/oc_telegram_shop/upload/oc_telegram_shop",
|
|
"frontendAdmin": "frontend/admin",
|
|
"telegramShopSpa": "frontend/spa",
|
|
"migrations": "module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations",
|
|
"telecartHandlers": "module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers",
|
|
"adminHandlers": "module/oc_telegram_shop/upload/oc_telegram_shop/bastion/Handlers",
|
|
"models": "module/oc_telegram_shop/upload/oc_telegram_shop/src/Models",
|
|
"framework": "module/oc_telegram_shop/upload/oc_telegram_shop/framework"
|
|
},
|
|
"naming": {
|
|
"classes": "PascalCase",
|
|
"methods": "camelCase",
|
|
"variables": "camelCase",
|
|
"constants": "UPPER_SNAKE_CASE",
|
|
"files": "PascalCase for classes, kebab-case for others",
|
|
"tables": "snake_case with telecart_ prefix"
|
|
},
|
|
"php": {
|
|
"version": "7.4+",
|
|
"preferVersion": "7.4+",
|
|
"psr12": true
|
|
},
|
|
"javascript": {
|
|
"version": "ES2020+",
|
|
"framework": "Vue 3 Composition API",
|
|
"stateManagement": "Pinia",
|
|
"uiLibrary": "PrimeVue (admin), Tailwind (spa)"
|
|
},
|
|
"database": {
|
|
"queryBuilder": true,
|
|
"migrations": true,
|
|
"tablePrefix": "telecart_",
|
|
"noForeignKeys": true
|
|
}
|
|
}
|
|
|