Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-06-18 16:15:17 +03:00
parent d1f1e5a4f4
commit 9f4ed539ff
3 changed files with 20 additions and 24 deletions

View File

@@ -591,9 +591,10 @@ DO UPDATE SET dim_id = EXCLUDED.dim_id, updated_at = EXCLUDED.updated_at
if err := rows.Scan(&colorCode, &dim1Code, &dim3Code); err != nil {
return nil, err
}
// Resolve to PG dim ids. For this installation we align with PG's authoritative mmitem_dim model:
// - dim1 corresponds to mmitem_dim.val1 (typically Color).
// - dim3 corresponds to mmitem_dim.val2 (typically Size).
// Resolve to PG dim ids. For this installation we align with mmitem_dim key:
// - dim1 = color
// - dim3 = itemdim3 (optional)
// Size (ItemDim1Code) is not part of the key here.
d1 := int64(0)
if id, ok := resolveDimvalFromToken(pgTx, "dimval1", colorCode); ok {
d1 = id
@@ -609,11 +610,8 @@ DO UPDATE SET dim_id = EXCLUDED.dim_id, updated_at = EXCLUDED.updated_at
continue
}
var d3 sql.NullInt64
// dim3 corresponds to mmitem_dim.val2 (usually ItemDim1Code).
if id, ok := resolveDimvalFromToken(pgTx, "dimval1", dim1Code); ok {
d3 = sql.NullInt64{Int64: id, Valid: true}
resolvedDim3++
} else if id, ok := resolveDimvalFromToken(pgTx, "dimval1", dim3Code); ok {
// dim3 corresponds to mmitem_dim.val3 (ItemDim3Code).
if id, ok := resolveDimvalFromToken(pgTx, "dimval1", dim3Code); ok {
d3 = sql.NullInt64{Int64: id, Valid: true}
resolvedDim3++
}
@@ -720,15 +718,14 @@ WHERE mmitem_id = $1
if !v1.Valid || v1.Int64 <= 0 {
continue
}
// Variant key in this installation: (val1=color, val3=itemdim3_if_any). Ignore val2 (size).
d1 := v1.Int64
_ = mmdimID
_ = v2
var d3 sql.NullInt64
// In production data we've observed the variant key as (val1, val2). val3 may exist but is not
// used as the second axis for pricing/campaign matching in this app.
_ = mmdimID
_ = v3
if v2.Valid && v2.Int64 > 0 {
d3 = sql.NullInt64{Int64: v2.Int64, Valid: true}
if v3.Valid && v3.Int64 > 0 {
d3 = sql.NullInt64{Int64: v3.Int64, Valid: true}
}
key := fmt.Sprintf("%d|%d", d1, func() int64 {

View File

@@ -772,14 +772,13 @@ WHERE mmitem_id = ANY($1::bigint[])
if !v1.Valid || v1.Int64 <= 0 {
continue
}
// Variant key in this installation: (val1=color, val3=itemdim3_if_any). Ignore val2 (size).
d1 := v1.Int64
d3k := int64(0)
// Variant key in this app is (val1, val2). val3 may exist but is not the second axis for matching.
_ = mmdimID
_ = v3
if v2.Valid && v2.Int64 > 0 {
d3k = v2.Int64
_ = v2
d3k := int64(0)
if v3.Valid && v3.Int64 > 0 {
d3k = v3.Int64
}
code := strings.TrimSpace(itemToCode[itemID])
@@ -886,7 +885,7 @@ ORDER BY dim_id, updated_at DESC;
}
// Map Nebim tokens to PG integer ids (dimval1 namespace).
// This app uses key: dim1=<color>, dim3=<size> to match mmitem_dim (val1,val2).
// This app uses key: dim1=<color>, dim3=<itemdim3> to match mmitem_dim (val1,val3).
d1 := int64(0)
if id, ok := resolveDimID("dimval1", colorCode); ok {
d1 = id
@@ -895,7 +894,7 @@ ORDER BY dim_id, updated_at DESC;
continue
}
d3k := int64(0)
if id, ok := resolveDimID("dimval1", dim1Code); ok {
if id, ok := resolveDimID("dimval1", dim3Code); ok {
d3k = id
}
key := fmt.Sprintf("%d|%d|%d", itemID, d1, d3k)