5.2.0: min_goal по среднему вместо медианы
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m27s

This commit is contained in:
poignatov
2026-02-22 14:26:18 +03:00
parent 41f8df36a9
commit a5e3396017
3 changed files with 10 additions and 10 deletions

View File

@@ -1 +1 @@
5.1.3
5.2.0

View File

@@ -5234,10 +5234,10 @@ func (a *App) setupWeeklyGoals() error {
EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER AS c_week
),
goal_metrics AS (
-- Считаем медиану на основе данных за последние 4 недели, исключая текущую неделю
-- Считаем среднее (average) на основе данных за последние 4 недели, исключая текущую неделю
SELECT
project_id,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score
AVG(normalized_total_score) AS avg_score
FROM (
SELECT
project_id,
@@ -5270,14 +5270,14 @@ func (a *App) setupWeeklyGoals() error {
p.id,
ci.c_year,
ci.c_week,
-- Если нет данных (gm.median_score IS NULL), используем 0 (значение по умолчанию)
COALESCE(gm.median_score, 0) AS min_goal_score,
-- Если нет данных (gm.avg_score IS NULL), используем 0 (значение по умолчанию)
COALESCE(gm.avg_score, 0) AS min_goal_score,
-- Логика max_goal_score в зависимости от приоритета (только если есть данные)
CASE
WHEN gm.median_score IS NULL THEN NULL
WHEN p.priority = 1 THEN gm.median_score * 2.0
WHEN p.priority = 2 THEN gm.median_score * 1.7
ELSE gm.median_score * 1.4
WHEN gm.avg_score IS NULL THEN NULL
WHEN p.priority = 1 THEN gm.avg_score * 2.0
WHEN p.priority = 2 THEN gm.avg_score * 1.7
ELSE gm.avg_score * 1.4
END AS max_goal_score,
p.priority,
p.user_id

View File

@@ -1,6 +1,6 @@
{
"name": "play-life-web",
"version": "5.1.3",
"version": "5.2.0",
"type": "module",
"scripts": {
"dev": "vite",