# 【前端】小程序产品对比页: 去掉「简介」行

> **类型**: 前端渲染修复(notice,后端无改动)
> **服务**: hl-product-service-v2(`introduction` 早已抹空,无需改后端)
> **日期**: 2026-05-28
> **影响范围**: 小程序「线路对比 / 产品对比页」核心对比区(packages/product/compare)
> **归属**: 前端(mmg)。后端不建工单,本条仅同步现状 + 修法。

---

## ⚠️ 问题

产品对比页「核心对比」区有一行 **「简介」**,但简介字段(`introduction`)已废弃,后端 `/mp/product/compare` 早已不返该字段 → 这一行对所有产品都显示 `—`(空横线),纯属占位噪音。

**用户要求:简介已经没用了,对比页也不要再显示这一行。**

---

## 一、根因

- 后端早在工单 **#2943 / PR #2944** 就把 `/mp/product/compare` 的 `subtitle` / `introduction` / `crowdBenefit` 统一抹空返 `null`(对比页只保留核心规格差异)。已合 dev 并部署测试服。
- 实测测试服 `POST /mp/product/compare?lineId=2043595259778166786`:3 个产品的 `introduction` 全为 `null`(`subtitle` / `crowdBenefit` 同样为 `null`),后端侧完全正确。
- 但前端对比页 `_buildCoreSection` 里**硬编码**了「简介」行,且**不像「人群优惠」区那样过滤全空行**,所以 `introduction=null` 时这一行依旧渲染成一排 `—`。

### 两区对比(为什么人群优惠没这个毛病)

| 区块 | 构建方法 | 是否过滤空行 | 结果 |
|------|----------|--------------|------|
| 人群优惠 | `_buildCrowdSection` | ✅ 有 `.filter(row => row.values.some(v => v !== '—'))`,全空整段返 null | `crowdBenefit=null` 时整段自动隐藏,无残留 |
| 核心对比 | `_buildCoreSection` | ❌ 行写死,不过滤 | 「简介」行写死 → `introduction=null` 时永远显示一排 `—` |

---

## 二、前端修法(后端零改动)

删掉 `packages/product/compare/compare.js` 中 `_buildCoreSection` 的「简介」行(约第 140 行):

```js
// 删除这一行
{ label: '简介', values: list.map(p => p.introduction || '—'), tall: true },
```

删除后核心对比区保留:天数 / 类型 / 起步价 / 付款方式 / 订金,不再有空的「简介」行。

> 备选(更通用):给 `_buildCoreSection` 的 rows 也套一层和人群优惠区一样的"全空行过滤",这样后续任何被后端抹空的字段都会自动隐藏。但当前只有「简介」一行受影响,直接删该行最省事。

---

## 三、相关接口(均已上线,无变更)

| 接口 | 方法 | 路径 | 说明 |
|------|------|------|------|
| 产品对比 | POST | `/mp/product/compare?lineId={lineId}` | `subtitle` / `introduction` / `crowdBenefit` 自 #2943 起恒为 `null`,前端不应再展示这些区块 |
