4.6.1: Медиана из 4 недель вместо 12
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m22s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m22s
This commit is contained in:
@@ -4591,7 +4591,7 @@ func (a *App) setupWeeklyGoals() error {
|
||||
EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER AS c_week
|
||||
),
|
||||
goal_metrics AS (
|
||||
-- Считаем медиану на основе данных за 3 месяца (12 недель), исключая текущую неделю
|
||||
-- Считаем медиану на основе данных за последние 4 недели, исключая текущую неделю
|
||||
SELECT
|
||||
project_id,
|
||||
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score
|
||||
@@ -4611,7 +4611,7 @@ func (a *App) setupWeeklyGoals() error {
|
||||
OR (report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER
|
||||
AND report_week < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER)
|
||||
) sub
|
||||
WHERE rn <= 12 -- Берем историю за последние 12 недель (3 месяца), исключая текущую неделю
|
||||
WHERE rn <= 4 -- Берем историю за последние 4 недели, исключая текущую неделю
|
||||
GROUP BY project_id
|
||||
)
|
||||
INSERT INTO weekly_goals (
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
-- Migration: Revert median calculation back to 12 weeks
|
||||
-- Date: 2026-02-02
|
||||
--
|
||||
-- This migration reverts projects_median_mv back to using 12 weeks.
|
||||
|
||||
DROP MATERIALIZED VIEW IF EXISTS projects_median_mv;
|
||||
|
||||
CREATE MATERIALIZED VIEW projects_median_mv AS
|
||||
SELECT
|
||||
p.id AS project_id,
|
||||
p.user_id,
|
||||
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score
|
||||
FROM (
|
||||
SELECT
|
||||
project_id,
|
||||
normalized_total_score,
|
||||
report_year,
|
||||
report_week,
|
||||
ROW_NUMBER() OVER (PARTITION BY project_id ORDER BY report_year DESC, report_week DESC) as rn
|
||||
FROM weekly_report_mv
|
||||
WHERE
|
||||
(report_year < EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER)
|
||||
OR (report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER
|
||||
AND report_week < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER)
|
||||
) sub
|
||||
JOIN projects p ON p.id = sub.project_id
|
||||
WHERE rn <= 12 AND p.deleted = FALSE
|
||||
GROUP BY p.id, p.user_id
|
||||
WITH DATA;
|
||||
|
||||
CREATE INDEX idx_projects_median_mv_project_id ON projects_median_mv(project_id);
|
||||
CREATE INDEX idx_projects_median_mv_user_id ON projects_median_mv(user_id);
|
||||
|
||||
COMMENT ON MATERIALIZED VIEW projects_median_mv IS 'Materialized view calculating median score for each project based on last 12 weeks of historical data. Includes user_id for multi-tenant support.';
|
||||
@@ -0,0 +1,35 @@
|
||||
-- Migration: Change median calculation from 12 weeks to 4 weeks
|
||||
-- Date: 2026-02-02
|
||||
--
|
||||
-- This migration updates projects_median_mv to calculate median based on
|
||||
-- the last 4 weeks instead of 12 weeks.
|
||||
|
||||
DROP MATERIALIZED VIEW IF EXISTS projects_median_mv;
|
||||
|
||||
CREATE MATERIALIZED VIEW projects_median_mv AS
|
||||
SELECT
|
||||
p.id AS project_id,
|
||||
p.user_id,
|
||||
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score
|
||||
FROM (
|
||||
SELECT
|
||||
project_id,
|
||||
normalized_total_score,
|
||||
report_year,
|
||||
report_week,
|
||||
ROW_NUMBER() OVER (PARTITION BY project_id ORDER BY report_year DESC, report_week DESC) as rn
|
||||
FROM weekly_report_mv
|
||||
WHERE
|
||||
(report_year < EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER)
|
||||
OR (report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER
|
||||
AND report_week < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER)
|
||||
) sub
|
||||
JOIN projects p ON p.id = sub.project_id
|
||||
WHERE rn <= 4 AND p.deleted = FALSE
|
||||
GROUP BY p.id, p.user_id
|
||||
WITH DATA;
|
||||
|
||||
CREATE INDEX idx_projects_median_mv_project_id ON projects_median_mv(project_id);
|
||||
CREATE INDEX idx_projects_median_mv_user_id ON projects_median_mv(user_id);
|
||||
|
||||
COMMENT ON MATERIALIZED VIEW projects_median_mv IS 'Materialized view calculating median score for each project based on last 4 weeks of historical data. Includes user_id for multi-tenant support.';
|
||||
Reference in New Issue
Block a user