Рефакторинг системы кошелька клиентов
Основные изменения: - Переход от денормализованного поля wallet_balance к вычисляемому балансу - Баланс теперь вычисляется как SUM(signed_amount) транзакций - Добавлено кеширование баланса для производительности (5 минут) - Новая модель WalletTransaction с полем signed_amount (может быть +/-) - WalletService для всех операций с кошельком (deposit, spend, adjustment) - Защита от отрицательного баланса и race conditions через select_for_update - Добавлен balance_after в каждую транзакцию для аудита - Обновлены миграции для переноса данных из старой схемы Улучшения безопасности: - Атомарные транзакции для всех операций с балансом - Блокировка строк при модификации баланса - Валидация недостаточности средств - Обязательное описание для корректировок баланса UI/UX изменения: - Обновлён вывод баланса кошелька в деталях клиента - Добавлена история транзакций с типами и описаниями - Цветовая индикация положительных транзакций (зелёный) Техническая документация: - Добавлены docstrings для всех методов WalletService - Комментарии к критичным участкам кода - Примеры использования в docstrings
This commit is contained in:
@@ -14,6 +14,10 @@ urlpatterns = [
|
||||
path('<int:pk>/wallet/deposit/', views.wallet_deposit, name='wallet-deposit'),
|
||||
path('<int:pk>/wallet/withdraw/', views.wallet_withdraw, name='wallet-withdraw'),
|
||||
|
||||
# Contact channels
|
||||
path('<int:customer_pk>/channels/add/', views.add_contact_channel, name='add-contact-channel'),
|
||||
path('channels/<int:pk>/delete/', views.delete_contact_channel, name='delete-contact-channel'),
|
||||
|
||||
# AJAX API endpoints
|
||||
path('api/search/', views.api_search_customers, name='api-search-customers'),
|
||||
path('api/create/', views.api_create_customer, name='api-create-customer'),
|
||||
|
||||
Reference in New Issue
Block a user