diff --git a/antifroud/check_fraud.py b/antifroud/check_fraud.py index 17dbfcfd..7e25de63 100644 --- a/antifroud/check_fraud.py +++ b/antifroud/check_fraud.py @@ -2,6 +2,7 @@ from datetime import timedelta from urllib.parse import parse_qs from django.utils import timezone from django.db.models import Q +from django.db import connection from hotels.models import Reservation, Hotel from .models import UserActivityLog, ViolationLog, RoomDiscrepancy from touchh.utils.log import CustomLogger @@ -35,7 +36,7 @@ class ReservationChecker: def fetch_user_logs(self): try: self.log_info("Начинается извлечение логов активности пользователей.") - user_logs = UserActivityLog.objects.filter(created__range=(self.start_time, self.end_time)) + user_logs = UserActivityLog.objects.filter(fraud_checked=False) self.log_info(f"Найдено {user_logs.count()} логов активности для анализа.") return user_logs except Exception as e: @@ -45,9 +46,7 @@ class ReservationChecker: def fetch_reservations(self): try: self.log_info("Начинается извлечение бронирований.") - reservations = Reservation.objects.filter( - Q(check_in__lte=self.end_time) & Q(check_out__gte=self.start_time) - ) + reservations = Reservation.objects.filter(fraud_checked=False) self.log_info(f"Найдено {reservations.count()} бронирований для анализа.") return reservations except Exception as e: @@ -127,7 +126,7 @@ class ReservationChecker: self.log_info(f"Запуск проверки с {self.start_time} по {self.end_time}.") try: self.find_violations() - self.save_violations() + #self.save_violations() except Exception as e: self.log_error(f"Ошибка при выполнении проверки: {e}") self.log_info("Проверка завершена.") diff --git a/antifroud/migrations/0007_remove_roomdiscrepancy_fraud_checked.py b/antifroud/migrations/0007_remove_roomdiscrepancy_fraud_checked.py new file mode 100644 index 00000000..db4f7a53 --- /dev/null +++ b/antifroud/migrations/0007_remove_roomdiscrepancy_fraud_checked.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.4 on 2025-02-01 09:48 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('antifroud', '0006_alter_roomdiscrepancy_fraud_checked_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='roomdiscrepancy', + name='fraud_checked', + ), + ] diff --git a/antifroud/models.py b/antifroud/models.py index f4c98ed4..17d0cc6d 100644 --- a/antifroud/models.py +++ b/antifroud/models.py @@ -115,7 +115,6 @@ class RoomDiscrepancy(models.Model): verbose_name="Тип несоответствия" ) created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания") - fraud_checked = models.BooleanField(default=False, verbose_name="Проверено на несоответствия", db_index=True) def __str__(self): return f"{self.hotel.name} - Room {self.room_number}: {self.discrepancy_type}" diff --git a/hotels/migrations/0004_reservation_fraud_checked.py b/hotels/migrations/0004_reservation_fraud_checked.py new file mode 100644 index 00000000..cddb349b --- /dev/null +++ b/hotels/migrations/0004_reservation_fraud_checked.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.4 on 2025-02-01 09:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('hotels', '0003_rename_external_id_hotel_external_id_pms_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='reservation', + name='fraud_checked', + field=models.BooleanField(db_index=True, default=False, verbose_name='Проверено на несоответствия'), + ), + ] diff --git a/hotels/models.py b/hotels/models.py index d2d9c9d6..1bf8e3b4 100644 --- a/hotels/models.py +++ b/hotels/models.py @@ -116,6 +116,7 @@ class Reservation(models.Model): status = models.CharField(max_length=50, verbose_name="Статус") price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name="Цена") discount = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name="Скидка") + fraud_checked = models.BooleanField(default=False, verbose_name="Проверено на несоответствия", db_index=True) def clean(self): if self.check_out and self.check_in and self.check_out <= self.check_in: