4.23.1: Исправлен сброс дневных баллов в 0:00

This commit is contained in:
poignatov
2026-02-06 14:48:39 +03:00
parent 6e9e2db23e
commit a76d1d40cb
3 changed files with 36 additions and 6 deletions

View File

@@ -3068,6 +3068,20 @@ func (a *App) getCurrentWeekScores(userID int) (map[int]float64, error) {
// getTodayScores получает сумму score всех нод, созданных сегодня для конкретного пользователя
// Возвращает map[project_id]today_score для сегодняшнего дня
func (a *App) getTodayScores(userID int) (map[int]float64, error) {
// Получаем часовой пояс из переменной окружения (по умолчанию UTC)
timezoneStr := getEnv("TIMEZONE", "UTC")
loc, err := time.LoadLocation(timezoneStr)
if err != nil {
log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err)
loc = time.UTC
timezoneStr = "UTC"
}
// Вычисляем текущую дату в нужном часовом поясе
now := time.Now().In(loc)
todayStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, loc)
todayEnd := todayStart.Add(24 * time.Hour)
query := `
SELECT
n.project_id,
@@ -3078,11 +3092,12 @@ func (a *App) getTodayScores(userID int) (map[int]float64, error) {
p.deleted = FALSE
AND p.user_id = $1
AND n.user_id = $1
AND DATE(n.created_date) = CURRENT_DATE
AND n.created_date >= $2
AND n.created_date < $3
GROUP BY n.project_id
`
rows, err := a.DB.Query(query, userID)
rows, err := a.DB.Query(query, userID, todayStart, todayEnd)
if err != nil {
log.Printf("Error querying today scores: %v", err)
return nil, fmt.Errorf("error querying today scores: %w", err)
@@ -3106,6 +3121,20 @@ func (a *App) getTodayScores(userID int) (map[int]float64, error) {
// getTodayScoresAllUsers получает сумму score всех нод, созданных сегодня для всех пользователей
// Возвращает map[project_id]today_score для сегодняшнего дня
func (a *App) getTodayScoresAllUsers() (map[int]float64, error) {
// Получаем часовой пояс из переменной окружения (по умолчанию UTC)
timezoneStr := getEnv("TIMEZONE", "UTC")
loc, err := time.LoadLocation(timezoneStr)
if err != nil {
log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err)
loc = time.UTC
timezoneStr = "UTC"
}
// Вычисляем текущую дату в нужном часовом поясе
now := time.Now().In(loc)
todayStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, loc)
todayEnd := todayStart.Add(24 * time.Hour)
query := `
SELECT
n.project_id,
@@ -3114,11 +3143,12 @@ func (a *App) getTodayScoresAllUsers() (map[int]float64, error) {
JOIN projects p ON n.project_id = p.id
WHERE
p.deleted = FALSE
AND DATE(n.created_date) = CURRENT_DATE
AND n.created_date >= $1
AND n.created_date < $2
GROUP BY n.project_id
`
rows, err := a.DB.Query(query)
rows, err := a.DB.Query(query, todayStart, todayEnd)
if err != nil {
log.Printf("Error querying today scores for all users: %v", err)
return nil, fmt.Errorf("error querying today scores for all users: %w", err)