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

View File

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