/
tsps
/
core
Обзор
Документация
Войти
/
tsps
/
core
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
app/services/dashboard.py
39 строк
1 KB
Василий Петров
В дашборд добавлена загрузка за вчера
16 мар 2026, 20:47
16 мар 2026, 20:47
5f1e862
Код
Авторство
О чём код?
from datetime import datetime, timedelta, timezone from typing import Dict, Optional from sqlalchemy.orm import Session from app.models.document import Document def get_dashboard_stats(db: Session, judge_id: Optional[int] = None) -> Dict[str, int]: """ Подсчитывает статистику документов для дашборда. Аргументы: db (Session): Сессия базы данных. judge_id (Optional[int]): ID судьи для фильтрации. Если None, считается общее количество. Возвращает: dict: { "documents_last_day": int, — за последние 24 часа "documents_last_month": int — за последние 30 дней } """ now = datetime.now(timezone.utc) # Границы временных интервалов one_day_ago = now - timedelta(days=1) one_month_ago = now - timedelta(days=30) # Базовый запрос с фильтром по судье (если передан) base_query = db.query(Document) if judge_id is not None: base_query = base_query.filter(Document.judge_id == judge_id) count_last_day = base_query.filter(Document.created_at >= one_day_ago).count() count_last_month = base_query.filter(Document.created_at >= one_month_ago).count() return { "documents_last_day": count_last_day, "documents_last_month": count_last_month, }