neo-cmp-cli 1.13.13 → 1.13.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +1 -1
  2. package/dist/neo/neoEnvManager.js +1 -1
  3. package/dist/neo/neoLogin.js +1 -1
  4. package/dist/neo/neoRequire.js +1 -1
  5. package/dist/package.json.js +1 -1
  6. package/docs//351/200/232/347/224/250/344/273/243/347/220/206/346/216/245/345/217/243/forward.zip +0 -0
  7. package/docs//351/200/232/347/224/250/344/273/243/347/220/206/346/216/245/345/217/243//350/207/252/345/256/232/344/271/211API:/351/200/232/347/224/250/344/273/243/347/220/206/346/216/245/345/217/243/344/275/277/347/224/250/350/257/264/346/230/216.md +13 -0
  8. package/package.json +1 -1
  9. package/template/antd-custom-cmp-template/package.json +1 -1
  10. package/template/asset-manage-template/package.json +1 -1
  11. package/template/echarts-custom-cmp-template/package.json +1 -1
  12. package/template/empty-custom-cmp-template/package.json +1 -1
  13. package/template/map-custom-cmp-template/package.json +1 -1
  14. package/template/neo-bi-cmps/package.json +1 -1
  15. package/template/neo-bi-cmps/src/components/aiCommitDrawer__c/index.tsx +17 -10
  16. package/template/neo-bi-cmps/src/components/aiCommitDrawer__c/model.ts +47 -6
  17. package/template/neo-bi-cmps/src/components/filterBar__c/index.tsx +21 -7
  18. package/template/neo-bi-cmps/src/components/forecastChart__c/index.tsx +6 -9
  19. package/template/neo-bi-cmps/src/components/forecastChart__c/model.ts +2 -1
  20. package/template/neo-bi-cmps/src/components/forecastGrid__c/model.ts +32 -4
  21. package/template/neo-bi-cmps/src/components/gapCloser__c/index.tsx +7 -2
  22. package/template/neo-bi-cmps/src/components/gapCloser__c/model.ts +6 -3
  23. package/template/neo-bi-cmps/src/components/kpiCards__c/model.ts +18 -3
  24. package/template/neo-bi-cmps/src/components/oppList__c/index.tsx +70 -13
  25. package/template/neo-bi-cmps/src/components/oppList__c/model.ts +50 -4
  26. package/template/neo-bi-cmps/src/components/pipelineFunnel__c/index.tsx +3 -1
  27. package/template/neo-bi-cmps/src/components/pipelineFunnel__c/model.ts +28 -4
  28. package/template/neo-bi-cmps/src/components/stageSwitch__c/index.tsx +21 -6
  29. package/template/neo-bi-cmps/src/components/stageSwitch__c/model.ts +60 -5
  30. package/template/neo-bi-cmps/src/components/stageTimeChart__c/model.ts +26 -4
  31. package/template/neo-custom-cmp-template/package.json +1 -1
  32. package/template/neo-h5-cmps/package.json +1 -1
  33. package/template/neo-order-cmps/package.json +1 -1
  34. package/template/neo-web-entity-grid/package.json +1 -1
  35. package/template/neo-web-form/package.json +1 -1
  36. package/template/neo-web-form/src/components/batchAddTable__c/index.tsx +17 -17
  37. package/template/react-custom-cmp-template/package.json +1 -1
  38. package/template/react-ts-custom-cmp-template/package.json +1 -1
  39. package/template/vue2-custom-cmp-template/package.json +1 -1
  40. package/template/neo-bi-cmps/docs/gartner-pipeline-apis.md +0 -279
  41. package/template/neo-bi-cmps/docs/gartner-pipeline-prd.md +0 -389
  42. package/template/neo-bi-cmps/docs/neo-backend-dev/SKILL.md +0 -188
  43. package/template/neo-bi-cmps/docs/neo-backend-dev/references/01-Trigger/345/274/200/345/217/221.md +0 -183
  44. package/template/neo-bi-cmps/docs/neo-backend-dev/references/02-/350/207/252/345/256/232/344/271/211API/345/274/200/345/217/221.md +0 -196
  45. package/template/neo-bi-cmps/docs/neo-backend-dev/references/03-SDK/345/267/245/345/205/267/347/261/273/346/216/245/345/217/243.md +0 -346
  46. package/template/neo-bi-cmps/docs/neo-backend-dev/references/04-/350/256/241/345/210/222/344/275/234/344/270/232/345/274/200/345/217/221.md +0 -188
  47. package/template/neo-bi-cmps/docs/neo-backend-dev/references/05-/351/241/265/351/235/242/345/274/200/345/217/221.md +0 -293
  48. package/template/neo-bi-cmps/docs/neo-backend-dev/references/06-/346/265/201/347/250/213/346/211/251/345/261/225/345/274/200/345/217/221.md +0 -175
  49. package/template/neo-bi-cmps/docs/neo-backend-dev/references/PaaS/345/271/263/345/217/260/345/274/200/345/217/221/346/211/213/345/206/214/350/247/243/350/257/273.md +0 -313
  50. package/template/neo-bi-cmps/docs/neo-backend-dev/references/auth-config.md +0 -77
  51. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/deploy_server_script.py +0 -118
  52. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/download_server_script.py +0 -74
  53. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/gen_entity_desc.py +0 -69
  54. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/gen_entitylist.py +0 -87
  55. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/query_crm.py +0 -65
  56. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/uninstall_server_script.py +0 -48
  57. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/update_model_jar.py +0 -49
  58. package/template/neo-bi-cmps/docs/neo-frontend-dev/SKILL.md +0 -138
  59. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/auth-config.md +0 -77
  60. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/component-dev.md +0 -205
  61. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/entityTable-example.md +0 -167
  62. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/templates.md +0 -38
  63. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/gen_entity_desc.py +0 -69
  64. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/gen_entitylist.py +0 -87
  65. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/query_crm.py +0 -65
  66. package/template/neo-bi-cmps/docs/prototype-pipeline-forecasting.html +0 -2453
  67. package/template/neo-bi-cmps/docs//350/264/246/345/217/267/347/233/270/345/205/263/344/277/241/346/201/257.md +0 -10
@@ -1,279 +0,0 @@
1
- > **更新时间**:2026-04-01
2
- > **模块**:商机Pipeline管理
3
- > **状态**:初步设计
4
- > **原型参考**:`docs/htmls/forecasting-prototype.html` — Pipeline Tab
5
-
6
- ---
7
-
8
- # 商机Pipeline管理 — 接口设计文档
9
-
10
- ---
11
-
12
- # 一、自定义API相关对象和查询接口
13
-
14
- 本章列出Pipeline功能涉及的核心数据实体及其关键字段,供接口设计和数据建模参考。
15
-
16
- ## 1.1 商机阶段信息
17
-
18
- Open API:根据商机业务类型查询商机阶段
19
-
20
- 接口URL:`/rest/neobi/v2.0/query/queryByCustomSQL`
21
-
22
- | 字段 | 类型 | 说明 |
23
- | --------- | ------ | ------------------------ |
24
- | id | String | 商机阶段ID |
25
- | stageName | String | 商机阶段名称 |
26
- | order | Number | 序号 |
27
- | status | String | 状态(进行中/输单/赢单) |
28
-
29
- ## 1.2 商机信息
30
-
31
- Open API:获取销售机会信息
32
-
33
- 接口URL:`/rest/data/v2.0/xobjects/opportunity/{id}`
34
-
35
- | 字段 | 类型 | 说明 |
36
- | ---------------- | --------------- | ----------------------------------------------------- |
37
- | opportunityId | String | 商机ID |
38
- | opportunityName | String | 商机名称 |
39
- | accountName | String | 客户名称 |
40
- | amount | Number | 商机金额 |
41
- | closeDate | Date | 预计结单日期 |
42
- | stageId | String | 当前阶段ID |
43
- | stageName | String | 当前阶段名称 |
44
- | ownerUserId | String | 商机负责人用户ID |
45
- | ownerDeptId | String | 商机负责人所属部门ID |
46
- | businessType | String | 业务类型 |
47
- | lastActivityDate | DateTime | 最近活动时间 |
48
- | createdTime | DateTime | 商机创建时间 |
49
- | winRate | Number | (自定义字段)最终AI赢率(0-100) |
50
- | baseline | Number | (自定义字段)基线概率(0-100),基于历史同类商机统计 |
51
- | positiveFactors | Array\<Object\> | (自定义字段)正向因素列表,每项含description和impact |
52
- | negativeFactors | Array\<Object\> | (自定义字段)负向因素列表,每项含description和impact |
53
-
54
- ## 1.3 自定义实体数据查询
55
-
56
-
57
- ## 1.4 商机历史快照
58
-
59
- 使用BI提供的自定义SQL查询接口获取快照数据。
60
-
61
- > Open API:数据平台接口 — 自定义 SQL 查询
62
-
63
- > 接口URL:`/rest/neobi/v2.0/query/queryByCustomSQL`
64
-
65
- 商机历史快照接口示例
66
-
67
- select opportunity_1_opportunityName,
68
- opportunity_1_money
69
- from biCustomModel_397169_20260401104916618 limit 100
70
-
71
-
72
- ## 1.5 商机健康度评估信息
73
-
74
- > Open API:没有Open API,内部可调用业务接口,获取商机健康度结果接口
75
-
76
- > 接口URL:/rest/ai/v2.0/agent/apps/health_assessment/get_health_assessment_result
77
-
78
- | 字段 | 类型 | 说明 |
79
- | ---------------------------- | ------ | ------------------------------------------ |
80
- | opportunityId | String | 商机ID |
81
- | level | String | 评分等级:`High` / `Medium` / `Low` |
82
- | summary | String | AI生成的自然语言摘要,概述商机当前健康状态 |
83
- | dimensions | Object | 四维评分明细 |
84
- | dimensions.demand | String | 需求维度评级 |
85
- | dimensions.decisionChain | String | 决策链维度评级 |
86
- | dimensions.budgetProcurement | String | 预算和采购流程维度评级 |
87
- | dimensions.competition | String | 竞争维度评级 |
88
-
89
- ## 1.6 部门人员信息
90
-
91
- Open API:获取当前用户可见的人员列表
92
-
93
- 接口URL:待确认(平台标准接口)
94
-
95
- ## 1.7 权限内业务类型
96
-
97
- Open API:获取当前用户权限内的商机业务类型列表及系统默认值
98
-
99
- 接口URL:待确认
100
-
101
- | 字段 | 类型 | 说明 |
102
- | -------------------- | --------------- | ------------------------------------------- |
103
- | businessTypes | Array\<Object\> | 业务类型列表 |
104
- | businessTypes[].id | String | 业务类型ID |
105
- | businessTypes[].name | String | 业务类型名称 |
106
- | defaultBusiType | String | 系统默认业务类型ID(固定为defaultBusiType) |
107
-
108
- ## 1.8 提示词模板调用接口
109
-
110
- PromptTemplateResponse execute = ScriptAIPromptTemplateService.instance().execute(template);
111
- int code = execute.getCode();
112
- String errorMessage = execute.getErrorMsg();
113
-
114
- ## 1.9 查询BI视图数据
115
-
116
- Open API:按照筛选条件查询视图数据
117
-
118
- 接口URL:`/rest/neobi/v2.0/bestoractices/queryDataTask`
119
-
120
- ---
121
-
122
- # 二、聚合接口设计
123
-
124
- 基于Pipeline Tab各组件的数据需求,设计以下聚合接口。聚合接口在BFF层实现,内部调用第一章的单接口进行数据组装。
125
-
126
- ## 2.0 接口总览
127
-
128
- | 编号 | 聚合接口 | 触发时机 | 服务的组件 | 调用的单接口 |
129
- | ----- | -------------------- | -------------------------------- | ----------------------- | --------------------------- |
130
- | AGG-1 | 获取筛选项初始化数据 | 页面初始化(仅一次) | 全局筛选栏 | 部门架构接口 + 业务类型接口 |
131
- | AGG-2 | 获取BI视图与AI洞察 | 页面初始化 / 点击✨按钮 | BI视图图表 + AI分析弹窗 | 1.9 + 1.8 |
132
- | AGG-3 | 获取阶段切换区数据 | 页面初始化 / 筛选变更 | Stage Tabs | 1.1 + 1.2 + 1.4 |
133
- | AGG-4 | 获取商机列表数据 | 页面初始化 / 筛选变更 / 阶段切换 | 商机明细表格 | 1.2 + 1.5 + 1.6 |
134
-
135
- ## 2.1 AGG-1:获取筛选项初始化数据
136
-
137
- 页面初始化时调用一次,获取筛选栏所需的选项数据和默认值。
138
-
139
- **请求**:无入参,根据当前登录用户自动获取。
140
-
141
- **返回**:
142
-
143
- | 字段 | 类型 | 说明 |
144
- | --------------- | ------ | ------------------------------------------------------- |
145
- | currentUser | Object | 当前登录用户信息(userId, name) |
146
- | departments | Array | 当前用户可见的部门列表(含部门下人员) |
147
- | businessTypes | Array | 当前用户权限内的业务类型列表 |
148
- | defaultBusiType | String | 系统默认业务类型ID,用于筛选栏Business Type的默认选中值 |
149
-
150
- **处理流程**:
151
-
152
- 1. 调用1.7部门人员信息接口,获取当前用户可见的部门架构及人员列表
153
- 2. 调用1.8权限内业务类型接口,获取业务类型列表及系统默认值(defaultBusiType)
154
- 3. 获取当前登录用户信息(userId, name)
155
- 4. 组装返回
156
-
157
- ## 2.2 AGG-2:获取BI视图与AI洞察
158
-
159
- 本接口分为两部分,分步调用。
160
-
161
- ### 2.2.1 BI视图数据
162
-
163
- 页面初始化或筛选变更时调用,分别调用1.9查询两个BI看板的视图数据,以3个筛选项(结单日期、业务类型、所有人)作为入参。对于阶段平均停留时间视图,还需额外调用1.3查询各阶段的基准值和保底值。
164
-
165
- **BI看板ID**:
166
-
167
- | 看板 | BI看板ID |
168
- |------|---------|
169
- | 商机漏斗(Pipeline Funnel) | 4264464770007375 |
170
- | 平均停留时间(Avg. Time in Stage) | 4264466340118875 |
171
-
172
-
173
- **处理流程**:
174
-
175
- 1. **商机漏斗**:前端按当前筛选条件组装请求参数,调用1.9接口(viewId=4264464770007375),将返回的数据用于漏斗图渲染(各阶段金额、数量、转化率等)
176
- 2. **平均停留时间**:
177
- - 调用1.9接口(viewId=4264466340118875),获取各阶段的实际平均停留时间
178
- - 调用1.3自定义实体数据查询接口,查询自定义对象**Opportunity Stage Plan**(APIKey:customEntity105__c),根据当前商机业务类型opp type+阶段Stage Name,获取各阶段的Target(基准值Reference Advancing Duration)和Limit(保底值Longest Advancing Duration)
179
- - 前端将实际停留时间与Target/Limit合并渲染条形图
180
-
181
-
182
- ### 2.2.2 AI洞察分析
183
-
184
- 点击✨按钮时调用,将2.2.1已获取的BI视图数据作为上下文,调用1.8提示词模板接口生成AI洞察文本。
185
-
186
- **提示词模板**:API Key = `analyze_BI_insight__c`
187
-
188
- **模板入参**:
189
-
190
- | 参数 | 类型 | 说明 |
191
- |------|------|------|
192
- | Raw Data | String | BI看板数据(2.2.1返回的columns+rows)+ 基准值/保底值(仅平均停留时间看板需要附加) |
193
- | business_context | String | 背景说明,根据当前BI看板类型传入固定文案(见下方) |
194
-
195
- **business_context固定文案**:
196
-
197
- - **商机漏斗**:`This funnel visualizes the end-to-end sales conversion from each opportunity stage to closed-won, tracking opportunity count, sales amount and stage-by-stage conversion rate across sales stages, to identify pipeline bottlenecks and evaluate sales conversion efficiency.`
198
- - **平均停留时间**:`This bar chart displays the average time opportunities spend in each sales stage, measured as a percentage of the total sales cycle, to pinpoint process bottlenecks and optimize sales cycle efficiency.`
199
-
200
- **处理流程**:
201
-
202
- 1. 前端将2.2.1已获取的BI视图数据作为Data传入,避免重复查询;平均停留时间看板需同时附加1.3查询到的Target/Limit数据
203
- 2. 根据当前BI看板类型,传入对应的business_context固定文案
204
- 3. 调用1.8提示词模板接口(API Key: `analyze_BI_insight__c`)执行AI生成
205
- 4. 返回洞察文本,前端展示在AI Insight弹窗中
206
-
207
-
208
-
209
- ## 2.3 AGG-3:获取阶段切换区数据
210
-
211
- 筛选条件变更时调用,返回Stage Tabs阶段切换区组件的数据(各阶段汇总及变动信息)。
212
- |
213
-
214
- **处理流程**:
215
-
216
- 1. 调用1.1商机阶段信息接口,获取当前业务类型的阶段列表(含排序)
217
- 2. 调用1.2商机信息接口,按筛选条件(Close Date、Owner、Business Type)批量查询商机,按阶段分组汇总当前金额和数量
218
- 3. 调用1.4商机历史快照接口,查询changesSince基准日期的快照数据,按阶段分组汇总基准金额和基准数量
219
-
220
- **历史快照字段参数**:
221
-
222
- Dataset API Key:biCustomModel_397169_20260401104916618
223
-
224
- | Field | API Key |
225
- |-------|---------|
226
- | ID | id |
227
- | Amount | opportunity_1_money |
228
- | Owner department | opportunity_1_dimDepartEntity |
229
- | Type | opportunity_1_entityType |
230
- | Forecast Category | opportunity_1_forecastCategory |
231
- | Status | opportunity_1_status |
232
- | version | version |
233
- | Close Date | opportunity_1_closeDate |
234
- | Recent Activity Record Time | opportunity_1_recentActivityRecordTime |
235
- | ID | opportunity_1__id |
236
- | Opportunity | opportunity_1_id |
237
- | Account Name | opportunity_1_accountId |
238
- | Sales Stage | opportunity_1_saleStageId |
239
- | Opportunity Name | opportunity_1_opportunityName |
240
- | Forecast Category | opportunity_1_ForecastCategory__c |
241
- | Opportunity Owner | opportunity_1_ownerId |
242
- 4. 金额变动 = 当前阶段金额 − 基准快照阶段金额;数量变动 = 当前阶段数量 − 基准快照阶段数量
243
- 5. 判断变动方向(up/down/none)
244
- 6. 组装stageTabs数据返回
245
-
246
-
247
- ## 2.4 AGG-4:获取商机列表数据
248
-
249
- 阶段切换或筛选变更时调用,分两个阶段加载数据:列表首屏加载和Hover按需加载。
250
-
251
- ### 2.4.1 列表首屏加载
252
-
253
- **处理流程**:
254
-
255
- 1. 调用1.2商机信息接口,按筛选条件+阶段(默认选择第一个阶段)+排序(默认按照销售金额倒叙)+分页查询商机列表,获取所有列表展示字段
256
- 2. AI Score等级标签(level字段)可从商机对象直接获取,无需调用1.6,随列表一并返回
257
-
258
- ### 2.4.2 Hover按需加载
259
-
260
- 以下数据仅在用户鼠标hover时触发,按需调用,避免首屏加载过重。
261
-
262
- **变动详情(Amount / Close Date / Stage)**:
263
-
264
- - 触发时机:用户hover某条商机的变动箭头
265
- - 调用接口:1.5商机历史快照接口
266
- - 入参:opportunityId + changesSince基准日期
267
- - 处理:查询该商机在基准日期的快照,与当前实时数据逐字段(Amount/CloseDate/Stage)比对,用当前值-基准日期的值,计算变动方向、变动前后值
268
-
269
- - 变动时间:调用1.2接口,取商机上的3个时间字段,AmoutChanged、ClosedDateChanged、StageChanged
270
-
271
-
272
-
273
-
274
- **AI Score详情**:
275
-
276
- - 触发时机:用户hover某条商机的AI Score标签
277
- - 调用接口:1.6商机健康度评估信息接口
278
- - 入参:opportunityId
279
- - 返回:四维评分及AI摘要summary
@@ -1,389 +0,0 @@
1
- > **更新时间**:2026-03-31
2
- > **模块**:商机Pipeline管理
3
- > **状态**:初步设计
4
- > **原型参考**:`docs/htmls/forecasting-prototype.html` — Pipeline Tab
5
-
6
- ---
7
-
8
- # 商机Pipeline管理 — 产品需求文档
9
-
10
- ---
11
-
12
- # 引言:业务场景与价值
13
-
14
- 在B2B销售管理中,销售团队面临两个核心挑战:
15
-
16
- 1. **Pipeline管理缺乏全局视角**:商机散落在列表和详情页中,无法一屏回答"漏斗形态是否健康?哪些阶段在堆积?哪些商机在恶化?"
17
- 2. **Forecast预测依赖主观判断**:销售承诺(Commit)往往基于个人感觉而非数据,管理层难以评估预测的可信度,也缺乏工具来识别预测与实际之间的Gap并采取行动
18
-
19
- **Seller Workspace** 正是为解决这两个问题而设计的统一工作台,通过Pipeline和Forecast两个Tab覆盖"看清现状 → 预判未来 → 驱动行动"的完整闭环:
20
-
21
- | Tab | 解决的问题 | 核心能力 |
22
- |-----|-----------|---------|
23
- | **Pipeline** | 漏斗健康度不可见、商机风险难感知 | 漏斗可视化、阶段停滞预警、AI商机评分与赢率预测 |
24
- | **Forecast** | 预测不准确、Gap无抓手 | 人机预测对比(Commit vs AI Forecast)、预测调整与审计、AI Gap Closer智能推荐 |
25
-
26
- 不同角色在Seller Workspace中获得差异化价值:
27
-
28
- | 角色 | Pipeline场景 | Forecast场景 |
29
- |------|-------------|-------------|
30
- | 销售主管 / 团队Leader | 周会Review漏斗全貌,定位停滞阶段和风险商机 | 审视团队预测与AI预测的偏差,追责或辅导 |
31
- | 一线销售 | 自检个人Pipeline分布和推进速度 | 提交Commit预测,参考AI建议调整预测策略 |
32
- | 销售运营 | 分析阶段停留时间,发现流程瓶颈 | 追踪预测准确度趋势,优化预测方法论 |
33
-
34
- 整体设计理念是**"从全局到细节的渐进式下钻"**——Pipeline Tab先通过漏斗图和阶段汇总建立全局认知,再下钻到单笔商机借助AI辅助判断;Forecast Tab先通过KPI和BI看板把握目标达成态势,再通过预测矩阵和商机列表执行预测调整和Gap关闭动作。
35
-
36
- ---
37
-
38
- # 〇、页面入口与整体结构
39
-
40
- ## 0.1 页面入口
41
-
42
- 用户从**商机列表页(Opportunity List)**右上角点击 **「Seller Workspace」** 按钮进入本页面。该按钮通过列表页的**自定义列表普通按钮**能力实现。
43
-
44
- | 项目 | 说明 |
45
- |------|------|
46
- | 入口位置 | 商机列表页右上角 |
47
- | 按钮文案 | Seller Workspace |
48
- | 跳转方式 | 打开新的浏览器标签页 |
49
- | 权限控制 | 自定义按钮配置:全部人员可见 |
50
-
51
- ## 0.2 页面Tab结构
52
-
53
- Seller Workspace页面采用**Tab切换**架构,包含两个核心Tab:
54
-
55
- | Tab | 名称 | 定位 | 默认状态 |
56
- |-----|------|------|---------|
57
- | Tab 1 | **Pipeline** | 审视商机漏斗健康度和单个商机状态 | 默认选中 |
58
- | Tab 2 | **Forecast** | 对比AI预测与销售承诺,执行预测调整 | 非默认 |
59
-
60
- **页面头部信息**:
61
- - 页面标题:`Seller Workspace`
62
- - 副标题:根据当前Tab动态切换
63
- - Pipeline Tab:`Pipeline: Review your opportunity funnel and deal health`
64
- - Forecast Tab:`Forecast: Monitor quota attainment, review team forecasts, and uncover risks`
65
-
66
- **Tab切换交互**:
67
- - 点击Tab按钮切换,当前Tab高亮(底部紫色下划线)
68
- - 切换Tab时,副标题同步更新
69
- - 两个Tab的筛选条件相互独立,互不影响
70
-
71
- ## 0.3 Pipeline Tab 组件概览
72
-
73
- > 以下为 **Pipeline Tab** 的详细功能设计。Forecast Tab详见 `prd-forecasting.md`。
74
-
75
- Pipeline Tab由上至下包含以下三大组件:
76
-
77
- | 序号 | 组件 | 定位 | 说明 |
78
- |------|------|------|------|
79
- | 1 | **全局筛选栏(Filter Bar)** | 数据筛选 | 为下方所有组件提供统一的筛选条件(结单日期、Opportunity Owner、业务类型、变动基准时间) |
80
- | 2 | **Pipeline看板区** | 全局洞察 | 左右并列两张卡片:Pipeline Funnel(漏斗图)展示各阶段金额分布,Avg. Time in Stage(阶段停留时间)展示推进效率与基准对比 |
81
- | 3 | **商机列表(Opportunity List)** | 明细下钻 | 顶部为阶段快捷筛选区(Stage Tabs),下方为商机明细表格,集成AI评分和赢率预测,支持变动追踪 |
82
-
83
- **三个组件的数据流向**:筛选栏驱动看板区和商机列表刷新,看板区的阶段点击联动商机列表的阶段快捷筛选区,形成"筛选 → 全局 → 明细"的渐进式下钻体验。
84
-
85
- ```mermaid
86
- graph TD
87
- A[全局筛选栏] -->|筛选条件变更| B[Pipeline Funnel]
88
- A -->|筛选条件变更| C[Avg. Time in Stage]
89
- A -->|筛选条件变更| D[Stage Tabs]
90
- A -->|筛选条件变更| E[Opportunity List]
91
- D -->|点击阶段卡片| E
92
- B -->|点击漏斗层| D
93
- B -->|点击漏斗层| E
94
- C -->|点击阶段条形| D
95
- C -->|点击阶段条形| E
96
- E -->|点击商机名称| F[商机详情页]
97
- ```
98
-
99
- **联动规则**:
100
- 1. 全局筛选栏变更 → 所有板块数据刷新
101
- 2. 阶段切换区点击 → 商机列表按该阶段筛选
102
- 3. 漏斗图层点击 → 阶段切换区高亮对应阶段 + 商机列表按该阶段筛选
103
- 4. 阶段停留时间条形点击 → 阶段切换区高亮对应阶段 + 商机列表按该阶段筛选
104
- 5. 商机名称点击 → 跳转至商机详情页
105
-
106
- ---
107
-
108
- # 一、全局筛选栏(Filter Bar)
109
-
110
- ## 1.1 功能说明
111
-
112
- 全局筛选栏位于Pipeline Tab顶部,为下方所有板块(漏斗图、阶段停留时间、阶段切换区、商机列表)提供统一的数据筛选条件。筛选条件变更后,所有板块数据联动刷新。Close Date、Opportunity Owner、Business Type三项影响基础数据范围;Changes Since仅影响变动类数据的展示,不影响基础数据。
113
-
114
- ## 1.2 筛选项说明
115
-
116
- | 筛选项 | 类型 | 选项 | 默认值 | 展示与交互 | 业务逻辑 |
117
- |--------|------|------|--------|-----------|---------|
118
- | Close Date | 下拉选择 | This Week / This Month / This Quarter / Custom | This Quarter | 选择Custom时弹出双日历面板,选择开始/结束日期后点击OK确认;未完成选择时自动恢复上一选项;确认后下拉旁展示日期范围文案 | 按商机结单日期过滤基础数据 |
119
- | Opportunity Owner | 选人选部门组件(多选) | Current User / [人员列表] / [部门列表] | Current User | 点击展开下拉面板,含搜索框、Departments列表(🏢+复选框)、People列表(👤+复选框),选择部门时自动勾选部门下所有成员;选择后展示:单人显示姓名,多人显示"首个姓名 +N" | 根据选择的人员ID列表,按商机所有人过滤基础数据 |
120
- | Business Type | 下拉选择 | New Business / Renewal / Expansion | New Business | 标准下拉 | 按商机业务类型过滤基础数据 |
121
- | Changes Since | 下拉选择 | Start of the Period / Custom | Start of the Period | 标签旁带问号图标,Hover提示:"Sets the baseline date for tracking changes in close date, amount, stage, etc.";选择Custom时弹出单月历面板,选定日期后点击OK确认;未完成选择时恢复为Start of the Period | 仅影响变动类数据(阶段切换区变动摘要、商机列表变动箭头),不影响基础数据范围。Start of the Period取当前Close Date周期起始日 |
122
-
123
-
124
- # 二、Pipeline看板区
125
-
126
- 看板区由左右两个并列卡片组成:左侧为**Pipeline Funnel(商机漏斗图)**,右侧为**Avg. Time in Stage(阶段平均停留时间)**。
127
-
128
- ## 2.1 Pipeline Funnel(商机漏斗图)
129
-
130
- ### 2.1.1 功能说明
131
-
132
- 以漏斗图形式可视化展示当前Pipeline中各阶段的商机金额分布,帮助销售管理者快速判断漏斗形态是否健康(如是否头重脚轻、某阶段是否堆积过多)。
133
-
134
- ### 2.1.2 页面展示
135
-
136
- 页面自上而下包含以下区域:
137
-
138
- 1. **顶部销售金额**:居中展示"Sales Amount"标签及Pipeline总金额数值
139
- 2. **漏斗图(居中)**:漏斗从上到下按商机阶段排列,**每层高度按该阶段金额占比缩放,宽度按该阶段商机数量占比缩放**,形成漏斗形态。每层内居中展示阶段名称。阶段颜色根据视图随机分配
140
- 3. **左侧转化率**:漏斗每层左侧展示该阶段的整体转化率,第一阶段不展示(即为100%基准)
141
- 4. **右侧金额/数量**:漏斗每层右侧展示该阶段的商机金额和商机数量,格式:`{金额}/{数量}`
142
- 5. **底部图例**:以颜色圆点+阶段名称的形式横向排列,标识各层颜色与阶段的对应关系
143
-
144
- ### 2.1.3 交互说明
145
-
146
- 1. 漏斗图每层图形可点击,点击后联动下方阶段快捷筛选区高亮对应阶段,并刷新商机列表
147
- 2. 点击右上角✨按钮,弹出AI Insight分析弹窗,展示漏斗形态的智能解读文本,弹窗可关闭
148
-
149
- ### 2.1.4 业务逻辑
150
-
151
- 1. **数据范围**
152
- - 基础数据范围受当前登录用户的数据权限控制,仅展示用户有权查看的商机
153
- - 在用户数据权限基础上,进一步受全局筛选栏条件过滤(Close Date、Opportunity Owner、Business Type)
154
- - 漏斗层级与系统中配置相关业务类型的商机阶段(Stage)一一对应,阶段名称和数量由后台配置自动获取
155
- - 漏斗展示进行中及赢单(Closed Won)阶段,**不包含输单(Closed Lost)阶段**——漏斗的形状本身用于展示"留存"下来的商机,输单商机已退出漏斗,不应参与漏斗形态的计算和展示
156
-
157
- 2. **整体转化率**
158
- - 计算公式:`整体转化率 = 该阶段商机数量 / 第一阶段商机数量 × 100%`
159
- - 含义:到达当前阶段的商机数量占初始总商机数量的百分比,用于衡量从漏斗顶部到各阶段的留存效率
160
-
161
- 3. **漏斗图尺寸计算**
162
- - **高度计算**:每层高度按该阶段金额占所有阶段总金额的比例缩放
163
- - 计算公式:`阶段高度 = (该阶段金额 / 所有阶段总金额) × 漏斗总高度`
164
- - **宽度计算**:每层宽度按该阶段商机数量占所有阶段总商机数量的比例缩放
165
- - 计算公式:`阶段宽度 = (该阶段商机数量 / 所有阶段总商机数量) × 漏斗最大宽度`
166
- - **设计意图**:通过高度展示金额维度(金额越大,阶段越"高"),通过宽度展示数量维度(商机越多,阶段越"宽"),实现金额与数量的双维度可视化
167
-
168
- ---
169
-
170
- ## 2.2 Avg. Time in Stage(阶段平均停留时间)
171
-
172
- ### 2.2.1 功能说明
173
-
174
- 以水平条形图展示各阶段商机的平均停留天数,并叠加Target(基准值)和Limit(保底值)标记,帮助管理者识别哪些阶段存在商机停滞风险。
175
-
176
- ### 2.2.2 页面展示
177
-
178
- 1. **图例**:图表上方展示三项图例
179
- - 绿色条形 = Actual(实际平均停留时间)
180
- - 紫色三角标记 = Target(基准值,期望的停留时间上限)
181
- - 红色三角标记 = Limit(保底值,可接受的停留时间上限)
182
-
183
- 2. **每行展示**:每个阶段占一行,包含以下元素
184
-
185
- | 展示项 | 说明 |
186
- |--------|------|
187
- | 阶段名称 | 左侧标签 |
188
- | 平均停留时间 | 右侧数值标签,格式为"X天Y时"(如"12天6时") |
189
- | 条形长度 | 按实际天数与最大刻度的比例绘制 |
190
- | Target标记 | 紫色三角形标记在条形上方,标注基准停留天数 |
191
- | Limit标记 | 红色三角形标记在条形上方,标注保底停留天数,位于Target右侧 |
192
-
193
- 3. **颜色规则**:条形和数值颜色根据实际值与Target/Limit的关系动态变化
194
-
195
- | 条件 | 条形颜色 | 数值颜色 | 说明 |
196
- |------|---------|---------|------|
197
- | 实际 ≤ Target | 绿色 | 默认黑色 | 正常范围,在基准值以内 |
198
- | Target < 实际 ≤ Limit | 黄色 | 黄色 | 超过基准但未超保底,需关注 |
199
- | 实际 > Limit | 红色 | 红色 | 超过保底值,严重超标,需干预 |
200
-
201
- ### 2.2.3 交互说明
202
-
203
- 1. 点击某阶段条形,联动下方阶段快捷筛选区高亮对应阶段,并刷新商机列表
204
- 2. 点击右上角✨按钮,弹出AI分析弹窗,展示停留时间的智能解读文本,弹窗可关闭
205
-
206
- ### 2.2.4 业务逻辑
207
-
208
- 1. **数据范围**
209
- - 基础数据范围受当前登录用户的数据权限控制,仅展示用户有权查看的商机
210
- - 在用户数据权限基础上,进一步受全局筛选栏条件过滤(Close Date、Opportunity Owner、Business Type)
211
- - 仅统计进行中的商机阶段,**不包含赢单(Closed Won)和输单(Closed Lost)阶段**
212
-
213
- 2. **平均停留时间计算**
214
- - 统计该阶段下所有商机在当前阶段的停留时长,取平均值
215
- - 停留时长 = 当前时间 − 进入该阶段的时间
216
-
217
- 3. **Target与Limit**
218
- - Target(基准值):期望的停留时间上限,由系统配置或历史数据计算得出
219
- - Limit(保底值):可接受的停留时间上限,由系统配置
220
-
221
- ---
222
-
223
- # 三、商机列表(Opportunity List)
224
-
225
- 本组件由**阶段快捷筛选区(Stage Tabs)**和**商机明细表格**上下组合而成,是Pipeline Tab的核心数据组件。阶段快捷筛选区作为表格的内置筛选器,点击即可按阶段过滤商机列表。列表中集成了AI能力(AI Score、AI Win Rate),并通过变动箭头和Hover卡片展示商机的近期变化。
226
-
227
- ## 3.1 阶段快捷筛选区(Stage Tabs)
228
-
229
- ### 3.1.1 功能说明
230
-
231
- 位于商机列表顶部,以横向卡片组形式展示各商机阶段的汇总数据,作为列表的快捷阶段筛选器。
232
-
233
- ### 3.1.2 页面展示
234
-
235
- 所有阶段卡片等宽横向排列,占满容器宽度。每个卡片展示:
236
-
237
- | 序号 | 展示项 | 说明 |
238
- |------|--------|------|
239
- | 1 | 阶段名称 | 卡片顶部小字标签,如"Prospecting" |
240
- | 2 | 阶段金额 | 该阶段所有商机金额小计,大号加粗数字 |
241
- | 3 | 商机数量 | 金额右侧括号内展示,如"(15)" |
242
- | 4 | 变动摘要 | 卡片底部,金额变动和数量变动分两项独立展示,各自带红绿箭头 |
243
-
244
- 变动摘要格式示例:
245
- - `↑ $280K` `↑ 3` — 金额增加(绿色),数量增加(绿色)
246
- - `↓ $120K` `↑ 1` — 金额减少(红色),数量增加(绿色)
247
-
248
- 选中状态:阶段名称变为紫色加粗,卡片顶部出现紫色指示条。
249
-
250
- ### 3.1.3 交互说明
251
-
252
- 1. 默认选中第一个阶段,对应卡片顶部显示紫色高亮条
253
- 2. 点击任一阶段卡片:该卡片高亮,下方商机表格筛选至该阶段,列表标题和汇总信息同步更新
254
- 3. 漏斗图或阶段停留时间的阶段点击也会联动此处的选中状态
255
-
256
- ### 3.1.4 业务逻辑
257
-
258
- 1. **数据范围**
259
- - 基础数据范围受用户数据权限和全局筛选栏条件控制
260
- - 阶段卡片包含已选择的业务类型商机的所有阶段(含Closed Won和Closed Lost),按照阶段序号从小到大,从左到右依次展示
261
-
262
- 2. **变动摘要计算**
263
- - 基于商机快照机制,根据Changes Since基准日期与当前数据比对
264
- - 金额变动 = 当前阶段金额小计 − 基准快照金额小计
265
- - 数量变动 = 当前阶段商机数 − 基准快照商机数
266
- - 箭头颜色:↑绿色(正向)/ ↓红色(负向)
267
-
268
- ## 3.2 商机明细表格
269
-
270
- ### 3.2.1 功能说明
271
-
272
- 展示符合当前筛选条件的所有商机明细,支持排序、筛选和内联编辑。
273
-
274
- ### 3.2.2 页面展示
275
-
276
- 1. **列表头部**
277
-
278
- | 展示项 | 说明 |
279
- |--------|------|
280
- | 列表标题 | 动态标题,格式:"Opportunity List — {筛选条件}" |
281
- | 汇总信息 | 右侧展示:`Total: ${总金额} · {商机数} opportunities` |
282
- | 筛选排序状态栏 | 标题下方展示:`Sorted by {字段} · Filtered by {条件1}, {条件2}, ...`,无排序或筛选时不展示 |
283
-
284
- 2. **表格列定义**
285
-
286
- | 列名 | 对齐 | 排序 | 筛选 | 说明 |
287
- |------|------|------|------|------|
288
- | Opportunity Name | 左对齐 | 支持 | 支持(文本模糊搜索) | 蓝色文字可点击跳转商机详情页,支持内联编辑(✏️) |
289
- | Amount | 右对齐 | 支持(默认降序) | 支持(金额范围) | 带变动箭头,支持内联编辑(✏️) |
290
- | Close Date | 居中 | 支持 | 支持(日期范围) | 带变动箭头,支持内联编辑(✏️) |
291
- | Stage | 居中 | 支持(按阶段顺序) | 支持(多选枚举) | 带变动箭头 |
292
- | ✨ AI Score | 居中 | 支持 | 支持(多选枚举:High/Medium/Low) | 彩色圆角标签 |
293
- | ✨ AI Win Rate | 居中 | 支持 | 支持(百分比范围) | 百分比数字 |
294
- | Last Activity | 居中 | 支持 | 支持(日期范围) | 最近活动时间 |
295
-
296
- 3. **变动箭头**:Amount、Close Date、Stage三列数据后展示变动箭头
297
-
298
- | 字段 | ↑ 绿色 | ↓ 红色 | 无箭头 |
299
- |------|--------|--------|--------|
300
- | Amount | 金额增加 | 金额减少 | 无变动 |
301
- | Close Date | 结单日提前 | 结单日推迟 | 无变动 |
302
- | Stage | 阶段前进 | 阶段回退 | 无变动 |
303
-
304
- 4. **AI Score**:以彩色圆角标签展示评分等级(High绿色 / Medium橙色 / Low红色)
305
-
306
- 5. **AI Win Rate**:百分比数字展示
307
-
308
- ### 3.2.3 交互说明
309
-
310
- 1. **排序**:点击列头排序图标(⇅),首次点击降序,再次升序,第三次取消。当前排序列显示方向图标
311
- 2. **筛选**:点击列头筛选图标(▽),弹出对应类型的筛选面板(文本搜索/多选枚举/范围选择)
312
- 3. **内联编辑**:Opportunity Name、Amount、Close Date三列数据后显示✏️图标,点击进入编辑模式
313
- 4. **商机名称点击**:蓝色文字可点击,跳转至商机详情页
314
- 5. **变动箭头Hover**:鼠标悬停弹出变动详情卡片,包含:
315
-
316
- | 卡片字段 | 说明 |
317
- |----------|------|
318
- | 变动标题 | 增长使用"increased",下降使用"decreased" |
319
- | 变动前后值 | 格式:`{旧值} → {新值}`,新值高亮 |
320
- | 变动日期 | 格式:`Changed on {日期}` |
321
-
322
- 6. **AI Score Hover**:展示商机健康度评估卡片,为标准功能,此处不再赘述
323
- 7. **AI Win Rate Hover**:展示赢率计算分解卡片,包含:
324
-
325
- | 卡片区域 | 说明 |
326
- |----------|------|
327
- | Baseline Probability | 基线概率,基于历史同类商机统计赢率 |
328
- | Positive Factors | 正向因素列表,每项标注贡献值(如"+6%"),绿色文字 |
329
- | Negative Factors | 负向因素列表,每项标注影响值(如"-4%"),红色文字 |
330
- | AI Win Rate | 最终赢率 = Baseline + Σ正向 + Σ负向 |
331
-
332
- ### 3.2.4 业务逻辑
333
-
334
- 1. **数据范围**
335
- - 基础数据范围受用户数据权限和全局筛选栏条件控制
336
- - 进一步受阶段快捷筛选区的选中阶段过滤,未选中阶段时返回所有阶段商机
337
-
338
- 2. **变动数据**
339
- - 基于商机快照机制,根据Changes Since基准日期与当前数据逐字段比对
340
- - 变动标题统一规则:增长为"{字段} increased",下降为"{字段} decreased"
341
-
342
- 3. **AI Win Rate计算**
343
- - AI Win Rate = Baseline Probability + Σ Positive Factors − Σ Negative Factors
344
- - 因素类型(非固定值):正向如金额持续上升、历史赢单记录、互动频率高;负向如推进速度慢、无高管参与、活动记录稀疏
345
-
346
- ---
347
-
348
- # 四、商机快照机制
349
-
350
- 以下为设计思路,直接采取Datacloud的历史快照功能实现即可
351
-
352
- ## 4.1 背景
353
-
354
- Pipeline中的变动数据(如阶段切换区的金额/数量变动、商机列表的变动箭头)依赖于历史数据的对比。为支持"Changes Since"筛选项按任意基准时间点进行变动比对,需要对商机数据进行每日快照留存。
355
-
356
- ## 4.2 快照规则
357
-
358
- | 项目 | 说明 |
359
- |------|------|
360
- | 触发时间 | 每天0:00(服务器时间)自动执行 |
361
- | 快照范围 | 所有商机记录(不区分阶段和状态),仅对快照字段有变更的商机生成新快照;商机创建时记录一条初始快照 |
362
- | 存储策略 | 每次快照以快照日期为标识。查询某日期的商机状态时,取该商机在该日期之前(含)的最近一条快照 |
363
-
364
- ## 4.3 快照字段
365
-
366
- | 字段 | 类型 | 说明 |
367
- |------|------|------|
368
- | snapshotDate | Date | 快照日期(即当天0:00的日期) |
369
- | opportunityId | String | 商机ID |
370
- | opportunityName | String | 商机名称 |
371
- | accountName | String | 客户名称 |
372
- | amount | Number | 销售金额 |
373
- | stageName | String | 商机阶段 |
374
- | closeDate | Date | 结单日期 |
375
- | ownerUserId | String | 所有人(商机负责人用户ID) |
376
- | ownerDeptId | String | 所属部门(商机负责人所在部门ID) |
377
- | createdTime | DateTime | 商机创建时间 |
378
-
379
- ## 4.4 使用场景
380
-
381
- 变动对比时,系统根据"Changes Since"选定的基准时间,查询该日期的快照数据,与当前实时数据进行逐字段比对,计算出金额变动、阶段变动、数量变动等差异,驱动页面上所有变动类展示(箭头、变动摘要、变动详情卡片)。
382
-
383
- ## 4.5 当日变动处理
384
-
385
- 由于快照仅在每天凌晨生成,当日发生的变更尚无对应快照。此时变动对比逻辑如下:
386
-
387
- 1. 取该商机最新一条快照记录,与当前商机实时数据逐字段比对
388
- 2. 若一致(无差异):说明当日未发生变更,变动时间取最新快照日期,数值取快照值
389
- 3. 若不一致(存在差异):说明当日已发生变更,变动时间取当天日期,变动前值取最新快照值,变动后值取当前实时值