cloudcc-cli 2.2.8 → 2.2.9

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 (38) hide show
  1. package/.cloudcc-cache.json +32 -1
  2. package/.cursor/skills/cloudcc-cli-dev/BACKEND_CLASS.md +97 -0
  3. package/.cursor/skills/cloudcc-cli-dev/BACKEND_SCHEDULE.md +78 -0
  4. package/.cursor/skills/cloudcc-cli-dev/BACKEND_TRIGGER.md +137 -0
  5. package/.cursor/skills/cloudcc-cli-dev/CLI_CHEATSHEET.md +215 -0
  6. package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/SKILL.md +7 -2
  7. package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +151 -0
  8. package/README.md +11 -0
  9. package/bin/index.js +2 -0
  10. package/build/component-cc-test-001.common.js +831 -0
  11. package/build/component-cc-test-001.common.js.map +1 -0
  12. package/build/component-cc-test-001.css +1 -0
  13. package/build/component-cc-test-001.umd.js +874 -0
  14. package/build/component-cc-test-001.umd.js.map +1 -0
  15. package/build/component-cc-test-001.umd.min.js +8 -0
  16. package/build/component-cc-test-001.umd.min.js.map +1 -0
  17. package/build/demo.html +1 -0
  18. package/docs/CloudCC/350/207/252/345/256/232/344/271/211/347/273/204/344/273/266/344/275/277/347/224/250/350/257/264/346/230/216.md +130 -0
  19. package/docs/cloudcc/345/256/232/346/227/266/344/275/234/344/270/232.md +472 -0
  20. package/docs/cloudcc/345/256/232/346/227/266/347/261/273.md +302 -0
  21. package/docs//350/207/252/345/256/232/344/271/211/347/261/273.md +258 -0
  22. package/docs//350/247/246/345/217/221/345/231/250/347/261/273.md +404 -0
  23. package/package.json +1 -1
  24. package/plugins/cc-test-001/cc-test-001.vue +32 -0
  25. package/plugins/cc-test-001/components/HelloWorld.vue +11 -0
  26. package/plugins/cc-test-001/config.json +6 -0
  27. package/src/classes/index.js +1 -6
  28. package/src/plugin/delete.js +91 -0
  29. package/src/plugin/doc.js +76 -0
  30. package/src/plugin/index.js +1 -0
  31. package/src/triggers/doc.js +258 -222
  32. package/src/triggers/pullList.js +3 -0
  33. package/cloudcc-cli-dev/BACKEND_CODE.md +0 -114
  34. package/cloudcc-cli-dev/CLI_CHEATSHEET.md +0 -90
  35. package/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +0 -50
  36. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/INSTALL_AND_BOOTSTRAP.md +0 -0
  37. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/OBJECTS_AND_FIELDS.md +0 -0
  38. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/REQUIREMENTS_BREAKDOWN.md +0 -0
@@ -0,0 +1,472 @@
1
+ # CloudCC 定时作业完全指南
2
+
3
+ > 定时作业(Scheduled Jobs)是 CloudCC CRM 系统中的后台任务调度机制,用于在指定时间自动执行业务逻辑。
4
+
5
+ ---
6
+
7
+ ## 📌 什么是定时作业?
8
+
9
+ 定时作业是一种**自动化任务调度系统**,允许你:
10
+
11
+ - 设定任务的执行时间(如每天上午 8 点、每周一、每月 1 号)
12
+ - 关联自定义的业务逻辑代码(定时类)
13
+ - 系统自动在指定时间触发执行,无需人工干预
14
+
15
+ **类比理解:** 就像手机的闹钟功能,但触发的是业务代码而不是铃声。
16
+
17
+ ---
18
+
19
+ ## 🎯 定时作业的主要作用
20
+
21
+ ### 1. 自动化重复性任务
22
+
23
+ 将人工需要定期执行的操作自动化,例如:
24
+
25
+ - 每天发送收款提醒邮件
26
+ - 每周生成销售报表
27
+ - 每月清理过期数据
28
+
29
+ ### 2. 时间敏感的业务逻辑
30
+
31
+ 在特定时间点必须执行的操作:
32
+
33
+ - 合同到期前 30 天提醒续约
34
+ - 客户生日当天发送祝福
35
+ - 季度末自动生成业绩报告
36
+
37
+ ### 3. 后台批处理
38
+
39
+ 处理大量数据的离线任务:
40
+
41
+ - 夜间同步外部系统数据
42
+ - 批量更新客户状态
43
+ - 计算佣金和业绩
44
+
45
+ ### 4. 监控与预警
46
+
47
+ 持续监控系统状态并触发告警:
48
+
49
+ - 客户超过 15 天未联系 → 提醒销售跟进
50
+ - 收款计划逾期 → 通知财务人员
51
+ - 资产即将失效 → 自动生成业务机会
52
+
53
+ ---
54
+
55
+ ## 💡 为什么要用定时作业?
56
+
57
+ ### 对比人工操作
58
+
59
+ | 维度 | 人工操作 | 定时作业 |
60
+ |------|----------|----------|
61
+ | **准确性** | 可能遗忘、出错 | 100% 准时执行 |
62
+ | **效率** | 耗时耗力 | 自动执行,零人力成本 |
63
+ | **一致性** | 不同人操作可能有差异 | 每次执行逻辑一致 |
64
+ | **可扩展性** | 任务多了忙不过来 | 可同时运行多个任务 |
65
+ | **可追溯** | 难以追踪谁什么时候做的 | 完整执行日志 |
66
+
67
+ ### 核心价值
68
+
69
+ ```
70
+ 定时作业 = 自动化 + 准时性 + 可追溯
71
+ ```
72
+
73
+ ---
74
+
75
+ ## 🔧 定时作业能解决哪些问题?
76
+
77
+ ### 问题 1:遗忘和延误
78
+
79
+ **场景:** 销售忘记跟进客户,导致商机流失
80
+
81
+ **解决:** 设置定时作业检测客户最后联系时间,超过 15 天自动提醒
82
+
83
+ ```
84
+ ┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
85
+ │ 客户最后联系时间 │ → │ 定时作业检测 │ → │ 创建跟进活动 │
86
+ │ > 15 天 │ │ (每天 8:00) │ │ 并通知销售 │
87
+ └─────────────────┘ └──────────────┘ └─────────────────┘
88
+ ```
89
+
90
+ ### 问题 2:重复劳动效率低
91
+
92
+ **场景:** 财务人员每天手动发送收款提醒,耗时 2 小时
93
+
94
+ **解决:** 定时作业自动扫描逾期收款计划,批量发送邮件
95
+
96
+ ```
97
+ 人工方式:每天 2 小时 × 250 工作日 = 500 小时/年
98
+ 定时作业:配置 1 次,自动执行,0 小时/年
99
+ 节省:500 小时/年 ≈ 62 个工作日
100
+ ```
101
+
102
+ ### 问题 3:跨系统数据同步
103
+
104
+ **场景:** CRM 和 ERP 系统数据需要保持一致
105
+
106
+ **解决:** 定时作业每晚同步两个系统的数据
107
+
108
+ ```
109
+ ┌──────────┐ ┌──────────────┐ ┌──────────┐
110
+ │ CRM │ ←─────→ │ 定时作业同步 │ ←─────→ │ ERP │
111
+ │ 客户数据 │ 2:00 │ (每日凌晨) │ 2:30 │ 客户数据 │
112
+ └──────────┘ └──────────────┘ └──────────┘
113
+ ```
114
+
115
+ ### 问题 4:报表生成和分发
116
+
117
+ **场景:** 管理层需要定期查看各类报表
118
+
119
+ **解决:** 定时作业自动生成报表并邮件发送给相关人员
120
+
121
+ ```
122
+ 定时触发 → 查询数据 → 生成报表 → 发送邮件 → 完成
123
+
124
+ 每周一 9:00
125
+ ```
126
+
127
+ ---
128
+
129
+ ## 📚 典型业务场景
130
+
131
+ ### 场景 1:销售管理
132
+
133
+ | 场景 | 触发条件 | 执行动作 |
134
+ |------|----------|----------|
135
+ | 线索分配 | 新线索创建后 24 小时未分配 | 自动分配给销售主管 |
136
+ | 客户跟进提醒 | 客户最后联系时间 > 15 天 | 创建跟进活动并通知销售 |
137
+ | 商机推进提醒 | 商机停留当前阶段 > 30 天 | 提醒销售经理介入 |
138
+ | 业绩统计 | 每日 23:00 | 计算当日业绩并更新报表 |
139
+
140
+ ### 场景 2:客户服务
141
+
142
+ | 场景 | 触发条件 | 执行动作 |
143
+ |------|----------|----------|
144
+ | 服务到期提醒 | 服务合同到期前 30 天 | 发送续约提醒邮件 |
145
+ | 客户满意度调查 | 服务完成后 7 天 | 发送满意度调查问卷 |
146
+ | 生日祝福 | 客户生日当天 | 发送祝福短信/邮件 |
147
+ | 投诉升级 | 投诉 48 小时未处理 | 自动升级至上级主管 |
148
+
149
+ ### 场景 3:财务管理
150
+
151
+ | 场景 | 触发条件 | 执行动作 |
152
+ |------|----------|----------|
153
+ | 收款提醒 | 收款计划日期前 7 天 | 邮件通知客户和财务 |
154
+ | 逾期通知 | 收款计划逾期 1 天 | 发送逾期通知并标记 |
155
+ | 发票生成 | 确认收款后 | 自动生成并发送发票 |
156
+ | 佣金计算 | 每月 1 日 | 计算销售佣金并生成报表 |
157
+
158
+ ### 场景 4:数据维护
159
+
160
+ | 场景 | 触发条件 | 执行动作 |
161
+ |------|----------|----------|
162
+ | 数据清理 | 每周日 3:00 | 清理临时表和过期日志 |
163
+ | 数据备份 | 每日 1:00 | 备份关键数据到指定位置 |
164
+ | 数据同步 | 每日 2:00 | 同步 CRM 与外部系统数据 |
165
+ | 索引优化 | 每月 1 日 4:00 | 重建数据库索引提升性能 |
166
+
167
+ ### 场景 5:营销自动化
168
+
169
+ | 场景 | 触发条件 | 执行动作 |
170
+ |------|----------|----------|
171
+ | 营销活动提醒 | 活动开始前 3 天 | 通知参与人员准备 |
172
+ | 线索培育 | 线索创建后第 3/7/14 天 | 发送培育邮件 |
173
+ | 活动效果分析 | 活动结束后 1 天 | 生成效果分析报告 |
174
+ | 客户分群更新 | 每日 5:00 | 根据行为更新客户分群 |
175
+
176
+ ---
177
+
178
+ ## ⚙️ 技术实现
179
+
180
+ ### 定时作业结构
181
+
182
+ ```
183
+ ┌─────────────────────────────────────────────────────────┐
184
+ │ 定时作业 (Schedule Job) │
185
+ ├─────────────────────────────────────────────────────────┤
186
+ │ 基本信息 │
187
+ │ ├── 名称 (name) │
188
+ │ ├── ID (id) │
189
+ │ └── 描述 (description) │
190
+ ├─────────────────────────────────────────────────────────┤
191
+ │ 调度配置 │
192
+ │ ├── 频率类型 (frequency): daily/weekly/monthly │
193
+ │ ├── 执行时间 (executetime): 08:00 │
194
+ │ ├── 星期 (weeks): Mon,Tues,Wed,Thur,Fri │
195
+ │ ├── 开始日期 (startdate): 2024-01-01 │
196
+ │ └── 结束日期 (enddate): 2024-12-31 │
197
+ ├─────────────────────────────────────────────────────────┤
198
+ │ 关联程序 │
199
+ │ ├── 程序 ID (prgid) │
200
+ │ └── 定时类 (className): com.xxx.scheduler.MyJob │
201
+ └─────────────────────────────────────────────────────────┘
202
+ ```
203
+
204
+ ### 执行流程
205
+
206
+ ```
207
+ ┌─────────────┐
208
+ │ 系统时钟 │
209
+ └──────┬──────┘
210
+ │ 到达触发时间
211
+
212
+ ┌─────────────┐
213
+ │ 调度器检查 │ ──→ 是否在有效期内?
214
+ └──────┬──────┘ ──→ 状态是否激活?
215
+ │ 是
216
+
217
+ ┌─────────────┐
218
+ │ 加载定时类 │
219
+ └──────┬──────┘
220
+
221
+
222
+ ┌─────────────┐
223
+ │ 执行 main() │
224
+ └──────┬──────┘
225
+
226
+
227
+ ┌─────────────┐
228
+ │ 记录执行日志 │
229
+ └─────────────┘
230
+ ```
231
+
232
+ ### 定时类示例
233
+
234
+ ```javascript
235
+ /**
236
+ * 定时类:客户长时间未联系自动新建活动
237
+ * 程序 ID: ccp20213DC20298RebnS
238
+ */
239
+ function main($CCDK, obj) {
240
+ // 1. 查询超过 15 天未联系的客户
241
+ const fifteenDaysAgo = new Date();
242
+ fifteenDaysAgo.setDate(fifteenDaysAgo.getDate() - 15);
243
+
244
+ const customers = $CCDK.query(`
245
+ SELECT Id, Name, OwnerId
246
+ FROM Account
247
+ WHERE LastActivityDate < '${fifteenDaysAgo.toISOString()}'
248
+ `);
249
+
250
+ // 2. 为每个客户创建跟进活动
251
+ customers.forEach(customer => {
252
+ $CCDK.create('Activity', {
253
+ Subject: `跟进客户:${customer.Name}`,
254
+ Type: 'Call',
255
+ Status: 'Not Started',
256
+ OwnerId: customer.OwnerId,
257
+ RelatedToId: customer.Id
258
+ });
259
+ });
260
+
261
+ return `已为 ${customers.length} 个客户创建跟进活动`;
262
+ }
263
+ ```
264
+
265
+ ---
266
+
267
+ ## 📊 实际案例(来自你的系统)
268
+
269
+ ### 案例 1:客户长时间未联系新建活动
270
+
271
+ ```
272
+ ┌─────────────────────────────────────────────────────┐
273
+ │ 作业名称:客户长时间未联系新建活动 │
274
+ ├─────────────────────────────────────────────────────┤
275
+ │ 执行时间:每天 上午 8:00 │
276
+ │ 有效期:2021-12-04 ~ 2033-12-21 │
277
+ │ 状态:✅ 运行中 │
278
+ │ │
279
+ │ 业务逻辑: │
280
+ │ 1. 扫描所有客户,找出最后联系时间 > 15 天的 │
281
+ │ 2. 为每个客户自动创建"跟进"活动 │
282
+ │ 3. 活动分配给对应的销售负责人 │
283
+ │ │
284
+ │ 价值:防止销售遗忘客户跟进,提升客户满意度 │
285
+ └─────────────────────────────────────────────────────┘
286
+ ```
287
+
288
+ ### 案例 2:计划收款日期 7 天后发送邮件
289
+
290
+ ```
291
+ ┌─────────────────────────────────────────────────────┐
292
+ │ 作业名称:计划收款日期 7 天后发送邮件 │
293
+ ├─────────────────────────────────────────────────────┤
294
+ │ 执行时间:每天 上午 8:00 │
295
+ │ 有效期:2021-12-10 ~ 2034-12-31 │
296
+ │ 状态:✅ 运行中 │
297
+ │ │
298
+ │ 业务逻辑: │
299
+ │ 1. 查询收款计划日期 = 今天 + 7 天的记录 │
300
+ │ 2. 发送邮件给客户提醒付款 │
301
+ │ 3. 抄送财务人员和对应销售 │
302
+ │ │
303
+ │ 价值:提前提醒客户付款,降低逾期率,改善现金流 │
304
+ └─────────────────────────────────────────────────────┘
305
+ ```
306
+
307
+ ### 案例 3:资产失效三个月自动生成业务机会
308
+
309
+ ```
310
+ ┌─────────────────────────────────────────────────────┐
311
+ │ 作业名称:资产失效三个月自动生成业务机会 │
312
+ ├─────────────────────────────────────────────────────┤
313
+ │ 执行时间:每天 凌晨 1:00 │
314
+ │ 有效期:2021-12-10 ~ 2033-12-31 │
315
+ │ 状态:✅ 运行中 │
316
+ │ │
317
+ │ 业务逻辑: │
318
+ │ 1. 查询资产失效时间 = 今天 - 3 个月的记录 │
319
+ │ 2. 自动创建新的业务机会(续费/升级) │
320
+ │ 3. 分配给原销售或客户经理 │
321
+ │ │
322
+ │ 价值:抓住续费时机,提升客户生命周期价值 │
323
+ └─────────────────────────────────────────────────────┘
324
+ ```
325
+
326
+ ### 案例 4:报表订阅(已过期)
327
+
328
+ ```
329
+ ┌─────────────────────────────────────────────────────┐
330
+ │ 作业名称:报表订阅 - 销售部收款统计报表 │
331
+ ├─────────────────────────────────────────────────────┤
332
+ │ 执行时间:每月 10 日 下午 4:00 │
333
+ │ 有效期:2025-01-01 ~ 2025-02-28 ⚠️ 已过期 │
334
+ │ 状态:⚠️ 需要续期或停用 │
335
+ │ │
336
+ │ 业务逻辑: │
337
+ │ 1. 生成销售部收款统计报表 │
338
+ │ 2. 发送邮件给销售总监和财务经理 │
339
+ │ │
340
+ │ 建议:如仍需此报表,需更新有效期 │
341
+ └─────────────────────────────────────────────────────┘
342
+ ```
343
+
344
+ ---
345
+
346
+ ## 🎓 最佳实践
347
+
348
+ ### 1. 合理设置执行时间
349
+
350
+ ```
351
+ ✅ 推荐:
352
+ - 报表生成:非工作时间(如 23:00 或凌晨)
353
+ - 邮件通知:工作时间开始前(如 8:00)
354
+ - 数据同步:系统负载低时(如 2:00-4:00)
355
+
356
+ ❌ 避免:
357
+ - 业务高峰期执行大量数据处理
358
+ - 多个重任务同时执行
359
+ ```
360
+
361
+ ### 2. 设置合理的有效期
362
+
363
+ ```
364
+ ✅ 推荐:
365
+ - 长期任务:设置 5-10 年有效期
366
+ - 临时任务:设置明确结束日期
367
+ - 定期审查:每季度检查过期任务
368
+
369
+ ❌ 避免:
370
+ - 不设置结束日期(永久运行)
371
+ - 过期任务不处理(占用系统资源)
372
+ ```
373
+
374
+ ### 3. 错误处理和日志
375
+
376
+ ```javascript
377
+ function main($CCDK, obj) {
378
+ try {
379
+ // 业务逻辑
380
+ const result = doSomething();
381
+ return `成功:${result}`;
382
+ } catch (error) {
383
+ // 记录错误日志
384
+ $CCDK.log(`定时作业执行失败:${error.message}`);
385
+ // 发送告警通知
386
+ sendAlertToAdmin(error);
387
+ throw error; // 让系统记录失败状态
388
+ }
389
+ }
390
+ ```
391
+
392
+ ### 4. 性能优化
393
+
394
+ ```
395
+ ✅ 推荐:
396
+ - 批量操作代替循环单条处理
397
+ - 使用分页查询避免内存溢出
398
+ - 异步处理非关键逻辑
399
+
400
+ ❌ 避免:
401
+ - 单次查询大量数据(>10000 条)
402
+ - 在定时作业中调用外部 API(无超时控制)
403
+ - 长时间运行的任务(>30 分钟)
404
+ ```
405
+
406
+ ### 5. 监控和告警
407
+
408
+ ```
409
+ 建议配置:
410
+ - 执行失败时发送邮件/短信告警
411
+ - 定期检查执行日志
412
+ - 监控任务执行时长变化
413
+ ```
414
+
415
+ ---
416
+
417
+ ## 📋 管理操作
418
+
419
+ ### 查询定时作业
420
+
421
+ ```bash
422
+ # 获取列表
423
+ POST /ccsetup/api/schedulAbleprg/list
424
+
425
+ # 获取详细信息
426
+ POST /ccsetup/api/schedulAbleprg/edit
427
+ Body: { "id": "作业 ID" }
428
+ ```
429
+
430
+ ### 常见管理需求
431
+
432
+ | 需求 | 操作 |
433
+ |------|------|
434
+ | 查看有哪些定时作业 | 调用 list 接口 |
435
+ | 查看作业详细配置 | 调用 edit 接口 |
436
+ | 启用/禁用作业 | 修改作业状态(需管理权限) |
437
+ | 修改执行时间 | 编辑作业的 executetime 和 frequency |
438
+ | 延长有效期 | 更新 enddate 字段 |
439
+ | 创建新作业 | 使用 cloudcc-cli 创建定时类并配置调度 |
440
+
441
+ ---
442
+
443
+ ## 🚨 常见问题
444
+
445
+ ### Q1: 定时作业不执行怎么办?
446
+
447
+ **检查清单:**
448
+ 1. 当前日期是否在有效期内?
449
+ 2. 作业状态是否为激活?
450
+ 3. 定时类代码是否有错误?
451
+ 4. 系统日志是否有报错?
452
+
453
+ ### Q2: 如何调试定时作业?
454
+
455
+ **方法:**
456
+ 1. 在代码中添加日志输出
457
+ 2. 手动执行定时类测试逻辑
458
+ 3. 查看系统执行日志
459
+ 4. 设置测试环境验证
460
+
461
+ ### Q3: 定时作业可以传递参数吗?
462
+
463
+ **答案:** 可以。在配置定时作业时设置参数,在定时类中通过 `obj` 参数接收。
464
+
465
+ ### Q4: 定时作业执行失败会重试吗?
466
+
467
+ **答案:** 默认不自动重试。建议在代码中实现重试逻辑或配置告警通知人工处理。
468
+
469
+ ---
470
+
471
+
472
+ *最后更新:2026-03-25*