You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

18 lines
1.8 KiB

5 days ago
# 看板按阶段展示名分组(不看状态)
商机看板(board)的分列键从 `current_stage_id`(节点 id)改为「当前节点的展示名」——展示名 = `custom_node_name` 优先、空则带入 `opp_stage` 字典名。看板不再按状态过滤:`current_stage_id` 有值即上板(暂缓中/已关闭/已转项目只要阶段有值都上板,无阶段值不上板)。列顺序由视口阶段模板(`stageTemplateId` 参数,null → 当前用户所属部门绑定模板 → 全公司通用默认模板)的节点 `seq_no` 定,视口外展示名追加列末;同一模板版本内展示名唯一(发布校验),跨模板同名合并为一列。
## Considered Options
- **按节点 id 分组(原实现)**:`current_stage_id` 指向 `opportunity_stage_node` 行,是模板版本私有主键;同一字典值(如 `OPP_STAGE_02`)在多模板/多版本下有多个节点 id,看板会把同一业务阶段拆成多列——弃。
- **按 `stage_dict_code` 分组**:跨模板对同一字典值可设不同 `custom_node_name`,列头取谁无确定答案——弃。
- **按展示名分组(本决策)**:分组键 = 用户实际看到的名字,语义最直观;撞名合并是接受的代价。
## Consequences
- 看板列语义与状态轴(轴1)解耦,只认阶段轴(轴2);卡片需带 `oppStatus` 供前端渲染状态角标。
- `boardStageSummary` 返回完整有序列摘要(空列 `count=0` 也返回);空列是否渲染由前端决定。
- `boardCards` 寻址键从 `stageId`(Long) 改为 `stageName`(String),后端解析成「展示名相等的节点 id 集合」过滤。
- 阶段模板发布校验新增:同一模板版本内展示名唯一。
- D-15「看板列 = 在办商机(推进中)」作废。