add: модели и миграции для счетиков

This commit is contained in:
2026-01-21 01:07:50 +03:00
parent e21920262d
commit ea221dcfd2
5 changed files with 134 additions and 1 deletions

View File

@@ -1,3 +1,67 @@
from django.db import models
from django.utils import timezone
# Create your models here.
class DailyStat(models.Model):
"""
Модель для хранения агрегированной статистики использования за день.
"""
date = models.DateField(
verbose_name="Дата",
unique=True,
default=timezone.now
)
# Основные метрики
index_views = models.PositiveIntegerField(
verbose_name="Просмотры главной",
default=0
)
process_requests = models.PositiveIntegerField(
verbose_name="Запросы на обработку",
default=0
)
copy_count = models.PositiveIntegerField(
verbose_name="Копирований в буфер",
default=0
)
# Объемы
chars_in = models.BigIntegerField(
verbose_name="Символов на входе",
default=0
)
chars_out = models.BigIntegerField(
verbose_name="Символов на выходе",
default=0
)
chars_copied = models.BigIntegerField(
verbose_name="Символов скопировано",
default=0
)
# Производительность
total_processing_time_ms = models.FloatField(
verbose_name="Суммарное время обработки (мс)",
default=0.0
)
# Статистика по использованным настройкам
settings_stats = models.JSONField(
verbose_name="Статистика настроек",
default=dict
)
class Meta:
verbose_name = "Дневная статистика"
verbose_name_plural = "Дневная статистика"
ordering = ['-date']
def __str__(self):
return f"Статистика за {self.date.strftime('%Y-%m-%d')}"
@property
def avg_processing_time_ms(self):
"""Среднее время обработки одного запроса."""
if self.process_requests == 0:
return 0.0
return self.total_processing_time_ms / self.process_requests