@feng-h/pdca-skill 1.0.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 (49) hide show
  1. package/CLAUDE.md +108 -0
  2. package/README.md +131 -0
  3. package/SKILL.md +438 -0
  4. package/assets/references/act-agent.md +51 -0
  5. package/assets/references/check-agent.md +43 -0
  6. package/assets/references/cron-driving.md +107 -0
  7. package/assets/references/dashboard-templates.md +436 -0
  8. package/assets/references/do-agent.md +44 -0
  9. package/assets/references/exception-handling.md +35 -0
  10. package/assets/references/feishu-integration.md +494 -0
  11. package/assets/references/manufacturing-templates.md +31 -0
  12. package/assets/references/plan-agent.md +52 -0
  13. package/assets/references/transition-checklist.md +41 -0
  14. package/assets/templates/project-template.md +109 -0
  15. package/assets/tests/baseline-test-results.md +146 -0
  16. package/assets/tests/baseline-test-scenarios.md +111 -0
  17. package/assets/tests/improvement-analysis-tdd.md +405 -0
  18. package/assets/tests/improvement-validation-scenarios.md +184 -0
  19. package/assets/tests/integration-test-scenarios.md +296 -0
  20. package/assets/tests/tdd-baseline-test-scenarios.md +164 -0
  21. package/assets/tests/tdd-green-verification.md +156 -0
  22. package/package.json +31 -0
  23. package/system/Agent/ActAgent.md +369 -0
  24. package/system/Agent/CheckAgent.md +327 -0
  25. package/system/Agent/DoAgent.md +289 -0
  26. package/system/Agent/PDCA/346/216/247/345/210/266/345/231/250.md +403 -0
  27. package/system/Agent/PDCA/351/241/271/347/233/256/347/256/241/347/220/206/347/263/273/347/273/237Agent.md +137 -0
  28. package/system/Agent/PlanAgent.md +404 -0
  29. package/system//345/210/266/351/200/240/350/264/250/351/207/217/351/241/271/347/233/256/346/250/241/346/235/277.md +122 -0
  30. package/system//345/267/245/345/205/267/Bitable/345/272/224/347/224/250/346/226/207/346/241/243/346/250/241/346/235/277.md +232 -0
  31. package/system//345/267/245/345/205/267/Bitable/350/241/250/347/273/223/346/236/204/345/256/232/344/271/211.md +376 -0
  32. package/system//345/267/245/345/205/267/OpenClow API/351/233/206/346/210/220.md" +109 -0
  33. package/system//345/267/245/345/205/267//344/273/252/350/241/250/346/235/277/347/224/237/346/210/220/345/231/250.md +274 -0
  34. package/system//345/267/245/345/205/267//344/273/252/350/241/250/347/233/230/347/273/204/344/273/266/351/205/215/347/275/256.md +66 -0
  35. package/system//345/267/245/345/205/267//344/273/273/345/212/241/350/207/252/345/212/250/347/224/237/346/210/220/345/231/250.md +365 -0
  36. package/system//345/267/245/345/205/267//345/267/245/344/275/234/346/265/201/350/207/252/345/212/250/345/214/226/351/205/215/347/275/256.md +119 -0
  37. package/system//345/267/245/345/205/267//345/274/202/345/270/270/345/244/204/347/220/206/346/214/207/345/215/227.md +441 -0
  38. package/system//345/267/245/345/205/267//346/224/266/351/233/206/350/241/250/351/205/215/347/275/256/346/214/207/345/215/227.md +70 -0
  39. package/system//345/267/245/345/205/267//346/231/272/350/203/275/345/267/241/346/243/200/351/242/221/347/216/207.md +374 -0
  40. package/system//345/267/245/345/205/267//350/241/250/345/215/225/351/205/215/347/275/256/347/224/237/346/210/220/345/231/250.md +221 -0
  41. package/system//345/267/245/345/205/267//351/230/266/346/256/265/350/275/254/346/215/242/346/243/200/346/237/245/350/241/250.md +281 -0
  42. package/system//346/250/241/346/235/277//351/241/271/347/233/256/346/250/241/346/235/277.md +418 -0
  43. package/system//347/273/217/351/252/214/345/272/223.md +57 -0
  44. package/system//350/247/204/350/214/203/Validators/logic.md +72 -0
  45. package/system//350/247/204/350/214/203/Validators/smart.md +63 -0
  46. package/system//350/247/204/350/214/203//346/240/270/345/277/203/350/247/204/350/214/203.md +339 -0
  47. package/system//351/241/271/347/233/256/347/212/266/346/200/201/350/267/237/350/270/252.md +186 -0
  48. package/system//351/241/271/347/233/256/347/256/241/347/220/206/347/263/273/347/273/237.md +143 -0
  49. package/system//351/241/271/347/233/256/347/264/242/345/274/225.md +22 -0
@@ -0,0 +1,374 @@
1
+ # 智能巡检频率策略
2
+
3
+ 根据项目类型动态调整巡检频率,避免不必要的资源消耗,同时确保项目进展得到有效跟踪。
4
+
5
+ ---
6
+
7
+ ## 概述
8
+
9
+ **用途**:在项目创建时,根据项目类型和框架自动确定巡检频率,并在项目进行中根据阶段、优先级、进度等动态调整。
10
+
11
+ **核心价值**:
12
+ - 避免一刀切的固定频率,优化系统资源使用
13
+ - 高优先级项目获得更多关注
14
+ - 关键阶段(Do)和临近截止时加强跟踪
15
+ - 用户可自定义覆盖默认策略
16
+
17
+ ---
18
+
19
+ ## 基线频率(按项目类型)
20
+
21
+ | 项目类型 | 对应框架 | 默认巡检频率 | Cron表达式 | 时区 | 说明 |
22
+ |---------|---------|-------------|-----------|------|------|
23
+ | 健康/体能 | TREND | 每日 1 次 | `0 8 * * *` | Asia/Shanghai | 运动数据每天更新即可 |
24
+ | 制造业 | 4M1E | 每 8 小时 | `0 */8 * * *` | Asia/Shanghai | 跟随生产班次节奏 |
25
+ | 软件开发 | PPTD | 每日 1 次 | `0 8 * * *` | Asia/Shanghai | 日报制度 |
26
+ | 学习/教育 | COMET | 每周 1 次 | `0 9 * * 1` | Asia/Shanghai | 周报制度(周一上午) |
27
+ | 财务投资 | 3RL-TD | 每日 1 次 | `0 8 * * *` | Asia/Shanghai | 市场交易日 |
28
+ | 销售营销 | 5P | 每周 1 次 | `0 9 * * 1` | Asia/Shanghai | 周会节奏 |
29
+ | 团队协作 | GRCT | 每周 1 次 | `0 9 * * 1` | Asia/Shanghai | 周会节奏 |
30
+ | 客户服务 | 5S | 每日 1 次 | `0 8 * * *` | Asia/Shanghai | 每日服务监控 |
31
+ | 个人效率 | TIME | 每周 1 次 | `0 9 * * 1` | Asia/Shanghai | 周复盘 |
32
+ | 流程/服务 | SIPOC | 每日 1 次 | `0 8 * * *` | Asia/Shanghai | 流程每日监控 |
33
+ | 管理/组织 | 5P2E | 每周 1 次 | `0 9 * * 1` | Asia/Shanghai | 周会节奏 |
34
+
35
+ **Cron 表达式说明**:
36
+ - `0 8 * * *`:每天 08:00 执行
37
+ - `0 */8 * * *`:每 8 小时执行一次(00:00, 08:00, 16:00)
38
+ - `0 9 * * 1`:每周一 09:00 执行
39
+
40
+ ---
41
+
42
+ ## 动态调整因子
43
+
44
+ ### 1. 阶段因子
45
+
46
+ | 阶段 | 调整系数 | 说明 |
47
+ |------|---------|------|
48
+ | Plan | 1.0 | 计划期保持基线频率 |
49
+ | Do | 1.5 | 执行期需更密切跟踪 |
50
+ | Check | 1.0 | 检查期恢复基线 |
51
+ | Act | 1.0 | 行动期保持基线 |
52
+
53
+ ### 2. 紧迫度因子
54
+
55
+ | 优先级 | 调整系数 | 说明 |
56
+ |--------|---------|------|
57
+ | 高 | 2.0 | 高优先级项目加倍频率 |
58
+ | 中 | 1.0 | 中等优先级保持基线 |
59
+ | 低 | 0.5 | 低优先级减半频率 |
60
+
61
+ ### 3. 时间因子
62
+
63
+ | 剩余时间比例 | 调整系数 | 说明 |
64
+ |-------------|---------|------|
65
+ | > 50% | 1.0 | 正常节奏 |
66
+ | 20% - 50% | 1.5 | 进入冲刺期 |
67
+ | < 20% | 2.0 | 临近截止,加强跟踪 |
68
+
69
+ ### 4. 进度因子
70
+
71
+ | 项目状态 | 调整系数 | 说明 |
72
+ |---------|---------|------|
73
+ | 正常 | 1.0 | 按计划进行 |
74
+ | 预警 | 1.5 | 进度落后但可控 |
75
+ | 滞后 | 2.0 | 严重滞后,需加强监控 |
76
+
77
+ ### 5. 用户覆盖
78
+
79
+ 用户可设置自定义巡检频率,覆盖系统默认策略。
80
+
81
+ **优先级**:用户设置 > 动态调整后频率 > 基线频率
82
+
83
+ ---
84
+
85
+ ## 频率计算函数
86
+
87
+ ```python
88
+ from datetime import datetime, timedelta
89
+ from typing import Literal
90
+
91
+ ProjectType = Literal[
92
+ "TREND", "4M1E", "PPTD", "COMET", "3RL-TD",
93
+ "5P", "GRCT", "5S", "TIME", "SIPOC", "5P2E"
94
+ ]
95
+
96
+ Phase = Literal["Plan", "Do", "Check", "Act"]
97
+ Priority = Literal["高", "中", "低"]
98
+ Status = Literal["正常", "预警", "滞后"]
99
+
100
+ # 基线间隔(秒)
101
+ BASELINE_INTERVALS = {
102
+ "TREND": 86400, # 1天
103
+ "4M1E": 28800, # 8小时
104
+ "PPTD": 86400, # 1天
105
+ "COMET": 604800, # 1周
106
+ "3RL-TD": 86400, # 1天
107
+ "5P": 604800, # 1周
108
+ "GRCT": 604800, # 1周
109
+ "5S": 86400, # 1天
110
+ "TIME": 604800, # 1周
111
+ "SIPOC": 86400, # 1天
112
+ "5P2E": 604800, # 1周
113
+ }
114
+
115
+ def calculate_inspection_interval(
116
+ project_type: ProjectType,
117
+ phase: Phase,
118
+ priority: Priority,
119
+ deadline: datetime,
120
+ status: Status,
121
+ user_override: int | None = None
122
+ ) -> int:
123
+ """
124
+ 计算巡检间隔(秒)
125
+
126
+ Args:
127
+ project_type: 项目类型/框架
128
+ phase: 当前阶段
129
+ priority: 优先级
130
+ deadline: 截止日期
131
+ status: 项目状态
132
+ user_override: 用户自定义间隔(秒)
133
+
134
+ Returns:
135
+ 巡检间隔(秒)
136
+ """
137
+ # 用户覆盖优先
138
+ if user_override is not None:
139
+ return user_override
140
+
141
+ # 获取基线间隔
142
+ baseline = BASELINE_INTERVALS[project_type]
143
+
144
+ # 计算调整系数
145
+ multiplier = 1.0
146
+
147
+ # 阶段因子
148
+ phase_multiplier = {
149
+ "Plan": 1.0,
150
+ "Do": 1.5,
151
+ "Check": 1.0,
152
+ "Act": 1.0,
153
+ }
154
+ multiplier *= phase_multiplier[phase]
155
+
156
+ # 紧迫度因子
157
+ priority_multiplier = {
158
+ "高": 2.0,
159
+ "中": 1.0,
160
+ "低": 0.5,
161
+ }
162
+ multiplier *= priority_multiplier[priority]
163
+
164
+ # 时间因子
165
+ remaining = (deadline - datetime.now()).total_seconds()
166
+ total_duration = (deadline - datetime.now().replace(hour=0, minute=0)).total_seconds() # 简化计算
167
+ if remaining / total_duration < 0.2:
168
+ multiplier *= 2.0
169
+ elif remaining / total_duration < 0.5:
170
+ multiplier *= 1.5
171
+
172
+ # 进度因子
173
+ status_multiplier = {
174
+ "正常": 1.0,
175
+ "预警": 1.5,
176
+ "滞后": 2.0,
177
+ }
178
+ multiplier *= status_multiplier[status]
179
+
180
+ # 计算最终间隔
181
+ final_interval = int(baseline / multiplier)
182
+
183
+ # 限制最小间隔为 1 小时
184
+ return max(final_interval, 3600)
185
+
186
+
187
+ def interval_to_cron(interval_seconds: int, base_hour: int = 8) -> str:
188
+ """
189
+ 将间隔转换为 cron 表达式
190
+
191
+ Args:
192
+ interval_seconds: 间隔秒数
193
+ base_hour: 基础小时(用于每日任务)
194
+
195
+ Returns:
196
+ Cron 表达式
197
+ """
198
+ if interval_seconds <= 3600:
199
+ # 小于等于1小时:每小时执行
200
+ return "0 * * * *"
201
+ elif interval_seconds <= 14400:
202
+ # 小于等于4小时:每4小时执行
203
+ hours = int(interval_seconds / 3600)
204
+ return f"0 */{hours} * * *"
205
+ elif interval_seconds <= 86400:
206
+ # 小于等于1天:每天执行
207
+ return f"0 {base_hour} * * *"
208
+ elif interval_seconds <= 604800:
209
+ # 小于等于1周:每周执行
210
+ return f"0 {base_hour} * * 1" # 周一
211
+ else:
212
+ # 超过1周:仍为每周
213
+ return f"0 {base_hour} * * 1"
214
+ ```
215
+
216
+ ---
217
+
218
+ ## Cron 任务管理
219
+
220
+ ### 创建(项目启动时)
221
+
222
+ ```python
223
+ def create_inspection_cron(project_id: str, project_type: ProjectType):
224
+ """
225
+ 项目创建时,建立巡检 cron 任务
226
+
227
+ 流程:
228
+ 1. 根据项目类型确定基线频率
229
+ 2. 调用 CronCreate 创建定时任务
230
+ 3. 将 jobId 写入项目元数据
231
+ """
232
+ baseline = BASELINE_INTERVALS[project_type]
233
+ cron_expr = interval_to_cron(baseline)
234
+
235
+ job_id = CronCreate(
236
+ cron=cron_expr,
237
+ prompt=f"执行 PDCA 项目巡检:{project_id}",
238
+ recurring=True,
239
+ durable=True # 持久化到配置文件
240
+ )
241
+
242
+ # 写入项目配置
243
+ project_metadata["inspection_job_id"] = job_id
244
+ project_metadata["baseline_interval"] = baseline
245
+ ```
246
+
247
+ ### 更新(频率变化时)
248
+
249
+ ```python
250
+ def update_inspection_cron(project_id: str, new_interval: int):
251
+ """
252
+ 当动态调整因子变化时,更新巡检频率
253
+
254
+ 触发条件:
255
+ - 阶段转换
256
+ - 优先级变更
257
+ - 状态变化(正常→预警→滞后)
258
+ - 用户手动调整
259
+
260
+ 流程:
261
+ 1. 删除旧的 cron 任务
262
+ 2. 创建新的 cron 任务
263
+ 3. 更新项目元数据
264
+ """
265
+ old_job_id = project_metadata.get("inspection_job_id")
266
+ if old_job_id:
267
+ CronDelete(id=old_job_id)
268
+
269
+ new_cron_expr = interval_to_cron(new_interval)
270
+ new_job_id = CronCreate(
271
+ cron=new_cron_expr,
272
+ prompt=f"执行 PDCA 项目巡检:{project_id}",
273
+ recurring=True,
274
+ durable=True
275
+ )
276
+
277
+ project_metadata["inspection_job_id"] = new_job_id
278
+ project_metadata["current_interval"] = new_interval
279
+ ```
280
+
281
+ ### 删除(项目结束时)
282
+
283
+ ```python
284
+ def delete_inspection_cron(project_id: str):
285
+ """
286
+ 项目结束时,清理所有关联的 cron 任务
287
+
288
+ 流程:
289
+ 1. 获取项目的所有 cron 任务 ID
290
+ 2. 逐个调用 CronDelete
291
+ 3. 清除项目元数据中的 cron 记录
292
+ """
293
+ job_ids = project_metadata.get("cron_job_ids", [])
294
+
295
+ for job_id in job_ids:
296
+ CronDelete(id=job_id)
297
+
298
+ project_metadata["cron_job_ids"] = []
299
+ project_metadata["inspection_job_id"] = None
300
+ ```
301
+
302
+ ---
303
+
304
+ ## 频率调整触发点
305
+
306
+ ### 自动触发
307
+
308
+ | 触发事件 | 检查时机 | 动作 |
309
+ |---------|---------|------|
310
+ | 阶段转换 | 阶段转换确认后 | 重新计算频率并更新 cron |
311
+ | 状态变化 | 每日巡检发现异常 | 状态变为"预警"或"滞后"时更新 |
312
+ | 时间临近 | 每日巡检 | 剩余时间 < 20% 时更新 |
313
+
314
+ ### 手动触发
315
+
316
+ 用户可通过飞书交互卡片手动调整巡检频率:
317
+
318
+ ```
319
+ 当前巡检频率:每日 1 次
320
+ 基线频率:每日 1 次
321
+ 当前调整系数:1.5(Do阶段)
322
+
323
+ 请选择操作:
324
+ [ ] 保持当前频率
325
+ [ ] 恢复基线频率
326
+ [ ] 加倍巡检频率
327
+ [ ] 减半巡检频率
328
+ [ ] 自定义频率:_____
329
+ ```
330
+
331
+ ---
332
+
333
+ ## 频率限制
334
+
335
+ | 限制类型 | 最小值 | 最大值 | 说明 |
336
+ |---------|-------|-------|------|
337
+ | 最小间隔 | 1 小时 | - | 避免过度频繁调用 |
338
+ | 最大间隔 | - | 1 周 | 即使低优先级也保持周检 |
339
+ | 单日最大巡检次数 | - | 24 次 | 避免系统过载 |
340
+
341
+ ---
342
+
343
+ ## 完整示例
344
+
345
+ ### 场景:制造业高优先级项目进入 Do 阶段
346
+
347
+ **初始状态**:
348
+ - 项目类型:制造业(4M1E)
349
+ - 基线频率:每 8 小时
350
+ - 初始 cron:`0 */8 * * *`
351
+
352
+ **变化**:
353
+ - 阶段:Plan → Do(×1.5)
354
+ - 优先级:高(×2)
355
+ - 状态:正常(×1)
356
+
357
+ **计算**:
358
+ ```
359
+ 基线间隔 = 8 小时 = 28800 秒
360
+ 调整系数 = 1.5 × 2 × 1 = 3.0
361
+ 最终间隔 = 28800 / 3 = 9600 秒 ≈ 2.67 小时
362
+ 向下取整为 2 小时
363
+ 新 cron = "0 */2 * * *"
364
+ ```
365
+
366
+ **最终频率**:每 2 小时巡检一次
367
+
368
+ ---
369
+
370
+ ## 版本历史
371
+
372
+ | 版本 | 日期 | 变更说明 |
373
+ |------|------|---------|
374
+ | v1.0 | 2026-04-04 | 初始版本,定义基线频率和动态调整策略 |
@@ -0,0 +1,221 @@
1
+ # 表单配置生成器
2
+
3
+ ## 概述
4
+
5
+ **用途**: 根据项目选择的MECE框架,动态生成数据采集表单的字段配置。
6
+
7
+ **核心价值**:
8
+ - 标准化数据采集流程
9
+ - 自动匹配框架维度与数据字段
10
+ - 支持多场景数据采集需求
11
+
12
+ ---
13
+
14
+ ## 框架维度表单配置
15
+
16
+ ### TREND框架表单字段
17
+
18
+ 适用于健康管理、个人成长、体能训练等场景。
19
+
20
+ | 维度 | 数据项 | 数据类型 | 采集频率 | 单位 | Bitable类型 |
21
+ |------|--------|---------|---------|------|------------|
22
+ | **Training** | 训练时长 | 数字 | 每次训练后 | 分钟 | 2 |
23
+ | Training | 训练强度 | 单选 | 每次训练后 | - | 3 |
24
+ | Training | 训练类型 | 多选 | 每次训练后 | - | 4 |
25
+ | **Rest** | 睡眠时长 | 数字 | 每日 | 小时 | 2 |
26
+ | Rest | 睡眠质量 | 单选 | 每日 | 1-5分 | 3 |
27
+ | Rest | 休息日标记 | 是/否 | 每周 | - | 3 |
28
+ | **Eating** | 热量摄入 | 数字 | 每日 | kcal | 2 |
29
+ | Eating | 蛋白质 | 数字 | 每日 | g | 2 |
30
+ | Eating | 碳水化合物 | 数字 | 每日 | g | 2 |
31
+ | **Nature** | 体重 | 数字 | 每周 | kg | 2 |
32
+ | Nature | 静息心率 | 数字 | 每周 | bpm | 2 |
33
+ | Nature | VO2max | 数字 | 每月 | - | 2 |
34
+ | **Daily** | 步数 | 数字 | 每日 | 步 | 2 |
35
+ | Daily | 久坐时长 | 数字 | 每日 | 分钟 | 2 |
36
+
37
+ **训练强度选项**: 低/中/高
38
+ **训练类型选项**: 有氧/力量/柔韧/平衡/综合
39
+
40
+ ### 4M1E框架表单字段
41
+
42
+ 适用于生产管理、质量控制、流程优化等场景。
43
+
44
+ | 维度 | 数据项 | 数据类型 | 采集频率 | 单位 | Bitable类型 |
45
+ |------|--------|---------|---------|------|------------|
46
+ | **Man** | 出勤率 | 数字 | 每日 | % | 2 |
47
+ | Man | 培训完成数 | 数字 | 每周 | 人次 | 2 |
48
+ | **Machine** | 设备OEE | 数字 | 每班次 | % | 2 |
49
+ | Machine | 停机时长 | 数字 | 每班次 | 分钟 | 2 |
50
+ | **Material** | 来料不良率 | 数字 | 每批 | % | 2 |
51
+ | Material | 库存周转天数 | 数字 | 每周 | 天 | 2 |
52
+ | **Method** | SOP执行率 | 数字 | 每周 | % | 2 |
53
+ | **Environment** | 温度 | 数字 | 每日 | °C | 2 |
54
+ | Environment | 湿度 | 数字 | 每日 | % | 2 |
55
+
56
+ ---
57
+
58
+ ## 字段类型映射
59
+
60
+ | 数据类型 | Bitable type | 说明 |
61
+ |---------|-------------|------|
62
+ | 数字 | 2 | 数值类型,支持小数 |
63
+ | 单选 | 3 | 预定义选项,单选 |
64
+ | 多选 | 4 | 预定义选项,多选 |
65
+ | 是/否 | 3 | 特殊单选:是/否 |
66
+ | 文本 | 1 | 字符串类型 |
67
+ | 日期 | 5 | 日期时间类型 |
68
+
69
+ **Bitable字段创建API参数**:
70
+ ```json
71
+ {
72
+ "field_type": 2,
73
+ "property": {
74
+ "formatter": "0.00",
75
+ "default_value": "0"
76
+ }
77
+ }
78
+ ```
79
+
80
+ ---
81
+
82
+ ## 表单创建流程
83
+
84
+ ### 1. 项目创建阶段
85
+
86
+ ```
87
+ 项目创建 → 选择MECE框架 → 获取表单配置 → 创建Bitable字段
88
+ ```
89
+
90
+ **步骤**:
91
+ 1. 用户创建项目时选择框架(TREND/4M1E/自定义)
92
+ 2. PlanAgent根据框架获取对应的字段配置
93
+ 3. 在Bitable的`data_records`表中创建字段
94
+ 4. 生成表单分享链接
95
+
96
+ ### 2. 字段创建示例
97
+
98
+ ```javascript
99
+ // 创建训练时长字段
100
+ await bitable.appTableField.create({
101
+ table_id: "data_records",
102
+ field_type: 2,
103
+ property: {
104
+ formatter: "0",
105
+ default_value: "0"
106
+ }
107
+ })
108
+ ```
109
+
110
+ ### 3. 表单分享
111
+
112
+ 使用Bitable的表单视图功能生成分享链接:
113
+ ```javascript
114
+ // 获取表单视图
115
+ const formView = await bitable.appTableViews.create({
116
+ table_id: "data_records",
117
+ view_type: "form"
118
+ })
119
+
120
+ // 生成分享链接
121
+ const shareUrl = `https://example.feishu.cn/base/${app_token}/form?view=${formView.view_id}`
122
+ ```
123
+
124
+ ---
125
+
126
+ ## 数据写入流程
127
+
128
+ ### 用户填写表单
129
+
130
+ ```
131
+ 用户填写表单 → 数据写入data_records表 → Cron检测新数据 → 仪表板更新
132
+ ```
133
+
134
+ ### 数据流
135
+
136
+ 1. **表单提交**: 用户通过表单填写数据
137
+ 2. **数据写入**: 数据自动写入`data_records`表
138
+ 3. **自动巡检**: Cron任务检测到新数据
139
+ 4. **仪表板更新**: 触发仪表板重新计算和渲染
140
+
141
+ ### Cron检测逻辑
142
+
143
+ ```javascript
144
+ // 检测新数据
145
+ const lastCheck = await getLastCheckTimestamp()
146
+ const newRecords = await bitable.appTableRecord.list({
147
+ table_id: "data_records",
148
+ filter: {
149
+ conditions: [{
150
+ field_name: "created_time",
151
+ operator: "isGreater",
152
+ value: [lastCheck]
153
+ }]
154
+ }
155
+ })
156
+
157
+ if (newRecords.length > 0) {
158
+ await updateDashboard(project_id)
159
+ }
160
+ ```
161
+
162
+ ---
163
+
164
+ ## 扩展自定义框架
165
+
166
+ ### 自定义字段定义
167
+
168
+ 当使用自定义MECE框架时,需要提供:
169
+
170
+ ```json
171
+ {
172
+ "framework_name": "自定义框架名称",
173
+ "dimensions": [
174
+ {
175
+ "name": "维度名称",
176
+ "fields": [
177
+ {
178
+ "name": "数据项名称",
179
+ "type": "数字|单选|多选|是/否|文本|日期",
180
+ "frequency": "采集频率",
181
+ "unit": "单位"
182
+ }
183
+ ]
184
+ }
185
+ ]
186
+ }
187
+ ```
188
+
189
+ ### 字段验证规则
190
+
191
+ - 所有字段必须有明确的`name`和`type`
192
+ - 数值类型必须指定`unit`
193
+ - 单选/多选类型必须提供`options`
194
+ - 所有字段必须指定`frequency`
195
+
196
+ ---
197
+
198
+ ## 与其他组件集成
199
+
200
+ ### 与仪表板生成器集成
201
+
202
+ 表单字段与仪表板维度直接对应:
203
+ - 表单字段 → 仪表板数据源
204
+ - 采集频率 → 刷新频率建议
205
+ - 数据类型 → 可视化图表类型
206
+
207
+ ### 与任务自动生成器集成
208
+
209
+ 基于采集频率自动生成数据采集任务:
210
+ - 每日字段 → 创建每日提醒任务
211
+ - 每周字段 → 创建周报任务
212
+ - 每月字段 → 创建月度汇总任务
213
+
214
+ ---
215
+
216
+ ## 注意事项
217
+
218
+ 1. **字段不可变性**: 表单创建后,字段类型不可修改
219
+ 2. **数据完整性**: 必填字段需在创建时标记
220
+ 3. **并发控制**: Bitable不支持并发写入,需串行调用
221
+ 4. **权限管理**: 表单分享链接需设置适当的访问权限