yidaconnector 2026.6.11

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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +383 -0
  3. package/bin/yida.js +670 -0
  4. package/lib/app/form-navigation.js +58 -0
  5. package/lib/app/get-schema.js +538 -0
  6. package/lib/auth/auth.js +294 -0
  7. package/lib/auth/cdp-browser-login.js +390 -0
  8. package/lib/auth/codex-login.js +71 -0
  9. package/lib/auth/login.js +475 -0
  10. package/lib/auth/org.js +363 -0
  11. package/lib/auth/qr-login.js +1563 -0
  12. package/lib/core/chalk.js +384 -0
  13. package/lib/core/check-update.js +82 -0
  14. package/lib/core/cli-error.js +39 -0
  15. package/lib/core/command-manifest.js +106 -0
  16. package/lib/core/env-cmd.js +545 -0
  17. package/lib/core/env-manager.js +601 -0
  18. package/lib/core/env.js +287 -0
  19. package/lib/core/i18n.js +177 -0
  20. package/lib/core/locales/ar.js +805 -0
  21. package/lib/core/locales/de.js +805 -0
  22. package/lib/core/locales/en.js +1623 -0
  23. package/lib/core/locales/es.js +805 -0
  24. package/lib/core/locales/fr.js +805 -0
  25. package/lib/core/locales/hi.js +805 -0
  26. package/lib/core/locales/ja.js +1197 -0
  27. package/lib/core/locales/ko.js +807 -0
  28. package/lib/core/locales/pt.js +805 -0
  29. package/lib/core/locales/vi.js +805 -0
  30. package/lib/core/locales/zh-HK.js +1233 -0
  31. package/lib/core/locales/zh.js +1584 -0
  32. package/lib/core/query-data.js +781 -0
  33. package/lib/core/redact.js +100 -0
  34. package/lib/core/utils.js +799 -0
  35. package/lib/core/yida-client.js +117 -0
  36. package/package.json +94 -0
  37. package/project/config.json +4 -0
  38. package/project/pages/src/demo-birthday-game.oyd.jsx +832 -0
  39. package/project/pages/src/demo-chip-insight.oyd.jsx +983 -0
  40. package/project/pages/src/demo-compat-smoke.oyd.jsx +58 -0
  41. package/project/pages/src/demo-crm-batch-entry.oyd.jsx +805 -0
  42. package/project/pages/src/demo-crm-dashboard.oyd.jsx +677 -0
  43. package/project/pages/src/demo-future-vision-2026.oyd.jsx +1102 -0
  44. package/project/pages/src/demo-ppt.oyd.jsx +1192 -0
  45. package/project/pages/src/demo-salary-calculator.oyd.jsx +904 -0
  46. package/project/pages/src/yidaconnector-knowledge-doc.oyd.jsx +1714 -0
  47. package/project/prd/demo-birthday-game.md +39 -0
  48. package/project/prd/demo-crm.md +463 -0
  49. package/project/prd/demo-dingtalk-ai-solution-center.md +425 -0
  50. package/project/prd/demo-future-vision-2026.md +78 -0
  51. package/project/prd/demo-salary-calculator.md +101 -0
  52. package/scripts/build-skills-package.js +406 -0
  53. package/scripts/check-syntax.js +59 -0
  54. package/scripts/demo-dws.sh +106 -0
  55. package/scripts/e2e-real/cleanup.js +67 -0
  56. package/scripts/e2e-real/fixtures/form-fields.json +18 -0
  57. package/scripts/e2e-real/full-runner.js +1566 -0
  58. package/scripts/e2e-real/runner.js +293 -0
  59. package/scripts/e2e-real/skill-coverage.js +115 -0
  60. package/scripts/generate-command-docs.js +109 -0
  61. package/scripts/nightly-smoke.js +134 -0
  62. package/scripts/postinstall.js +545 -0
  63. package/scripts/solution-center-runner.js +368 -0
  64. package/scripts/validate-ci.sh +50 -0
  65. package/scripts/validate-command-manifest.js +119 -0
  66. package/scripts/validate-package-size.js +78 -0
  67. package/scripts/validate-skills.js +247 -0
  68. package/scripts/validate-structure.js +66 -0
  69. package/yida-skills/SKILL.md +163 -0
  70. package/yida-skills/references/yida-api.md +1309 -0
  71. package/yida-skills/skills/large-file-write/SKILL.md +91 -0
  72. package/yida-skills/skills/large-file-write/references/write-patterns.md +149 -0
  73. package/yida-skills/skills/large-file-write/scripts/write.js +157 -0
  74. package/yida-skills/skills/yida-data-management/SKILL.md +252 -0
  75. package/yida-skills/skills/yida-data-management/references/api-matrix.md +49 -0
  76. package/yida-skills/skills/yida-data-management/references/data-format-guide.md +159 -0
  77. package/yida-skills/skills/yida-data-management/references/verified-endpoints.md +62 -0
  78. package/yida-skills/skills/yida-login/SKILL.md +159 -0
  79. package/yida-skills/skills/yida-logout/SKILL.md +67 -0
@@ -0,0 +1,39 @@
1
+ # 生日祝福小游戏 需求文档
2
+
3
+ ## 功能需求
4
+
5
+ ### 核心功能
6
+
7
+ 1. **欢迎界面**
8
+ - 输入寿星姓名
9
+ - 输入送祝福人姓名
10
+ - 开始游戏按钮
11
+
12
+ 2. **点蜡烛游戏**
13
+ - 显示生日蛋糕和蜡烛(10根)
14
+ - 点击蜡烛可以吹灭(使用麦克风)
15
+ - 计时功能 - 记录吹灭所有蜡烛的时间
16
+ - 显示已吹灭的蜡烛数量
17
+
18
+ 3. **祝福界面**
19
+ - 显示精美的生日贺卡
20
+ - 显示寿星姓名和送祝福人姓名
21
+ - 显示完成时间
22
+ - 生日祝福语
23
+
24
+ 4. **庆祝动画**
25
+ - 彩带飘落效果
26
+ - 烟花动画
27
+ - 生日祝福语滚动
28
+
29
+ ### 页面布局
30
+
31
+ - **全屏沉浸式设计**
32
+ - **温馨的粉色主题**
33
+ - **流畅的动画效果**
34
+
35
+ ## 页面配置
36
+
37
+ ### 首页(自定义页面)
38
+
39
+ 展示完整的生日祝福小游戏功能。
@@ -0,0 +1,463 @@
1
+ # CRM 客户管理系统 — YidaConnector 完整示例应用
2
+
3
+ > YidaConnector 的 "TodoMVC":一个覆盖全部核心能力的标准基准应用
4
+
5
+ ## 产品定位
6
+
7
+ CRM 客户管理系统是 YidaConnector 的标杆应用——就像 TodoMVC 之于前端框架。选择 CRM 作为基准应用,是因为它天然覆盖企业应用的全部核心场景:多实体关联(客户→商机→合同)、审批流程(合同/报销)、数据看板(销售漏斗)、批量操作(数据录入)、外部集成(API 连接器)。通过构建这一个应用,即可验证 YidaConnector 的 19 种字段类型和 14 大功能模块。
8
+
9
+ ## 应用架构总览
10
+
11
+ ### 模块组成
12
+
13
+ | 类型 | 数量 | 明细 |
14
+ |------|------|------|
15
+ | 应用 | 1 | CRM 客户管理系统 |
16
+ | 表单 | 5 | 客户信息表、商机管理表、合同审批表、费用报销表、客户回访表 |
17
+ | 流程 | 2 | 合同审批流程(条件分支)、费用报销流程(顺序审批) |
18
+ | 自定义页面 | 2 | CRM 销售仪表盘、批量数据录入 |
19
+ | 报表 | 1 | 销售分析报表(6 种图表 + 筛选器) |
20
+ | 连接器 | 1 | 外部用户查询 API(BasicAuth) |
21
+ | 页面分享 | 1 | 组织内短链分享 |
22
+
23
+ ### 字段类型覆盖(19 种)
24
+
25
+ | 字段类型 | ComponentName | 使用位置 |
26
+ |----------|---------------|----------|
27
+ | 流水号 | SerialNumberField | 客户、商机、合同、费用报销 |
28
+ | 单行文本 | TextField | 客户、商机、合同 |
29
+ | 多行文本 | TextareaField | 客户、商机、合同、费用报销、回访 |
30
+ | 数字 | NumberField | 商机、合同、费用报销 |
31
+ | 下拉单选 | SelectField | 客户、商机、合同、费用报销 |
32
+ | 单选 | RadioField | 客户、商机、回访 |
33
+ | 下拉多选 | MultiSelectField | 客户 |
34
+ | 复选框 | CheckboxField | 回访 |
35
+ | 日期 | DateField | 商机、合同、回访 |
36
+ | 日期区间 | CascadeDateField | 合同 |
37
+ | 成员 | EmployeeField | 客户、商机、合同、费用报销、回访 |
38
+ | 部门 | DepartmentSelectField | 费用报销 |
39
+ | 地址 | AddressField | 客户 |
40
+ | 国家/地区 | CountrySelectField | 回访 |
41
+ | 附件 | AttachmentField | 客户、合同 |
42
+ | 图片 | ImageField | 商机 |
43
+ | 评分 | RateField | 回访 |
44
+ | 子表 | TableField | 客户、商机、费用报销 |
45
+ | 关联表单 | AssociationFormField | 商机、合同、费用报销、回访 |
46
+
47
+ ---
48
+
49
+ ## 一、表单设计
50
+
51
+ ### 1.1 客户信息表(普通表单)
52
+
53
+ 基础信息表,作为其他表单的关联数据源。
54
+
55
+ | 字段名 | ComponentName | 必填 | 说明 |
56
+ |--------|---------------|------|------|
57
+ | 客户编号 | SerialNumberField | 自动 | 规则:`CUS-yyyyMMdd-0001`,永不重置 |
58
+ | 客户名称 | TextField | ✓ | 主字段,用于关联表单显示 |
59
+ | 客户类型 | RadioField | | 选项:企业客户、个人客户 |
60
+ | 客户级别 | SelectField | | 选项:A级、B级、C级、D级 |
61
+ | 联系人 | TextField | | |
62
+ | 联系电话 | TextField | | |
63
+ | 联系邮箱 | TextField | | |
64
+ | 公司地址 | AddressField | | 省市区三级联动 |
65
+ | 负责人 | EmployeeField | | 单选成员 |
66
+ | 客户来源 | MultiSelectField | | 选项:官网、展会、转介绍、广告、电话(多选) |
67
+ | 备注 | TextareaField | | |
68
+ | 相关附件 | AttachmentField | | |
69
+
70
+ **子表:联系人明细**
71
+
72
+ | 子字段 | ComponentName | 说明 |
73
+ |--------|---------------|------|
74
+ | 姓名 | TextField | |
75
+ | 职位 | TextField | |
76
+ | 电话 | TextField | |
77
+
78
+ ### 1.2 商机管理表(普通表单)
79
+
80
+ 跟踪销售机会,关联客户信息。
81
+
82
+ | 字段名 | ComponentName | 必填 | 说明 |
83
+ |--------|---------------|------|------|
84
+ | 商机编号 | SerialNumberField | 自动 | 规则:`OPP-0001`,永不重置 |
85
+ | 商机名称 | TextField | ✓ | |
86
+ | 关联客户 | AssociationFormField | | 关联"客户信息表",显示客户名称 |
87
+ | 商机阶段 | SelectField | | 选项:初步接触、需求确认、方案报价、谈判、赢单、输单 |
88
+ | 预计金额 | NumberField | | 单位:万元,精度 2 位 |
89
+ | 成交概率 | NumberField | | 单位:%,精度 0 位 |
90
+ | 预计成交日期 | DateField | | 格式:YYYY-MM-DD |
91
+ | 负责人 | EmployeeField | | 单选成员 |
92
+ | 商机来源 | RadioField | | 选项:新开发、老客户、合作伙伴 |
93
+ | 商机描述 | TextareaField | | |
94
+ | 产品图片 | ImageField | | |
95
+
96
+ **子表:跟进记录**
97
+
98
+ | 子字段 | ComponentName | 说明 |
99
+ |--------|---------------|------|
100
+ | 跟进日期 | DateField | 格式:YYYY-MM-DD |
101
+ | 跟进方式 | SelectField | 选项:电话、上门、视频、邮件 |
102
+ | 跟进内容 | TextareaField | |
103
+
104
+ ### 1.3 合同审批表(流程表单)
105
+
106
+ 合同签订审批,多重关联客户和商机。
107
+
108
+ | 字段名 | ComponentName | 必填 | 说明 |
109
+ |--------|---------------|------|------|
110
+ | 合同编号 | SerialNumberField | 自动 | 规则:`CON-yyyyMM-0001`,永不重置 |
111
+ | 合同名称 | TextField | ✓ | |
112
+ | 关联客户 | AssociationFormField | | 关联"客户信息表" |
113
+ | 关联商机 | AssociationFormField | | 关联"商机管理表" |
114
+ | 合同类型 | SelectField | | 选项:销售合同、服务合同、框架协议 |
115
+ | 合同金额 | NumberField | ✓ | 单位:万元,精度 2 位,用于流程条件分支 |
116
+ | 签订日期 | DateField | | |
117
+ | 合同期限 | CascadeDateField | | 日期区间(开始日期~结束日期) |
118
+ | 负责人 | EmployeeField | | |
119
+ | 合同附件 | AttachmentField | | |
120
+ | 合同备注 | TextareaField | | |
121
+
122
+ ### 1.4 费用报销表(流程表单)
123
+
124
+ 销售费用报销,支持明细子表和金额汇总。
125
+
126
+ | 字段名 | ComponentName | 必填 | 说明 |
127
+ |--------|---------------|------|------|
128
+ | 报销单号 | SerialNumberField | 自动 | 规则:`EXP-yyyyMMdd-0001`,永不重置 |
129
+ | 申请人 | EmployeeField | ✓ | |
130
+ | 所属部门 | DepartmentSelectField | ✓ | |
131
+ | 关联客户 | AssociationFormField | | 关联"客户信息表",记录费用归属 |
132
+ | 报销类型 | SelectField | ✓ | 选项:差旅、招待、办公、交通、其他 |
133
+ | 报销总额 | NumberField | ✓ | 可配置公式自动汇总子表金额 |
134
+ | 报销说明 | TextareaField | | |
135
+
136
+ **子表:报销明细**
137
+
138
+ | 子字段 | ComponentName | 必填 | 说明 |
139
+ |--------|---------------|------|------|
140
+ | 消费日期 | DateField | ✓ | |
141
+ | 费用类别 | SelectField | ✓ | 选项:餐饮、交通、住宿、办公、其他 |
142
+ | 金额 | NumberField | ✓ | |
143
+ | 说明 | TextField | | |
144
+
145
+ ### 1.5 客户回访表(普通表单)
146
+
147
+ 记录客户回访和满意度调查。
148
+
149
+ | 字段名 | ComponentName | 必填 | 说明 |
150
+ |--------|---------------|------|------|
151
+ | 关联客户 | AssociationFormField | ✓ | 关联"客户信息表" |
152
+ | 回访人 | EmployeeField | ✓ | |
153
+ | 回访日期 | DateField | ✓ | 格式:YYYY-MM-DD |
154
+ | 回访方式 | RadioField | ✓ | 选项:电话、上门、视频、邮件 |
155
+ | 满意度 | RateField | ✓ | 5 星评分,支持半星 |
156
+ | 反馈标签 | CheckboxField | | 选项:产品满意、服务及时、价格合理、需要改进(多选) |
157
+ | 客户区域 | CountrySelectField | | 国家/地区选择 |
158
+ | 回访记录 | TextareaField | | |
159
+
160
+ ---
161
+
162
+ ## 二、流程设计
163
+
164
+ ### 2.1 合同审批流程(条件分支)
165
+
166
+ 根据合同金额自动路由到不同审批链:
167
+
168
+ | 条件 | 审批链 | 说明 |
169
+ |------|--------|------|
170
+ | 合同金额 ≤ 5万 | 部门经理 | 小额合同快速审批 |
171
+ | 5万 < 合同金额 ≤ 20万 | 部门经理 → 财务 | 中额合同需财务复核 |
172
+ | 合同金额 > 20万 | 部门经理 → 财务 → 总经理 | 大额合同三级审批 |
173
+
174
+ **审批节点配置**:
175
+ - 所有字段对审批人只读(仅附件可编辑)
176
+ - 拒绝时退回发起人修改
177
+
178
+ ### 2.2 费用报销流程(顺序审批)
179
+
180
+ 三级顺序审批,确保费用合规:
181
+
182
+ | 节点 | 审批人 | 职责 |
183
+ |------|--------|------|
184
+ | 直属主管审批 | 发起人主管 | 确认费用真实性 |
185
+ | 财务审核 | 财务人员 | 核实金额和票据(可编辑备注) |
186
+ | 出纳确认 | 出纳人员 | 确认并安排付款 |
187
+
188
+ ---
189
+
190
+ ## 三、权限设计
191
+
192
+ **3×5 权限矩阵**:
193
+
194
+ | 角色 | 客户信息表 | 商机管理表 | 合同审批表 | 费用报销表 | 客户回访表 |
195
+ |------|------------|------------|------------|------------|------------|
196
+ | 销售团队 | 读写 | 读写 | 只读 | 读写 | 读写 |
197
+ | 财务团队 | 只读 | 只读 | 读写 | 读写 | 只读 |
198
+ | 管理层 | 只读 | 只读 | 只读 | 只读 | 只读 |
199
+
200
+ ---
201
+
202
+ ## 四、自定义页面
203
+
204
+ ### 4.1 CRM 销售仪表盘
205
+
206
+ 实时展示销售核心指标的数据看板,支持密度切换和自动刷新。
207
+
208
+ #### 数据源配置
209
+
210
+ | 指标 | 数据表 | 查询方式 | 取值字段 |
211
+ |------|--------|----------|----------|
212
+ | 客户总数 | 客户信息表 | searchFormDatas (pageSize=1) | totalCount |
213
+ | 商机总数 | 商机管理表 | searchFormDatas (pageSize=100) | totalCount |
214
+ | 合同总额 | 合同审批表 | searchFormDatas 遍历累加 | 合同金额字段 |
215
+ | 本月新增 | 客户信息表 | searchFormDatas + createFrom/createTo 时间过滤 | totalCount |
216
+ | 阶段统计 | 商机管理表 | 遍历 data 数组统计各阶段数量 | 商机阶段字段 |
217
+ | 最近商机 | 商机管理表 | 复用商机查询,取前 10 条 | data.slice(0, 10) |
218
+
219
+ #### 布局结构
220
+
221
+ ```
222
+ ┌────────────────────────────────────────────────┐
223
+ │ 顶部标题栏:标题 + 刷新按钮 + 密度切换按钮组 │
224
+ ├────────────────────────────────────────────────┤
225
+ │ 指标卡行(4 张卡片,flex 横向排列,移动端换行) │
226
+ │ [客户总数] [商机总数] [合同总额] [本月新增] │
227
+ ├──────────────────┬─────────────────────────────┤
228
+ │ 商机阶段分布 │ 最近商机列表 │
229
+ │ (固定宽 360px) │ (flex: 1 自适应) │
230
+ │ 6 行进度条 │ 表格:名称/阶段/金额/负责人 │
231
+ └──────────────────┴─────────────────────────────┘
232
+ ```
233
+
234
+ #### 密度设计规格
235
+
236
+ | 参数 | compact(紧凑) | comfortable(舒适) |
237
+ |------|-----------------|---------------------|
238
+ | 卡片内边距 | 8px 12px | 16px 20px |
239
+ | 基础字号 | 12px | 14px |
240
+ | 行高 | 1.4 | 1.6 |
241
+ | 区块间距 | 8px | 16px |
242
+ | 标题字号 | 14px | 16px |
243
+ | 指标数值字号 | 20px | 28px |
244
+ | 表格行高 | 32px | 44px |
245
+
246
+ #### API 调用模式
247
+
248
+ - **合并查询策略**:商机数据一次请求获取 totalCount + stageStats + recentList,避免并发限流
249
+ - **分页处理**:数据超过 100 条时自动分页加载(合同金额累加、阶段统计完善)
250
+ - **并行加载**:Promise.all 同时发起客户/商机/合同/本月新增四类查询
251
+ - **错误处理**:单个查询失败不影响其他数据展示,toast 提示具体错误
252
+
253
+ #### 自动刷新机制
254
+
255
+ - **刷新间隔**:30 秒定时器(setInterval)
256
+ - **生命周期**:didMount 启动定时器,didUnmount 清理定时器
257
+ - **手动刷新**:点击刷新按钮立即触发 loadAllData,toast 提示"刷新成功"
258
+
259
+ #### 指标卡规格
260
+
261
+ | 卡片 | 标题 | 数值格式 | 单位 | 颜色 |
262
+ |------|------|----------|------|------|
263
+ | 1 | 客户总数 | 整数 | 家 | #1677FF |
264
+ | 2 | 商机总数 | 整数 | 个 | #722ED1 |
265
+ | 3 | 合同总额 | ¥ + formatMoney(≥1万显示 X.X万) | - | #52C41A |
266
+ | 4 | 本月新增客户 | 整数 | 家 | #FA8C16 |
267
+
268
+ #### 商机阶段分布
269
+
270
+ - **阶段列表**:初步接触、需求确认、方案报价、谈判、赢单、输单(6 个)
271
+ - **可视化**:每行显示阶段名称(60px)+ 进度条(flex:1)+ 数量(50px)
272
+ - **进度条**:按比例填充,带颜色映射和 0.3s 过渡动画
273
+ - **颜色映射**:初步接触=#1677FF,需求确认=#722ED1,方案报价=#FA8C16,谈判=#13C2C2,赢单=#52C41A,输单=#FF4D4F
274
+
275
+ #### 最近商机列表
276
+
277
+ | 列名 | 数据来源 | 格式化 |
278
+ |------|----------|--------|
279
+ | 商机名称 | formData.商机名称字段 | 文本,超长省略 |
280
+ | 阶段 | formData.商机阶段字段 | 标签样式,带阶段颜色背景 |
281
+ | 预计金额 | formData.预计金额字段 | ¥ + formatMoney |
282
+ | 负责人 | originator.name.zh_CN | 多语言兼容取值 |
283
+
284
+ - **空状态**:居中显示"暂无商机数据",灰色文字
285
+ - **加载状态**:居中显示"数据加载中..."
286
+
287
+ #### 响应式适配
288
+
289
+ - 检测方式:this.utils.isMobile()
290
+ - 移动端:指标卡 flex-wrap 换行,下方区域改为纵向堆叠(column)
291
+ - 桌面端:指标卡横向 4 列,下方区域左右分栏
292
+
293
+ ---
294
+
295
+ ### 4.2 批量数据录入
296
+
297
+ 高效录入客户、商机、回访数据的批量操作页面,支持 Excel 粘贴和草稿暂存。
298
+
299
+ #### 多表单配置
300
+
301
+ | 表单 | 可编辑列 |
302
+ |------|----------|
303
+ | 客户信息 | 客户名称(必填)、客户类型(单选)、客户级别(下拉)、联系人、联系电话、联系邮箱 |
304
+ | 商机管理 | 商机名称(必填)、商机阶段(下拉)、预计金额(万)(数字)、成交概率(%)(数字)、商机来源(单选) |
305
+ | 客户回访 | 回访方式(单选)、满意度(1-5)(数字)、回访记录 |
306
+
307
+ #### 行编辑规格
308
+
309
+ | 操作 | 行为 |
310
+ |------|------|
311
+ | 添加行 | 追加一行空数据(所有字段为空字符串),自动生成唯一 rowId |
312
+ | 删除行 | 从列表移除指定行,如删后为空则自动补充一行空行 |
313
+ | 删除选中 | 批量删除所有勾选行,需先选中至少一行 |
314
+ | 清空 | 重置为 3 行空数据,清除 localStorage 草稿 |
315
+ | 全选/取消 | 表头复选框切换所有行的选中状态 |
316
+
317
+ #### 字段验证规则
318
+
319
+ | 验证类型 | 规则 | 错误提示 |
320
+ |----------|------|----------|
321
+ | 必填检查 | 标记 required=true 的列不能为空 | "{字段名}不能为空" |
322
+ | 数字检查 | type=number 的列必须是合法数字 | "{字段名}必须是数字" |
323
+
324
+ - 验证时机:提交前统一验证所有行
325
+ - 错误展示:输入框红色边框 + 下方红色错误文字
326
+
327
+ #### Excel 粘贴导入
328
+
329
+ - **触发方式**:全局 paste 事件监听(didMount 绑定,didUnmount 解绑)
330
+ - **解析逻辑**:按 `\n` 分行 → 按 `\t` 分列 → 按列顺序映射到字段
331
+ - **追加模式**:过滤现有全空行后,将新行追加到末尾
332
+ - **空行过滤**:粘贴数据中的全空行自动忽略
333
+ - **成功提示**:toast 显示"已导入 X 行数据"
334
+
335
+ #### 草稿暂存机制
336
+
337
+ | 配置项 | 值 |
338
+ |--------|----|
339
+ | localStorage key | `yida_crm_batch_entry_{formType}`(如 yida_crm_batch_entry_customer) |
340
+ | 保存时机 | 添加行、删除行、单元格编辑、切换表单时 |
341
+ | 恢复时机 | didMount 或切换表单时,优先加载草稿,无草稿则初始化 3 行空数据 |
342
+ | 清除时机 | 提交全部成功后、手动点击清空 |
343
+
344
+ #### 批量提交流程
345
+
346
+ 1. **验证阶段**:遍历所有行执行 validateRow,标记 _status 和 _errors
347
+ 2. **过滤空行**:只提交至少有一个字段有值的行
348
+ 3. **并发提交**:Promise.all 并发调用 saveFormData(每行一个请求)
349
+ 4. **进度反馈**:实时更新 current/total,进度条百分比动画
350
+ 5. **结果统计**:记录 success/failed 数量,展示结果卡片
351
+
352
+ #### 提交状态与样式
353
+
354
+ | 状态 | 行背景色 | 操作列显示 |
355
+ |------|----------|------------|
356
+ | valid | 白色 | 删除按钮 |
357
+ | invalid | #fff2f0(浅红) | 删除按钮 |
358
+ | submitting | #e6f7ff(浅蓝) | "提交中"文字 |
359
+ | submitted | #f6ffed(浅绿) | ✓ 对勾图标 |
360
+
361
+ #### 错误处理
362
+
363
+ - 验证失败:toast 提示"请修正表格中的错误后再提交",不发起任何请求
364
+ - 部分失败:结果卡片显示"X 条成功,Y 条失败(请修正红色行后重新提交)"
365
+ - 全部成功:清除草稿,重置为 3 行空数据,toast 提示"全部提交成功,共 X 条"
366
+
367
+ ---
368
+
369
+ ## 五、报表设计
370
+
371
+ 销售分析报表,包含 6 种图表和时间筛选器:
372
+
373
+ | 图表类型 | 标题 | 数据源 | 说明 |
374
+ |----------|------|--------|------|
375
+ | 指标卡 | 客户总数 | 客户信息表 | 汇总统计 |
376
+ | 漏斗图 | 商机销售漏斗 | 商机管理表 | 按阶段展示转化 |
377
+ | 折线图 | 月度合同趋势 | 合同审批表 | 按月汇总合同金额 |
378
+ | 饼图 | 客户类型分布 | 客户信息表 | 企业/个人客户占比 |
379
+ | 柱状图 | 销售业绩排名 | 商机管理表 | 按负责人汇总金额 |
380
+ | 透视表 | 客户级别×商机阶段 | 商机管理表 | 二维交叉分析 |
381
+
382
+ **筛选器**:时间范围(按预计成交日期筛选),联动漏斗图、柱状图、透视表。
383
+
384
+ ---
385
+
386
+ ## 六、集成自动化
387
+
388
+ ### HTTP 连接器配置
389
+
390
+ | 配置项 | 值 |
391
+ |--------|-----|
392
+ | 连接器名称 | 外部 CRM 用户查询 |
393
+ | 基础 URL | `https://jsonplaceholder.typicode.com` |
394
+ | 鉴权方式 | BasicAuth |
395
+
396
+ **操作:获取外部客户列表**
397
+
398
+ | 配置项 | 值 |
399
+ |--------|-----|
400
+ | 操作 ID | getExternalUsers |
401
+ | 请求方法 | GET |
402
+ | 路径 | `/users` |
403
+ | 响应字段 | id(用户ID)、name(用户名称)、email(邮箱)、phone(电话) |
404
+
405
+ ---
406
+
407
+ ## 七、页面分享
408
+
409
+ | 配置项 | 值 |
410
+ |--------|-----|
411
+ | 分享页面 | CRM 销售仪表盘 |
412
+ | 分享范围 | 组织内 |
413
+ | 短链地址 | `/s/crm-dashboard` |
414
+
415
+ ---
416
+
417
+ ## 八、模拟数据
418
+
419
+ ### 客户数据(5 条)
420
+
421
+ | 客户名称 | 客户类型 | 客户级别 | 联系人 | 负责人 |
422
+ |----------|----------|----------|--------|--------|
423
+ | 阿里云计算 | 企业客户 | A级 | 张经理 | 销售一 |
424
+ | 腾讯科技 | 企业客户 | A级 | 李总监 | 销售一 |
425
+ | 字节跳动 | 企业客户 | B级 | 王经理 | 销售二 |
426
+ | 个人客户-陈先生 | 个人客户 | C级 | 陈先生 | 销售二 |
427
+ | 美团点评 | 企业客户 | B级 | 赵经理 | 销售一 |
428
+
429
+ ### 商机数据(8 条)
430
+
431
+ | 商机名称 | 关联客户 | 商机阶段 | 预计金额 | 成交概率 |
432
+ |----------|----------|----------|----------|----------|
433
+ | 阿里云-年度服务合作 | 阿里云计算 | 方案报价 | 50万 | 70% |
434
+ | 腾讯-数字化转型项目 | 腾讯科技 | 谈判 | 120万 | 85% |
435
+ | 字节-内部工具定制 | 字节跳动 | 需求确认 | 30万 | 50% |
436
+ | 陈先生-个人订购 | 个人客户-陈先生 | 赢单 | 2万 | 100% |
437
+ | 美团-供应链系统 | 美团点评 | 初步接触 | 80万 | 30% |
438
+ | 阿里云-二期扩展 | 阿里云计算 | 需求确认 | 35万 | 60% |
439
+ | 腾讯-运维自动化 | 腾讯科技 | 输单 | 45万 | 0% |
440
+ | 美团-数据分析平台 | 美团点评 | 方案报价 | 60万 | 55% |
441
+
442
+ ### 合同数据(3 条)
443
+
444
+ | 合同名称 | 关联客户 | 合同金额 | 合同类型 |
445
+ |----------|----------|----------|----------|
446
+ | 陈先生-年度服务协议 | 个人客户-陈先生 | 2万 | 服务合同 |
447
+ | 阿里云-框架协议2026 | 阿里云计算 | 8万 | 框架协议 |
448
+ | 腾讯-项目一期合同 | 腾讯科技 | 25万 | 销售合同 |
449
+
450
+ ### 费用报销数据(2 条)
451
+
452
+ | 报销类型 | 关联客户 | 报销总额 | 申请人 |
453
+ |----------|----------|----------|--------|
454
+ | 差旅 | 腾讯科技 | 3500元 | 销售一 |
455
+ | 招待 | 阿里云计算 | 1200元 | 销售二 |
456
+
457
+ ### 客户回访数据(3 条)
458
+
459
+ | 关联客户 | 回访方式 | 满意度 | 反馈标签 |
460
+ |----------|----------|--------|----------|
461
+ | 阿里云计算 | 电话 | 4.5星 | 产品满意、服务及时 |
462
+ | 腾讯科技 | 上门 | 5星 | 产品满意、价格合理 |
463
+ | 个人客户-陈先生 | 视频 | 4星 | 服务及时、需要改进 |