# 04 — 看板按展示名分列(summary + cards 两端点) **What to build:** `boardStageSummary` 改为按「当前节点的展示名」分组,返回完整有序列摘要——空列 `count=0` 也返回,列顺序由视口阶段模板定(`stageTemplateId` 纯视口选择器,null → 当前用户所属部门绑定模板 → 全公司通用默认模板),视口外展示名按各自模板 `seq_no` 追加列末,跨模板同名合并为一列。`boardCards` 入参从 `stageId`(Long) 改为 `stageName`(String),后端解析成「展示名相等的节点 id 集合」取卡片,卡片新增 `oppStatus`。 **Blocked by:** 02、03 **Status:** ready-for-agent - [ ] `boardStageSummary` 返回 `[{stageName, count, totalAmount}]`,列键为展示名字符串,不再返回节点 id - [ ] 空列以 `count=0` 出现在返回中,按视口顺序排列 - [ ] 视口外展示名追加在列末,顺序确定(按各自模板 seq_no,撞名取最靠前位置) - [ ] `stageTemplateId` 只影响列顺序,不过滤哪些商机上板 - [ ] `boardCards` 入参改为 `stageName`,后端解析成节点 id 集合过滤,跨模板同名一次取全 - [ ] 卡片返回带 `oppStatus` - [ ] 覆盖两个端点的单测