From be7ccdc4669602e3619361ba57efde40c4ba703d Mon Sep 17 00:00:00 2001 From: M_Kececi Date: Wed, 24 Jun 2026 22:11:36 +0300 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- svc/queries/pricing_calc_infra.go | 81 +++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/svc/queries/pricing_calc_infra.go b/svc/queries/pricing_calc_infra.go index 7e86ee3..3a615a4 100644 --- a/svc/queries/pricing_calc_infra.go +++ b/svc/queries/pricing_calc_infra.go @@ -133,6 +133,12 @@ CREATE TABLE IF NOT EXISTS mk_dim_token_map ( } } + // One-time bootstrap for mk_dim_token_map from authoritative PG data, if empty. + // This avoids heuristics (dfblob filename inference) polluting the token map on first deploy. + if err := seedDimTokenMapFromMmitemDim(pg); err != nil { + return err + } + if err := seedPricingTargetMapRows(pg, "mk_price_target_map_pg", "sdprcgrp_id"); err != nil { return err } @@ -155,6 +161,81 @@ WHERE is_active = TRUE return nil } +func seedDimTokenMapFromMmitemDim(pg *sql.DB) error { + // Seed dimval1 only if it's currently empty. + var hasDimval1 int + _ = pg.QueryRow(`SELECT 1 FROM mk_dim_token_map WHERE dim_column='dimval1' LIMIT 1`).Scan(&hasDimval1) + if hasDimval1 == 0 { + // Prefer the most-used dim_id for a given code if duplicates exist, to keep the mapping stable. + if _, err := pg.Exec(` +WITH usage AS ( + SELECT val1 AS dim_id, COUNT(*) AS cnt + FROM mmitem_dim + WHERE val1 IS NOT NULL + GROUP BY val1 +), +candidates AS ( + SELECT UPPER(BTRIM(d.code)) AS token, d.id AS dim_id, u.cnt + FROM usage u + JOIN dfgrp d ON d.id = u.dim_id + WHERE d.code IS NOT NULL + AND BTRIM(d.code) <> '' +), +picked AS ( + SELECT DISTINCT ON (token) token, dim_id + FROM candidates + ORDER BY token, cnt DESC, dim_id +) +INSERT INTO mk_dim_token_map (dim_column, token, dim_id, updated_at) +SELECT 'dimval1', token, dim_id, now() +FROM picked +ON CONFLICT (dim_column, token) +DO UPDATE SET dim_id = EXCLUDED.dim_id, updated_at = EXCLUDED.updated_at +`); err != nil { + return err + } + } + + // Seed dimval3 only if it's currently empty and there is at least one val3 in mmitem_dim. + var hasDimval3 int + _ = pg.QueryRow(`SELECT 1 FROM mk_dim_token_map WHERE dim_column='dimval3' LIMIT 1`).Scan(&hasDimval3) + if hasDimval3 == 0 { + var anyVal3 int + _ = pg.QueryRow(`SELECT 1 FROM mmitem_dim WHERE val3 IS NOT NULL LIMIT 1`).Scan(&anyVal3) + if anyVal3 != 0 { + if _, err := pg.Exec(` +WITH usage AS ( + SELECT val3 AS dim_id, COUNT(*) AS cnt + FROM mmitem_dim + WHERE val3 IS NOT NULL + GROUP BY val3 +), +candidates AS ( + SELECT UPPER(BTRIM(d.code)) AS token, d.id AS dim_id, u.cnt + FROM usage u + JOIN dfgrp d ON d.id = u.dim_id + WHERE d.code IS NOT NULL + AND BTRIM(d.code) <> '' +), +picked AS ( + SELECT DISTINCT ON (token) token, dim_id + FROM candidates + ORDER BY token, cnt DESC, dim_id +) +INSERT INTO mk_dim_token_map (dim_column, token, dim_id, updated_at) +SELECT 'dimval3', token, dim_id, now() +FROM picked +ON CONFLICT (dim_column, token) +DO UPDATE SET dim_id = EXCLUDED.dim_id, updated_at = EXCLUDED.updated_at +`); err != nil { + return err + } + } + } + + return nil +} + func seedPricingTargetMapRows(pg *sql.DB, tableName string, valueColumn string) error { currencies := []string{"TRY", "USD", "EUR"} for _, currency := range currencies {