cloudcc-cli 2.3.8 → 2.4.0

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 (66) hide show
  1. package/.cursor/skills/{cloudcc-cli-dev → dev-guide}/SKILL.md +5 -1
  2. package/README.md +82 -1
  3. package/bin/cc.js +2 -1
  4. package/bin/index.js +1 -0
  5. package/cloudcc-dev-skill/SKILL.md +31 -8
  6. package/cloudcc-dev-skill/cloudcc-dev-html.md +42 -0
  7. package/cloudcc-dev-skill/config.json +2 -2
  8. package/mcp/index.js +27 -3
  9. package/mcp/tools/JSP Migrator/handler.js +51 -866
  10. package/mcp/tools/Object Creator/handler.js +14 -4
  11. package/mcp/tools/Object Fields Creator/handler.js +149 -3
  12. package/package.json +1 -1
  13. package/src/classes/docs/devguide.md +758 -364
  14. package/src/classes/docs/introduction.md +279 -143
  15. package/src/fields/buildFieldData.js +692 -0
  16. package/src/fields/create.js +10 -170
  17. package/src/fields/detail.js +37 -0
  18. package/src/fields/docs/devguide.md +168 -44
  19. package/src/fields/docs/introduction.md +2 -0
  20. package/src/fields/fields/A.js +3 -2
  21. package/src/fields/fields/AD.js +4 -2
  22. package/src/fields/fields/B.js +8 -5
  23. package/src/fields/fields/C.js +13 -5
  24. package/src/fields/fields/D.js +4 -4
  25. package/src/fields/fields/E.js +10 -5
  26. package/src/fields/fields/ENC.js +27 -8
  27. package/src/fields/fields/ENCD.js +27 -8
  28. package/src/fields/fields/F.js +4 -4
  29. package/src/fields/fields/FL.js +8 -4
  30. package/src/fields/fields/H.js +4 -4
  31. package/src/fields/fields/IMG.js +23 -5
  32. package/src/fields/fields/J.js +21 -6
  33. package/src/fields/fields/L.js +32 -8
  34. package/src/fields/fields/LT.js +23 -6
  35. package/src/fields/fields/M.js +2 -2
  36. package/src/fields/fields/MR.js +2 -2
  37. package/src/fields/fields/N.js +31 -8
  38. package/src/fields/fields/P.js +13 -5
  39. package/src/fields/fields/Q.js +42 -12
  40. package/src/fields/fields/S.js +19 -7
  41. package/src/fields/fields/SCORE.js +9 -4
  42. package/src/fields/fields/T.js +4 -4
  43. package/src/fields/fields/U.js +18 -5
  44. package/src/fields/fields/X.js +20 -6
  45. package/src/fields/fields/Y.js +17 -4
  46. package/src/fields/index.js +2 -0
  47. package/src/fields/update.js +148 -0
  48. package/src/jsp/analyze.js +17 -0
  49. package/src/jsp/doc.js +18 -0
  50. package/src/jsp/docs/devguide.md +111 -0
  51. package/src/jsp/docs/introduction.md +50 -0
  52. package/src/jsp/docs.js +21 -0
  53. package/src/jsp/index.js +14 -0
  54. package/src/jsp/migration.js +871 -0
  55. package/src/jsp/split.js +17 -0
  56. package/src/object/create.js +36 -10
  57. package/src/object/docs/devguide.md +6 -3
  58. package/src/project/docs/devguide.md +1 -1
  59. package/src/timer/docs/devguide.md +849 -400
  60. package/src/timer/docs/introduction.md +343 -231
  61. package/src/triggers/docs/devguide.md +929 -352
  62. package/src/triggers/docs/introduction.md +640 -369
  63. package/src/version/listModuleCommands.js +6 -0
  64. package/test/fields.cli.test.js +3 -1
  65. package/test/jsp.cli.test.js +70 -0
  66. package/test/object.cli.test.js +9 -1
@@ -1,302 +1,414 @@
1
- # CloudCC 定时类使用指南
1
+ # CloudCC 定时器类分析说明
2
2
 
3
- ## 一、什么是定时类
3
+ ## 1. 分析口径
4
4
 
5
- **定时类(Scheduled Class)** 是 CloudCC 平台中用于**定时自动执行任务**的 Java 代码组件。它允许开发者编写自定义业务逻辑,按照预设的时间规则(如每天、每周、每月)自动运行,无需人工干预。
5
+ 本文用于回答以下问题:
6
6
 
7
- ---
7
+ - 定时器类能干什么
8
+ - 定时器类的主要作用是什么
9
+ - 为什么要用定时器类
10
+ - 定时器类能解决哪些问题
11
+ - 在什么情况下使用
12
+ - 在什么业务场景下使用
8
13
 
9
- ## 二、定时类能干什么
14
+ ## 2. 定时器类是什么
10
15
 
11
- 基于线上实际运行的定时类案例,定时类主要能完成以下任务:
16
+ 定时器类是运行在 CloudCC 服务端、由调度机制按时间规则自动触发执行的 Java 业务代码载体。
12
17
 
13
- ### 1. 📧 自动通知与提醒
18
+ 它的核心特征不是“谁触发”,而是“什么时候触发”。
14
19
 
15
- **场景示例:**
16
- - **计划收款日期 7 天后发送邮件**:在计划收款日期到期 7 天后,自动发送邮件提醒相关人员
17
- - **15 日没有更新的线索提醒线索管理者**:检测超过 15 天未更新的线索,自动提醒线索管理者跟进
20
+ 如果说:
18
21
 
19
- **解决的问题:**
20
- - 避免人工遗忘重要时间节点
21
- - 确保关键业务通知及时送达
22
- - 减少重复性人工操作
22
+ - 触发器更偏向“某条记录发生变化时立刻执行”
23
+ - 自定义类更偏向“承载可复用业务能力”
24
+ - 定时器类更偏向“按时间批量扫描并自动执行”
23
25
 
24
- ---
26
+ 那么定时器类就是 CloudCC 中典型的“后台自动作业”实现方式。
25
27
 
26
- ### 2. 👥 客户关怀与销售提醒
28
+ 在当前项目里,定时器类通常会按如下模式工作:
27
29
 
28
- **场景示例:**
29
- - **客户长时间未联系新建活动通知销售**:根据客户分级(一般/重点/战略),在未联系达到指定天数(30/20/10 天)时,自动创建任务提醒销售跟进
30
+ - 查询一批满足条件的数据
31
+ - 判断是否达到某个时间点、状态点或规则阈值
32
+ - 执行更新、生成、同步、提醒或推进动作
33
+ - 回写执行结果、状态、标记或日志
30
34
 
31
- **解决的问题:**
32
- - 防止客户流失
33
- - 确保销售按节奏跟进客户
34
- - 差异化客户管理策略自动执行
35
+ 因此,定时器类更适合承接那些:
35
36
 
36
- ---
37
+ - 周期性发生
38
+ - 规则相对稳定
39
+ - 需要批量处理
40
+ - 不要求毫秒级实时
41
+ - 需要后台自动运行
37
42
 
38
- ### 3. 💼 商机自动生成
43
+ 的业务任务。
39
44
 
40
- **场景示例:**
41
- - **资产失效三个月自动生成业务机会**:检测失效时间满 3 个月的资产,自动创建维保业务机会(Opportunity)
45
+ ## 3. 定时器类能干什么
42
46
 
43
- **解决的问题:**
44
- - 挖掘二次销售机会
45
- - 避免商机遗漏
46
- - 自动化销售漏斗填充
47
+ ### 3.1 主动提醒与催办
47
48
 
48
- ---
49
+ 定时器类可以自动识别“超期未处理”“长时间未推进”“达到提醒时间点”的业务记录,然后:
49
50
 
50
- ### 4. 📊 数据同步与推送
51
+ - 发送邮件
52
+ - 创建任务
53
+ - 发起催办
54
+ - 通知负责人、区域负责人、项目经理等角色
51
55
 
52
- **场景示例:**
53
- - **全量分月凭证推送**:定时将凭证数据推送到外部系统(如财务系统)
56
+ 这类能力通常用于解决“人容易忘记,但业务又必须被持续跟进”的问题。
54
57
 
55
- **解决的问题:**
56
- - 系统间数据一致性
57
- - 减少人工导出导入
58
- - 确保数据及时同步
58
+ ### 3.2 数据同步与外部系统集成
59
59
 
60
- ---
60
+ 一批定时器明显承担了平台与外围系统之间的同步职责。
61
61
 
62
- ### 5. 📝 定期报告与任务创建
62
+ 它们可以:
63
63
 
64
- **场景示例:**
65
- - **每季度提醒区域总更新城市调研报告**:定期提醒区域负责人更新调研报告
66
- - **定时创建任务**:按规则批量创建任务记录
64
+ - 按批次推送数据到 SAP、财务、采购等系统
65
+ - 定时调用外部接口
66
+ - 同步字典、主数据或经营数据
67
+ - 对失败任务做补偿性重试
68
+ - 将外部系统结果回写到 CloudCC
67
69
 
68
- **解决的问题:**
69
- - 周期性工作自动化
70
- - 确保合规性要求
71
- - 减少管理成本
70
+ 这使定时器类成为“跨系统定时对接层”的重要落点。
72
71
 
73
- ---
72
+ ### 3.3 数据刷新、修正与回填
74
73
 
75
- ## 三、为什么要用定时类
74
+ 这是数量最多的一类。
76
75
 
77
- ### 对比人工操作
76
+ 定时器类可以:
78
77
 
79
- | 维度 | 人工操作 | 定时类 |
80
- |------|----------|--------|
81
- | **准确性** | 容易遗漏、出错 | 100% 按规则执行 |
82
- | **及时性** | 依赖记忆和自觉 | 准时触发 |
83
- | **成本** | 人力成本高 | 一次开发,长期受益 |
84
- | **可扩展性** | 难以处理大量数据 | 可批量处理 |
85
- | **可追溯性** | 难以追踪 | 有执行日志 |
78
+ - 刷新派生字段
79
+ - 修正历史数据
80
+ - 回填缺失值
81
+ - 统一编号、状态、负责人或关联关系
82
+ - 批量修复迁移后遗留问题
83
+ - 对旧数据重新计算并回写结果
86
84
 
87
- ### 核心价值
85
+ 这类任务通常不是新建记录时立即完成,而是要通过后台批量方式持续治理。
88
86
 
89
- 1. **自动化**:将重复性、规则明确的工作交给系统
90
- 2. **标准化**:确保业务流程按统一标准执行
91
- 3. **效率提升**:释放人力,专注于高价值工作
92
- 4. **风险控制**:避免因人为疏忽导致的业务损失
87
+ ### 3.4 报表、底表与看板支撑
93
88
 
94
- ---
89
+ 一批定时器并不直接面向业务动作,而是面向分析层。
95
90
 
96
- ## 四、什么情况下使用定时类
91
+ 它们可以:
97
92
 
98
- ### ✅ 适合使用定时类的场景
93
+ - 构建经营底表
94
+ - 汇总报表数据
95
+ - 刷新台账
96
+ - 为看板预计算分析结果
97
+ - 让前台报表直接读取已加工的数据层
99
98
 
100
- | 特征 | 说明 | 案例 |
101
- |------|------|------|
102
- | **周期性** | 需要按固定频率执行 | 每天、每周、每月 |
103
- | **规则明确** | 执行逻辑清晰、可编码 | 如果 A 则 B |
104
- | **批量处理** | 需要处理大量数据 | 遍历所有客户 |
105
- | **时间敏感** | 需要在特定时间点执行 | 到期提醒 |
106
- | **跨系统** | 需要与外部系统交互 | 数据推送 |
107
- | **易遗漏** | 人工容易忘记 | 客户关怀 |
99
+ 这说明定时器类不仅处理业务流程,也承担了部分“分析型数据加工层”的职责。
108
100
 
109
- ### 不适合使用定时类的场景
101
+ ### 3.5 自动生成下游对象或推进流程
110
102
 
111
- | 场景 | 原因 | 建议方案 |
112
- |------|------|----------|
113
- | **实时性要求极高** | 定时类有执行间隔 | 使用触发器(Trigger) |
114
- | **需要人工判断** | 逻辑无法编码 | 人工审批流程 |
115
- | **一次性任务** | 开发成本不划算 | 手动执行或脚本 |
116
- | **频繁变更的规则** | 维护成本高 | 配置化方案 |
103
+ 部分定时器会在满足条件时自动创建新的业务对象,或者自动推进节点。
117
104
 
118
- ---
105
+ 这类能力包括:
119
106
 
120
- ## 五、典型业务场景
107
+ - 自动生成服务商机
108
+ - 自动生成分期、产品线等派生记录
109
+ - 自动创建项目目录或资料结构
110
+ - 自动推进里程碑节点
111
+ - 在满足条件时自动翻牌或进入下一阶段
121
112
 
122
- ### 场景 1:销售管理
113
+ 本质上,这类定时器承担的是“流程衔接自动化”职责。
123
114
 
124
- ```
125
- 问题:销售忘记跟进客户,导致客户流失
115
+ ### 3.6 权限、共享与负责人治理
126
116
 
127
- 定时类方案:
128
- - 每天上午 8 点执行
129
- - 查询所有客户的"未联系天数"
130
- - 根据客户分级判断是否需要提醒
131
- - 自动创建任务或发送邮件
132
- ```
117
+ 还有一小批定时器明确承担治理类工作。
133
118
 
134
- ### 场景 2:财务管理
119
+ 它们可以:
135
120
 
136
- ```
137
- 问题:收款提醒不及时,影响回款率
121
+ - 根据负责人变化重算共享关系
122
+ - 自动补齐读写权限
123
+ - 删除过期或错误共享
124
+ - 保证相关对象上的责任人和访问权限保持一致
138
125
 
139
- 定时类方案:
140
- - 每天检查计划收款日期
141
- - 提前 7 天发送邮件提醒
142
- - 逾期 3 天升级通知上级
143
- ```
126
+ 这类任务适合放在后台批量执行,因为它们通常涉及多对象、多角色联动。
144
127
 
145
- ### 场景 3:客户服务
128
+ ## 4. 定时器类与触发器、自定义类的区别
146
129
 
147
- ```
148
- 问题:资产到期后未及时发现二次销售机会
130
+ 在当前项目里,这三类能力的分工非常清楚。
149
131
 
150
- 定时类方案:
151
- - 每天凌晨 1 点执行
152
- - 查询失效满 3 个月的资产
153
- - 自动生成维保业务机会
154
- - 分配给对应销售人员
155
- ```
132
+ ### 4.1 定时器类
156
133
 
157
- ### 场景 4:数据管理
134
+ 重点解决“按时间自动执行”的问题。
158
135
 
159
- ```
160
- 问题:线索长期不更新,数据质量下降
136
+ 适合:
161
137
 
162
- 定时类方案:
163
- - 每天检查线索最后更新时间
164
- - 超过 15 天未更新的线索
165
- - 提醒线索管理者跟进
166
- ```
138
+ - 每天、每周、每月定时执行
139
+ - 达到某个日期后处理
140
+ - 扫全量或扫增量数据
141
+ - 失败补偿和后台批处理
167
142
 
168
- ### 场景 5:系统集成
143
+ ### 4.2 触发器
169
144
 
170
- ```
171
- 问题:CRM 与财务系统数据不同步
145
+ 重点解决“记录发生变化时立即执行”的问题。
172
146
 
173
- 定时类方案:
174
- - 每月 10 日下午 4 点执行
175
- - 导出当月凭证数据
176
- - 推送到财务系统
177
- - 记录同步日志
178
- ```
179
-
180
- ---
181
-
182
- ## 六、定时类技术特点
183
-
184
- ### 开发规范
147
+ 适合:
185
148
 
186
- ```java
187
- package schedule.定时类名称;
149
+ - 新增、修改、删除时立即校验
150
+ - 实时联动
151
+ - 单次事务内必须完成的控制
188
152
 
189
- import com.cloudcc.core.*;
153
+ ### 4.3 自定义类
190
154
 
191
- public class 定时类名称 extends CCSchedule {
192
- public 定时类名称() {
193
- // @SOURCE_CONTENT_START
194
-
195
- // 业务逻辑写在这里
196
- CCService cs = new CCService(userInfo);
197
- List<CCObject> list = cs.cquery("Object", "条件");
198
-
199
- // @SOURCE_CONTENT_END
200
- }
201
- }
202
- ```
155
+ 重点解决“业务能力复用”的问题。
203
156
 
204
- ### 可用 API
157
+ 适合:
205
158
 
206
- | 方法 | 说明 |
207
- |------|------|
208
- | `cs.cquery(对象,条件)` | 查询对象列表 |
209
- | `cs.insert(对象)` | 插入单条记录 |
210
- | `cs.insertLt(对象)` | 批量插入 |
211
- | `cs.update(对象)` | 更新单条记录 |
212
- | `cs.updateLt(对象)` | 批量更新 |
213
- | `SendEmail.sendMailFromSystem()` | 发送系统邮件 |
159
+ - 承载复杂逻辑
160
+ - 被按钮、页面、触发器、定时器共同调用
161
+ - 作为服务层或工具层复用
214
162
 
215
- ### 执行上下文
163
+ 因此,定时器类通常不是独立存在的,它往往会调用自定义类完成核心业务处理,只是负责把执行时机放到“定时调度”上。
216
164
 
217
- - **userInfo**:当前执行用户信息(通常为系统管理员)
218
- - **事务**:定时类在独立事务中执行
219
- - **超时**:单次执行有超时限制(通常 30 分钟)
220
- - **日志**:执行日志可在后台查看
165
+ ## 5. 定时器类的主要作用是什么
221
166
 
222
- ---
167
+ 综合来看,当前项目中的定时器类主要作用可以概括为以下 5 点。
223
168
 
224
- ## 七、最佳实践
169
+ ### 5.1 把重复性业务自动化
225
170
 
226
- ### 1. 幂等性设计
227
-
228
- ```java
229
- // ✅ 推荐:检查是否已处理
230
- if ("否".equals(obj.get("sfscwbjh"))) {
231
- // 执行业务逻辑
232
- obj.put("sfscwbjh", "是");
233
- cs.update(obj);
234
- }
171
+ 将每天、每周、每月都要做的动作交给系统自动执行,减少人工反复处理。
235
172
 
236
- // 避免:重复执行会产生重复数据
237
- ```
173
+ ### 5.2 把时间规则系统化
238
174
 
239
- ### 2. 批量处理
175
+ 把“超期多久提醒”“每月何时同步”“月底何时汇总”“节点满足后何时推进”等规则固化到后台执行逻辑中。
240
176
 
241
- ```java
242
- // ✅ 推荐:批量插入/更新
243
- List<CCObject> batch = new ArrayList<>();
244
- for (CCObject obj : list) {
245
- batch.add(obj);
246
- if (batch.size() >= 200) {
247
- cs.insertLt(batch);
248
- batch.clear();
249
- }
250
- }
251
- if (batch.size() > 0) {
252
- cs.insertLt(batch);
253
- }
177
+ ### 5.3 把批量治理放到后台
254
178
 
255
- // ❌ 避免:循环中单条操作
256
- ```
179
+ 让历史修正、状态重算、字段回填、编号修复、共享重算等任务不占用前台实时事务。
257
180
 
258
- ### 3. 异常处理
259
-
260
- ```java
261
- // ✅ 推荐:捕获异常,记录日志
262
- try {
263
- // 业务逻辑
264
- } catch (Exception e) {
265
- System.out.println("错误:" + e.getMessage());
266
- // 或记录到自定义对象
267
- }
268
- ```
181
+ ### 5.4 作为流程推进器
269
182
 
270
- ### 4. 性能优化
271
-
272
- ```java
273
- // ✅ 推荐:减少查询次数
274
- // 先批量查询,再内存处理
275
- List<CCObject> all = cs.cquery("Account", "1=1");
183
+ 在业务推进过程中,定时器类可以主动发现卡点、补齐动作、推进后续节点。
276
184
 
277
- // 避免:循环中查询
278
- for (CCObject obj : list) {
279
- cs.cquery("Contact", "accountid='" + obj.get("id") + "'"); // 慢!
280
- }
281
- ```
282
-
283
- ---
284
-
285
- ## 八、总结
286
-
287
- **定时类是 CloudCC 平台自动化能力的核心组件**,它让系统能够:
288
-
289
- - ⏰ **按时执行**:在预设时间自动运行
290
- - 🔄 **批量处理**:高效处理大量数据
291
- - 🔗 **系统集成**:连接外部系统
292
- - 📢 **主动通知**:邮件、任务、短信提醒
293
- - 💡 **智能决策**:基于规则自动创建商机、任务等
294
-
295
- **适用场景关键词**:周期性、规则明确、批量、时间敏感、易遗漏
296
-
297
- **核心价值**:释放人力、提升效率、降低风险、确保标准化
298
-
299
- ---
185
+ ### 5.5 作为系统之间的批处理桥梁
300
186
 
301
- *文档基于线上实际运行的 9 个定时类案例总结*
302
- *最后更新:2026-03-25*
187
+ CloudCC 与 SAP、财务、采购、主数据源之间,定时器类常常承担定时推送、失败补偿、周期同步的桥梁角色。
188
+
189
+ ## 6. 为什么要用定时器类
190
+
191
+ ### 6.1 因为很多业务不是实时触发,而是时间触发
192
+
193
+ 有些动作不是记录一保存就该执行,而是:
194
+
195
+ - 到期前提醒
196
+ - 到期后催办
197
+ - 每月汇总
198
+ - 月初同步
199
+ - 过几天未处理再通知
200
+
201
+ 这类任务天然更适合定时器,而不是触发器。
202
+
203
+ ### 6.2 因为人工执行不稳定
204
+
205
+ 如果依赖人工每天查报表、盯超时、做同步、补修数据,往往会出现:
206
+
207
+ - 忘记执行
208
+ - 执行不及时
209
+ - 执行标准不一致
210
+ - 执行后缺少留痕
211
+
212
+ 定时器类可以把这些动作标准化、自动化。
213
+
214
+ ### 6.3 因为批量任务不适合塞进实时事务
215
+
216
+ 很多任务需要:
217
+
218
+ - 扫描大量记录
219
+ - 汇总计算
220
+ - 调接口
221
+ - 修复历史数据
222
+
223
+ 如果放在触发器或页面动作里,会拖慢实时链路,甚至影响用户操作体验。
224
+
225
+ ### 6.4 因为需要失败补偿能力
226
+
227
+ 跨系统同步和推送很难保证每次都成功。
228
+
229
+ 定时器类可以:
230
+
231
+ - 按批次重试
232
+ - 定时补偿失败数据
233
+ - 异常后通知相关人员
234
+ - 用后台重跑方式恢复业务连续性
235
+
236
+ ### 6.5 因为需要长期治理而不是一次性处理
237
+
238
+ 很多问题不是一次脚本能彻底解决,而是需要长期巡检、长期修正、长期维护。
239
+
240
+ 这类治理型任务最适合放到定时器体系中持续运行。
241
+
242
+ ## 7. 定时器类能解决哪些问题
243
+
244
+ 从当前项目的定时器分布看,它们主要在解决以下问题。
245
+
246
+ ### 7.1 解决“业务节点没人盯”的问题
247
+
248
+ 例如:
249
+
250
+ - 商机超期无人处理
251
+ - 合同评审后迟迟不移交
252
+ - 线索长时间未分配、未确认、未推进
253
+ - 负责人没有及时跟进
254
+
255
+ ### 7.2 解决“系统间数据不同步”的问题
256
+
257
+ 例如:
258
+
259
+ - CRM 与 SAP 经营数据不同步
260
+ - 项目、合同、回款、采购等外围系统接口调用失败
261
+ - 字典或主数据需要周期同步
262
+
263
+ ### 7.3 解决“历史数据脏乱差”的问题
264
+
265
+ 例如:
266
+
267
+ - 编号缺失或不规范
268
+ - 派生字段长期不准确
269
+ - 迁移后旧数据未补齐
270
+ - 负责人、状态、共享关系不一致
271
+
272
+ ### 7.4 解决“报表口径不稳”的问题
273
+
274
+ 例如:
275
+
276
+ - 看板依赖的底表没有持续刷新
277
+ - 台账数据与业务对象不一致
278
+ - 报表统计需要预加工
279
+
280
+ ### 7.5 解决“流程到了但动作没跟上”的问题
281
+
282
+ 例如:
283
+
284
+ - 条件满足后没有自动生成下游记录
285
+ - 节点可以推进但没有及时翻牌
286
+ - 派生对象没有按规则创建
287
+
288
+ ## 7. 在什么情况下使用定时器类
289
+
290
+ 定时器类最适合以下场景。
291
+
292
+ ### 8.1 周期性任务
293
+
294
+ 例如:
295
+
296
+ - 每天执行
297
+ - 每周执行
298
+ - 每月执行
299
+ - 月初、月末执行
300
+
301
+ ### 8.2 时间敏感但不要求实时
302
+
303
+ 例如:
304
+
305
+ - 提前 7 天提醒
306
+ - 超过 15 天未更新即通知
307
+ - 每晚统一批处理
308
+
309
+ ### 8.3 需要批量扫描与批量处理
310
+
311
+ 例如:
312
+
313
+ - 扫全部项目
314
+ - 扫昨日变更数据
315
+ - 扫本月待同步记录
316
+ - 扫失败记录并补偿
317
+
318
+ ### 8.4 需要将重计算放到后台
319
+
320
+ 例如:
321
+
322
+ - 经营底表重建
323
+ - 历史数据修正
324
+ - 权限重算
325
+ - 派生字段统一刷新
326
+
327
+ ### 8.5 需要系统自动巡检
328
+
329
+ 例如:
330
+
331
+ - 巡检超时事项
332
+ - 巡检未完成流程
333
+ - 巡检缺失数据
334
+ - 巡检失败接口
335
+
336
+ ## 9. 什么情况下不适合用定时器类
337
+
338
+ 以下场景一般不适合优先使用定时器类。
339
+
340
+ ### 9.1 强实时控制场景
341
+
342
+ 如果用户保存数据时必须立刻校验、立刻拦截、立刻联动,那么更适合使用触发器。
343
+
344
+ ### 9.2 强交互场景
345
+
346
+ 如果动作依赖用户逐步确认、页面即时反馈、人工选择分支,那么更适合页面按钮、组件或流程交互。
347
+
348
+ ### 9.3 一次性临时任务
349
+
350
+ 如果只是临时清洗一次数据,通常更适合脚本或临时类,而不一定需要长期保留一个定时器。
351
+
352
+ ### 9.4 需要复杂人工判断的场景
353
+
354
+ 如果业务结论高度依赖人工判断、审批意见或线下协同,定时器类通常只能做提醒,不能替代人工决策。
355
+
356
+ ## 10. 典型业务场景
357
+
358
+ 结合当前项目现状,定时器类主要落在以下业务场景。
359
+
360
+ ### 10.1 销售与线索管理
361
+
362
+ - 线索待分配、待确认、待决策、重复线索提醒
363
+ - 商机超时提醒
364
+ - 赢单、失单分析提醒
365
+ - 商机移交时间更新提醒
366
+
367
+ ### 10.2 合同、报价与审批协同
368
+
369
+ - 合同评审提醒
370
+ - 移交合同提醒
371
+ - 报价单催办
372
+ - 合同额分配表催办
373
+ - 合同相关状态和底表更新
374
+
375
+ ### 10.3 项目交付与里程碑推进
376
+
377
+ - 项目出厂自动翻牌
378
+ - 配置管理各阶段自动更新
379
+ - 项目、开箱单、资产台账类数据刷新
380
+ - 项目目录或资料结构自动创建
381
+
382
+ ### 10.4 财务、经营与集成
383
+
384
+ - 预计总成本、预算、回款流水定时推送
385
+ - 记账接口、采购接口调用
386
+ - 收入看板底表更新
387
+ - 月初、月末经营数据同步
388
+
389
+ ### 10.5 主数据与基础资料治理
390
+
391
+ - 省市信息接口同步
392
+ - 客户信息、交通信息、工业园区信息补齐
393
+ - 产品线、规格、付款方式、物料类数据刷新
394
+
395
+ ### 10.6 权限与共享治理
396
+
397
+ - 商机权限自动维护
398
+ - 合同负责人变更后的共享修正
399
+ - 项目负责人变更后的共享修正
400
+
401
+ ## 11. 总结
402
+
403
+ 一句话概括,当前项目中的定时器类适合承接“时间驱动、规则明确、批量执行、允许后台处理”的业务自动化任务。
404
+
405
+ 它们的价值不只是“定时跑代码”,而是把以下能力持续、稳定、标准化地放到后台:
406
+
407
+ - 业务提醒
408
+ - 数据治理
409
+ - 流程推进
410
+ - 集成补偿
411
+ - 报表支撑
412
+ - 权限维护
413
+
414
+ 因此,在 CloudCC 项目中,定时器类通常不是边缘能力,而是连接“运营动作、数据质量、流程节点、系统集成、经营分析”的核心后台机制。