diff --git a/server/internal/api/exports.go b/server/internal/api/exports.go index 4eae75b..29658ef 100644 --- a/server/internal/api/exports.go +++ b/server/internal/api/exports.go @@ -300,6 +300,34 @@ func (a *ExportsAPI) create(w http.ResponseWriter, r *http.Request) { filtered = deduped } } + // 易码通客户名称字段去重:若同时选择 order.merchant_name 与 merchant.name,仅保留 merchant.name + if ds == "ymt" { + hasOrderMerchant := false + hasMerchantName := false + for _, tf := range filtered { + if tf == "order.merchant_name" { + hasOrderMerchant = true + } + if tf == "merchant.name" { + hasMerchantName = true + } + } + if hasOrderMerchant && hasMerchantName { + deduped := make([]string, 0, len(filtered)) + removed := []string{} + for _, tf := range filtered { + if tf == "order.merchant_name" { + removed = append(removed, tf) + continue + } + deduped = append(deduped, tf) + } + if len(removed) > 0 { + logging.JSON("INFO", map[string]interface{}{"event": "fields_deduplicated_customer_name", "removed": removed, "reason": "易码通客户名称仅保留 merchant.name"}) + } + filtered = deduped + } + } labels := FieldLabels() // 相同列名(中文标签)去重:如果多个表的字段共享同一列名,优先保留主表字段 { diff --git a/server/internal/api/templates.go b/server/internal/api/templates.go index 5fccd99..a79ee2b 100644 --- a/server/internal/api/templates.go +++ b/server/internal/api/templates.go @@ -120,6 +120,12 @@ func (a *TemplatesAPI) listTemplates(w http.ResponseWriter, r *http.Request) { if !wl[tf] { continue } + // special dedupe: when both order.merchant_name and merchant.name exist, only count merchant.name + if ds == "ymt" && tf == "order.merchant_name" { + if _, ok := seen["merchant.name"]; ok { + continue + } + } if _, ok := seen[tf]; ok { continue }