@amaster.ai/pi-lark 0.1.7 → 0.1.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.
- package/package.json +2 -2
- package/skills/lark-apps/SKILL.md +41 -6
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +5 -4
- package/skills/lark-apps/references/lark-apps-create.md +6 -3
- package/skills/lark-apps/references/lark-apps-db.md +130 -2
- package/skills/lark-apps/references/lark-apps-get.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +1 -1
- package/skills/lark-apps/references/lark-apps-local-dev.md +27 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +1 -1
- package/skills/lark-apps/references/lark-apps-user-id-convert.md +63 -0
- package/skills/lark-base/SKILL.md +155 -159
- package/skills/lark-base/references/{lark-base-role-guide.md → lark-base-advanced-permission-and-role.md} +5 -5
- package/skills/lark-base/references/lark-base-app-block-data-config.md +122 -0
- package/skills/lark-base/references/lark-base-app.md +225 -0
- package/skills/lark-base/references/lark-base-cell-value.md +26 -19
- package/skills/lark-base/references/{dashboard-block-data-config.md → lark-base-dashboard-block-config.md} +37 -5
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +18 -2
- package/skills/lark-base/references/lark-base-dashboard.md +25 -12
- package/skills/lark-base/references/lark-base-data-analysis-pandas.md +93 -0
- package/skills/lark-base/references/lark-base-data-analysis-python-stdlib.md +120 -0
- package/skills/lark-base/references/lark-base-data-query.md +8 -11
- package/skills/lark-base/references/lark-base-field-create.md +13 -45
- package/skills/lark-base/references/{formula-field-guide.md → lark-base-field-formula.md} +1 -1
- package/skills/lark-base/references/{lookup-field-guide.md → lark-base-field-lookup.md} +1 -1
- package/skills/lark-base/references/{lark-base-field-json.md → lark-base-field-schema.md} +18 -100
- package/skills/lark-base/references/lark-base-field-update.md +13 -51
- package/skills/lark-base/references/lark-base-filter-condition.md +19 -31
- package/skills/lark-base/references/lark-base-record-batch-create.md +5 -1
- package/skills/lark-base/references/lark-base-record-batch-update.md +5 -2
- package/skills/lark-base/references/lark-base-record-query-and-analysis-cloud-sop.md +145 -0
- package/skills/lark-base/references/lark-base-record-query-and-analysis-sop.md +233 -0
- package/skills/lark-base/references/{role-config.md → lark-base-role-config.md} +2 -2
- package/skills/lark-base/references/lark-base-view-set-filter.md +1 -1
- package/skills/lark-base/references/lark-base-workflow-schema.md +2 -2
- package/skills/lark-base/references/{lark-base-workflow-guide.md → lark-base-workflow.md} +1 -1
- package/skills/lark-calendar/SKILL.md +3 -1
- package/skills/lark-calendar/references/lark-calendar-create.md +4 -3
- package/skills/lark-doc/SKILL.md +26 -61
- package/skills/lark-doc/references/genres/business-analysis.md +30 -0
- package/skills/lark-doc/references/genres/data-report.md +32 -0
- package/skills/lark-doc/references/genres/email.md +38 -0
- package/skills/lark-doc/references/genres/execution-plan.md +27 -0
- package/skills/lark-doc/references/genres/formal-doc.md +37 -0
- package/skills/lark-doc/references/genres/meeting-minutes.md +24 -0
- package/skills/lark-doc/references/genres/memo-brief.md +25 -0
- package/skills/lark-doc/references/genres/official-redhead.md +73 -0
- package/skills/lark-doc/references/genres/prd.md +26 -0
- package/skills/lark-doc/references/genres/proposal.md +24 -0
- package/skills/lark-doc/references/genres/research-report.md +32 -0
- package/skills/lark-doc/references/genres/retrospective.md +25 -0
- package/skills/lark-doc/references/genres/route-consumer.md +37 -0
- package/skills/lark-doc/references/genres/route-creative.md +36 -0
- package/skills/lark-doc/references/genres/route-knowledge.md +39 -0
- package/skills/lark-doc/references/genres/route-marketing.md +40 -0
- package/skills/lark-doc/references/genres/route-media.md +36 -0
- package/skills/lark-doc/references/genres/route-opinion.md +38 -0
- package/skills/lark-doc/references/genres/route-personal-brand.md +36 -0
- package/skills/lark-doc/references/genres/route-platform.md +9 -0
- package/skills/lark-doc/references/genres/route-report.md +10 -0
- package/skills/lark-doc/references/genres/route-workplace.md +17 -0
- package/skills/lark-doc/references/genres/sop-tutorial.md +41 -0
- package/skills/lark-doc/references/genres/technical-doc.md +39 -0
- package/skills/lark-doc/references/genres/wechat.md +39 -0
- package/skills/lark-doc/references/genres/weekly-report.md +24 -0
- package/skills/lark-doc/references/genres/white-paper.md +32 -0
- package/skills/lark-doc/references/genres/xiaohongshu.md +38 -0
- package/skills/lark-doc/references/lark-doc-create-workflow.md +121 -0
- package/skills/lark-doc/references/lark-doc-create.md +22 -48
- package/skills/lark-doc/references/lark-doc-fetch.md +80 -92
- package/skills/lark-doc/references/lark-doc-history.md +16 -15
- package/skills/lark-doc/references/lark-doc-md.md +5 -1
- package/skills/lark-doc/references/lark-doc-media-download.md +2 -1
- package/skills/lark-doc/references/lark-doc-script.md +76 -0
- package/skills/lark-doc/references/lark-doc-update.md +73 -221
- package/skills/lark-doc/references/lark-doc-whiteboard.md +5 -9
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +17 -12
- package/skills/lark-doc/references/lark-doc-xml.md +38 -167
- package/skills/lark-drive/SKILL.md +11 -7
- package/skills/lark-drive/references/lark-drive-apply-permission.md +1 -1
- package/skills/lark-drive/references/lark-drive-copy.md +87 -0
- package/skills/lark-drive/references/lark-drive-download.md +29 -2
- package/skills/lark-drive/references/lark-drive-export.md +4 -0
- package/skills/lark-drive/references/lark-drive-member-remove.md +59 -0
- package/skills/lark-drive/references/lark-drive-preview.md +21 -2
- package/skills/lark-drive/references/lark-drive-push.md +5 -1
- package/skills/lark-drive/references/lark-drive-search.md +2 -0
- package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
- package/skills/lark-drive/references/lark-drive-update-title.md +78 -0
- package/skills/lark-event/SKILL.md +7 -4
- package/skills/lark-event/references/lark-event-vc.md +8 -2
- package/skills/lark-im/SKILL.md +14 -9
- package/skills/lark-im/references/lark-im-chat-list.md +9 -2
- package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
- package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
- package/skills/lark-im/references/lark-im-chat-search.md +9 -2
- package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
- package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
- package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
- package/skills/lark-im/references/lark-im-flag-list.md +2 -2
- package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
- package/skills/lark-im/references/lark-im-messages-resources-download.md +19 -25
- package/skills/lark-im/references/lark-im-messages-search.md +4 -5
- package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
- package/skills/lark-mail/references/lark-mail-triage.md +19 -4
- package/skills/lark-minutes/SKILL.md +12 -6
- package/skills/lark-minutes/references/lark-minutes-apply-permission.md +95 -0
- package/skills/lark-minutes/references/lark-minutes-detail.md +7 -6
- package/skills/lark-minutes/references/lark-minutes-download.md +4 -2
- package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
- package/skills/lark-note/SKILL.md +13 -9
- package/skills/lark-note/references/lark-note-detail.md +5 -2
- package/skills/lark-note/references/lark-note-transcript.md +2 -0
- package/skills/lark-shared/SKILL.md +39 -3
- package/skills/lark-sheets/SKILL.md +83 -82
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +13 -58
- package/skills/lark-sheets/references/lark-sheets-chart.md +2 -1
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +5 -5
- package/skills/lark-sheets/references/lark-sheets-read-data.md +80 -6
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +21 -10
- package/skills/lark-sheets/references/lark-sheets-styles-put.md +93 -0
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +2 -2
- package/skills/lark-sheets/references/lark-sheets-workbook.md +4 -3
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -12
- package/skills/lark-sheets/scripts/lark_detect_subtables.py +593 -0
- package/skills/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
- package/skills/lark-sheets/scripts/lark_profile_table.py +614 -0
- package/skills/lark-sheets/scripts/lark_sheet_range.py +176 -0
- package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
- package/skills/lark-sheets/scripts/sheets_df.py +21 -3
- package/skills/lark-slides/SKILL.md +64 -81
- package/skills/lark-slides/references/cli/lark-slides-add-slide.md +92 -0
- package/skills/lark-slides/references/cli/lark-slides-create.md +176 -0
- package/skills/lark-slides/references/cli/lark-slides-delete-slide.md +65 -0
- package/skills/lark-slides/references/cli/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/cli/lark-slides-media-upload.md +103 -0
- package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +259 -0
- package/skills/lark-slides/references/cli/lark-slides-screenshot.md +115 -0
- package/skills/lark-slides/references/cli/lark-slides-update-slide.md +163 -0
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +110 -0
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +188 -0
- package/skills/lark-slides/references/cli/lark-slides-xml-presentations-get.md +157 -0
- package/skills/lark-slides/references/iconpark-index.json +5 -41901
- package/skills/lark-slides/references/iconpark.md +3 -44
- package/skills/lark-slides/references/lark-slides-add-slide.md +5 -0
- package/skills/lark-slides/references/lark-slides-create.md +3 -162
- package/skills/lark-slides/references/lark-slides-delete-slide.md +5 -0
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +3 -142
- package/skills/lark-slides/references/lark-slides-history.md +3 -130
- package/skills/lark-slides/references/lark-slides-media-upload.md +3 -124
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +3 -83
- package/skills/lark-slides/references/lark-slides-replace-slide.md +3 -235
- package/skills/lark-slides/references/lark-slides-screenshot.md +3 -95
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +3 -108
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +3 -186
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +3 -132
- package/skills/lark-slides/references/planning-layer.md +1 -1
- package/skills/lark-slides/references/slides_chart_demo.xml +5 -1416
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +3 -3468
- package/skills/lark-slides/references/troubleshooting.md +3 -61
- package/skills/lark-slides/references/validation-checklist.md +3 -154
- package/skills/lark-slides/references/workflow/error-handling.md +62 -0
- package/skills/lark-slides/references/workflow/slides-editing.md +143 -0
- package/skills/lark-slides/references/workflow/template-editing.md +85 -0
- package/skills/lark-slides/references/workflow/validation-xml.md +156 -0
- package/skills/lark-slides/references/xml/iconpark-index.json +37458 -0
- package/skills/lark-slides/references/xml/iconpark.md +46 -0
- package/skills/lark-slides/references/xml/slides_chart_demo.xml +1415 -0
- package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +3514 -0
- package/skills/lark-slides/references/xml/xml-schema-quick-ref.md +497 -0
- package/skills/lark-slides/references/xml-schema-quick-ref.md +3 -483
- package/skills/lark-slides/scripts/iconpark_tool.py +1 -1
- package/skills/lark-slides/scripts/sxsd_validator.py +154 -10
- package/skills/lark-slides/scripts/xml_lint.py +2989 -0
- package/skills/lark-slides/scripts/xml_lint_test.py +4720 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +3 -2691
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +5 -3788
- package/skills/lark-task/SKILL.md +12 -0
- package/skills/lark-task/references/lark-task-create.md +3 -1
- package/skills/lark-vc/SKILL.md +15 -5
- package/skills/lark-vc/references/lark-vc-detail.md +11 -6
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-events.md → lark-vc/references/lark-vc-meeting-events.md} +121 -20
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-list-active.md → lark-vc/references/lark-vc-meeting-list-active.md} +2 -2
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-message-send.md → lark-vc/references/lark-vc-meeting-message-send.md} +3 -3
- package/skills/lark-vc/references/lark-vc-recording.md +8 -6
- package/skills/lark-vc/references/vc-domain-boundaries.md +8 -1
- package/skills/lark-vc-agent/SKILL.md +24 -9
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +2 -2
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +2 -2
- package/skills/lark-whiteboard/SKILL.md +15 -8
- package/skills/lark-whiteboard/references/lark-whiteboard-export.md +4 -3
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +4 -4
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +19 -17
- package/skills/lark-whiteboard/routes/dsl.md +8 -2
- package/skills/lark-whiteboard/routes/mermaid.md +1 -1
- package/skills/lark-whiteboard/routes/svg-edit.md +5 -2
- package/skills/lark-whiteboard/routes/svg.md +3 -1
- package/skills/lark-whiteboard/scenes/mention.md +71 -0
- package/skills/lark-wiki/SKILL.md +8 -4
- package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
- package/skills/lark-wiki/references/lark-wiki-node-copy.md +5 -19
- package/skills/lark-wiki/references/lark-wiki-node-create.md +19 -2
- package/skills/lark-wiki/references/lark-wiki-node-get.md +15 -0
- package/skills/lark-wiki/references/lark-wiki-node-list.md +1 -1
- package/skills/lark-base/references/lark-base-data-analysis-sop.md +0 -210
- package/skills/lark-base/references/lark-base-data-query-guide.md +0 -61
- package/skills/lark-base/references/lark-base-record-upsert.md +0 -63
- package/skills/lark-doc/references/lark-doc-word-stat.md +0 -93
- package/skills/lark-doc/references/style/lark-doc-create-workflow.md +0 -47
- package/skills/lark-doc/references/style/lark-doc-style.md +0 -68
- package/skills/lark-doc/references/style/lark-doc-update-workflow.md +0 -48
- package/skills/lark-doc/scripts/doc_word_stat.py +0 -1243
- package/skills/lark-slides/references/lark-slides-replace-pages.md +0 -95
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -219
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -126
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Base NDJSON:pandas 示例
|
|
2
|
+
|
|
3
|
+
仅在统一数据分析 SOP 已选择 pandas 后读取。本页不重复 Base 的粒度与关系规则,只展示对应实现。
|
|
4
|
+
|
|
5
|
+
示例假设 `records.ndjson` 包含 `record_id`、`日期`、`状态`、`金额`、`负责人`、`标签`、`关联客户`;`customers.ndjson` 包含 `record_id`、`客户名称`。多值列使用统一数据分析 SOP 定义的数组结构。
|
|
6
|
+
|
|
7
|
+
## 加载与日期解析
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
import pandas as pd
|
|
11
|
+
|
|
12
|
+
records = pd.read_json("records.ndjson", lines=True)
|
|
13
|
+
raw_dates = records["日期"].astype("string")
|
|
14
|
+
records["日期_local"] = pd.to_datetime(
|
|
15
|
+
raw_dates.str.slice(0, 10), format="%Y-%m-%d", errors="coerce"
|
|
16
|
+
)
|
|
17
|
+
records["日期_instant"] = pd.to_datetime(
|
|
18
|
+
raw_dates, format="ISO8601", utc=True, errors="coerce"
|
|
19
|
+
)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
按来源 Base 的日、周、月分组使用 `日期_local`;计算真实时长、排序或跨时区比较使用 `日期_instant`。实际任务只需构造所需的一列。
|
|
23
|
+
|
|
24
|
+
## 集合谓词:保持 record 粒度
|
|
25
|
+
|
|
26
|
+
筛选“状态”包含“进行中”的记录,并在 record 粒度汇总:
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
active = records[records["状态"].map(lambda values: "进行中" in values)]
|
|
30
|
+
summary = {
|
|
31
|
+
"records_count": len(active),
|
|
32
|
+
"amount_sum": active["金额"].sum(min_count=1),
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 单数组展开:切换到人员粒度
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
owners = records[["record_id", "负责人"]].explode("负责人", ignore_index=True)
|
|
40
|
+
owners = owners[owners["负责人"].notna()].assign(
|
|
41
|
+
user_id=lambda df: df["负责人"].map(lambda user: user["id"]),
|
|
42
|
+
user_name=lambda df: df["负责人"].map(lambda user: user["name"]),
|
|
43
|
+
)
|
|
44
|
+
by_owner = (
|
|
45
|
+
owners.groupby(["user_id", "user_name"], as_index=False)
|
|
46
|
+
.agg(records_count=("record_id", "nunique"))
|
|
47
|
+
.sort_values("records_count", ascending=False)
|
|
48
|
+
)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Link JOIN:先建立边表
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
edges = (
|
|
55
|
+
records[["record_id", "关联客户"]]
|
|
56
|
+
.rename(columns={"record_id": "source_record_id"})
|
|
57
|
+
.explode("关联客户", ignore_index=True)
|
|
58
|
+
)
|
|
59
|
+
edges = edges[edges["关联客户"].notna()].assign(
|
|
60
|
+
target_record_id=lambda df: df["关联客户"].map(lambda link: link["id"])
|
|
61
|
+
)[["source_record_id", "target_record_id"]]
|
|
62
|
+
|
|
63
|
+
customers = pd.read_json("customers.ndjson", lines=True).rename(
|
|
64
|
+
columns={"record_id": "target_record_id"}
|
|
65
|
+
)
|
|
66
|
+
joined = edges.merge(
|
|
67
|
+
customers[["target_record_id", "客户名称"]],
|
|
68
|
+
on="target_record_id",
|
|
69
|
+
how="left",
|
|
70
|
+
)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 多数组共现:显式生成行内笛卡尔积
|
|
74
|
+
|
|
75
|
+
连续两次 `explode` 表示同一 source record 内的 `负责人 × 标签`:
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
pairs = (
|
|
79
|
+
records[["record_id", "负责人", "标签"]]
|
|
80
|
+
.explode("负责人", ignore_index=True)
|
|
81
|
+
.explode("标签", ignore_index=True)
|
|
82
|
+
.dropna(subset=["负责人", "标签"])
|
|
83
|
+
.assign(
|
|
84
|
+
user_id=lambda df: df["负责人"].map(lambda user: user["id"]),
|
|
85
|
+
user_name=lambda df: df["负责人"].map(lambda user: user["name"]),
|
|
86
|
+
)
|
|
87
|
+
)
|
|
88
|
+
cooccurrence = (
|
|
89
|
+
pairs.groupby(["user_id", "user_name", "标签"], as_index=False)
|
|
90
|
+
.agg(records_count=("record_id", "nunique"))
|
|
91
|
+
.sort_values("records_count", ascending=False)
|
|
92
|
+
)
|
|
93
|
+
```
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Base NDJSON:Python 标准库示例
|
|
2
|
+
|
|
3
|
+
仅在统一数据分析 SOP 已选择 Python 标准库后读取。本页不重复 Base 的粒度与关系规则,只展示对应实现。
|
|
4
|
+
|
|
5
|
+
示例假设 `records.ndjson` 包含 `record_id`、`日期`、`状态`、`金额`、`负责人`、`标签`、`关联客户`;`customers.ndjson` 包含 `record_id`、`客户名称`。多值列使用统一数据分析 SOP 定义的数组结构。
|
|
6
|
+
|
|
7
|
+
## 加载与日期解析
|
|
8
|
+
|
|
9
|
+
NDJSON 每行是一条独立 JSON record;按行读取即可,不要先把文件整体载入字符串。
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
import json
|
|
13
|
+
from datetime import date, datetime
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def read_ndjson(path):
|
|
17
|
+
with open(path, encoding="utf-8") as stream:
|
|
18
|
+
for line in stream:
|
|
19
|
+
if line.strip():
|
|
20
|
+
yield json.loads(line)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
records = list(read_ndjson("records.ndjson"))
|
|
24
|
+
for record in records:
|
|
25
|
+
raw_date = record["日期"]
|
|
26
|
+
record["日期_local"] = date.fromisoformat(raw_date[:10]) if raw_date else None
|
|
27
|
+
record["日期_instant"] = datetime.fromisoformat(raw_date) if raw_date else None
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
按来源 Base 的日、周、月分组使用 `日期_local`;计算真实时长、排序或跨时区比较使用 `日期_instant`。实际任务只需构造所需的一项。
|
|
31
|
+
|
|
32
|
+
## 集合谓词:保持 record 粒度
|
|
33
|
+
|
|
34
|
+
筛选“状态”包含“进行中”的记录,并在 record 粒度汇总:
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
active = [record for record in records if "进行中" in record["状态"]]
|
|
38
|
+
amounts = [record["金额"] for record in active if record["金额"] is not None]
|
|
39
|
+
summary = {
|
|
40
|
+
"records_count": len(active),
|
|
41
|
+
"amount_sum": sum(amounts) if amounts else None,
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 单数组展开:切换到人员粒度
|
|
46
|
+
|
|
47
|
+
用嵌套循环表达 lateral expansion;按人员 `id` 聚合,`name` 只用于展示。
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from collections import defaultdict
|
|
51
|
+
|
|
52
|
+
record_ids_by_owner = defaultdict(set)
|
|
53
|
+
owner_names = {}
|
|
54
|
+
for record in records:
|
|
55
|
+
for owner in record["负责人"]:
|
|
56
|
+
record_ids_by_owner[owner["id"]].add(record["record_id"])
|
|
57
|
+
owner_names[owner["id"]] = owner["name"]
|
|
58
|
+
|
|
59
|
+
by_owner = sorted(
|
|
60
|
+
(
|
|
61
|
+
{
|
|
62
|
+
"user_id": user_id,
|
|
63
|
+
"user_name": owner_names[user_id],
|
|
64
|
+
"records_count": len(record_ids),
|
|
65
|
+
}
|
|
66
|
+
for user_id, record_ids in record_ids_by_owner.items()
|
|
67
|
+
),
|
|
68
|
+
key=lambda row: (-row["records_count"], row["user_id"]),
|
|
69
|
+
)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Link JOIN:先建立目标表索引
|
|
73
|
+
|
|
74
|
+
目标表的 `record_id` 是唯一主键,可直接建立哈希索引;Link 的 `id` 用于索引查找。
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
customers = {
|
|
78
|
+
customer["record_id"]: customer
|
|
79
|
+
for customer in read_ndjson("customers.ndjson")
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
joined = []
|
|
83
|
+
for record in records:
|
|
84
|
+
for link in record["关联客户"]:
|
|
85
|
+
customer = customers.get(link["id"])
|
|
86
|
+
joined.append(
|
|
87
|
+
{
|
|
88
|
+
"source_record_id": record["record_id"],
|
|
89
|
+
"target_record_id": link["id"],
|
|
90
|
+
"客户名称": customer["客户名称"] if customer else None,
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 多数组共现:显式生成行内笛卡尔积
|
|
96
|
+
|
|
97
|
+
两层嵌套循环表示同一 source record 内的 `负责人 × 标签`:
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
record_ids_by_pair = defaultdict(set)
|
|
101
|
+
owner_names = {}
|
|
102
|
+
for record in records:
|
|
103
|
+
for owner in record["负责人"]:
|
|
104
|
+
owner_names[owner["id"]] = owner["name"]
|
|
105
|
+
for tag in record["标签"]:
|
|
106
|
+
record_ids_by_pair[(owner["id"], tag)].add(record["record_id"])
|
|
107
|
+
|
|
108
|
+
cooccurrence = sorted(
|
|
109
|
+
(
|
|
110
|
+
{
|
|
111
|
+
"user_id": user_id,
|
|
112
|
+
"user_name": owner_names[user_id],
|
|
113
|
+
"标签": tag,
|
|
114
|
+
"records_count": len(record_ids),
|
|
115
|
+
}
|
|
116
|
+
for (user_id, tag), record_ids in record_ids_by_pair.items()
|
|
117
|
+
),
|
|
118
|
+
key=lambda row: (-row["records_count"], row["user_id"], row["标签"]),
|
|
119
|
+
)
|
|
120
|
+
```
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
# Base data-query DSL
|
|
2
|
+
# Base data-query DSL reference
|
|
3
3
|
|
|
4
|
-
>
|
|
4
|
+
> **前置路由**: [Record 查询与分析 SOP](lark-base-record-query-and-analysis-sop.md) | **认证或授权问题**: [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
查询类任务还必须先遵守 [`lark-base-data-analysis-sop.md`](lark-base-data-analysis-sop.md)。`+data-query` 适合让筛选、分组、聚合、排序和 TopN 在 Base 云端查询服务中执行;不要用默认分页的 `+record-list` 或本地 `jq` 替代聚合查询。
|
|
6
|
+
本文档合并常用 fewshot 与完整 DSL 协议。只有 [Record 查询与分析 SOP](lark-base-record-query-and-analysis-sop.md) 的 Cloud 路径选定 `+data-query` 后才读取,并优先定位与当前查询有关的示例、字段或错误协议。
|
|
9
7
|
|
|
10
8
|
## 限制
|
|
11
9
|
|
|
@@ -432,12 +430,12 @@ CLI 输出标准信封 `{ok, identity, data}`(失败时为 `{ok:false, identit
|
|
|
432
430
|
|
|
433
431
|
1. 用 `+data-query` 在 Base 云端查询服务中完成全局筛选、分组、聚合、排序和 TopN,得到业务 key、分组值或候选字段组合。
|
|
434
432
|
2. 如果已经拿到候选记录的 `record_id`,用 `+record-get` 读取逐条记录字段。
|
|
435
|
-
3. 如果拿到的是结构化业务 key(例如编号、状态、日期、金额等),用 `+record-list --filter-json`
|
|
433
|
+
3. 如果拿到的是结构化业务 key(例如编号、状态、日期、金额等),用 `+record-list --filter-json` 做精确过滤后读取;`+record-search` 用于文本展示值关键词。
|
|
436
434
|
4. 只有候选条件本身是文本展示值关键词时,才使用 `+record-search`,并用 `search_fields` 限定范围、`select_fields` 做投影。
|
|
437
435
|
5. 若候选记录包含 link 字段,提取关联 `record_id` 后到关联表用 `+record-get` 批量读取展示字段。
|
|
438
|
-
6.
|
|
436
|
+
6. 最终回答展示真实业务字段;内部 `record_id` 用于连接或定位。
|
|
439
437
|
|
|
440
|
-
不要把 `data-query pagination.limit` 理解为分页扫描;它只限制 Base 云端查询服务返回的聚合结果行数,不支持 offset
|
|
438
|
+
不要把 `data-query pagination.limit` 理解为分页扫描;它只限制 Base 云端查询服务返回的聚合结果行数,不支持 offset。需要逐条原始记录时按 Cloud SOP 的 `+record-list` / `+record-search` 回查规则处理。
|
|
441
439
|
|
|
442
440
|
## 坑点
|
|
443
441
|
|
|
@@ -450,12 +448,11 @@ CLI 输出标准信封 `{ok, identity, data}`(失败时为 `{ok:false, identit
|
|
|
450
448
|
- ⚠️ **数据表标识 `tableId` vs `tableName`**:datasource 中可以用 `tableId`(如 `tblXXX`)或 `tableName`(数据表的用户自定义显示名称),二选一,不要混用
|
|
451
449
|
- ⚠️ **`pagination.limit` 最大 5000**:超过会报错,且不支持 offset,只支持 limit
|
|
452
450
|
- ⚠️ **所有 alias 必须全局唯一**:dimensions 和 measures 之间的 alias 也不能重名
|
|
453
|
-
- ⚠️ **不要用本地分页结果替代 data-query**:凡是全局计数、分组、聚合、排序 TopN,优先让 `+data-query` 在 Base 云端查询服务中执行;默认页 `+record-list` 后本地统计只能得到已读取范围内的结果
|
|
454
451
|
|
|
455
452
|
## 参考
|
|
456
453
|
|
|
457
454
|
- [lark-base](../SKILL.md) — 多维表格全部命令
|
|
458
455
|
- [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
|
|
459
|
-
- [lark-base-
|
|
456
|
+
- [Cloud SOP](lark-base-record-query-and-analysis-cloud-sop.md) — Cloud 路径的查询范围、下推、分页、`+record-list` / `+record-search` 回查和关系查询
|
|
460
457
|
- [lark-base-cell-value.md](lark-base-cell-value.md) — CellValue 格式规范
|
|
461
|
-
- [
|
|
458
|
+
- [Field Schema](lark-base-field-schema.md) — 字段类型与 JSON 结构
|
|
@@ -2,15 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
创建一个或多个字段;同一表的多个字段优先使用一次 JSON 数组输入。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
1. 先判断是不是 `formula` / `lookup`。
|
|
10
|
-
2. 如果是:先读对应 guide。
|
|
11
|
-
3. 没读 guide 前,不要直接创建 formula / lookup 字段。
|
|
12
|
-
4. 读完 guide 后,再构造 `--json` 并创建字段。
|
|
13
|
-
5. 如果是跨表 formula / lookup,再补查**目标表**的结构。
|
|
7
|
+
`formula` / `lookup` 创建前读取对应 guide;涉及跨表引用时同时读取目标表结构。
|
|
14
8
|
|
|
15
9
|
## 推荐命令
|
|
16
10
|
|
|
@@ -25,10 +19,11 @@ lark-cli base +field-create \
|
|
|
25
19
|
--table-id <table_id> \
|
|
26
20
|
--json '{"name":"状态","type":"select","multiple":false,"default_value":["Todo"],"options":[{"name":"Todo","hue":"Blue","lightness":"Lighter"},{"name":"Done","hue":"Green","lightness":"Light"}]}'
|
|
27
21
|
|
|
22
|
+
# 多个字段复用相同字段 JSON 形状,一次传非空数组
|
|
28
23
|
lark-cli base +field-create \
|
|
29
24
|
--base-token <base_token> \
|
|
30
25
|
--table-id <table_id> \
|
|
31
|
-
--json '{"name":"
|
|
26
|
+
--json '[{"name":"备注","type":"text"},{"name":"优先级","type":"select","multiple":false,"options":[{"name":"高"},{"name":"低"}]}]'
|
|
32
27
|
```
|
|
33
28
|
|
|
34
29
|
## 参数
|
|
@@ -37,7 +32,8 @@ lark-cli base +field-create \
|
|
|
37
32
|
|------|------|------|
|
|
38
33
|
| `--base-token <token>` | 是 | Base Token |
|
|
39
34
|
| `--table-id <id_or_name>` | 是 | 表 ID 或表名 |
|
|
40
|
-
| `--json <body>` | 是 |
|
|
35
|
+
| `--json <body>` | 是 | 单个字段 JSON 对象,或多个字段对象组成的非空数组 |
|
|
36
|
+
|
|
41
37
|
## API 入参详情
|
|
42
38
|
|
|
43
39
|
**HTTP 方法和路径:**
|
|
@@ -48,10 +44,11 @@ POST /open-apis/base/v3/bases/:base_token/tables/:table_id/fields
|
|
|
48
44
|
|
|
49
45
|
## JSON 值规范
|
|
50
46
|
|
|
51
|
-
- `--json`
|
|
52
|
-
-
|
|
47
|
+
- `--json` 接受单个字段 **JSON 对象**,也接受多个字段对象组成的非空数组;不要再套 `fields` 等外层对象。
|
|
48
|
+
- 数组按顺序创建字段,遇到首个失败即停止且不自动回滚;部分失败时保留 `items` 中的 `created` 项,按 `hint` 修正后只提交 `failed` 和 `not_attempted` 项,并保持依赖顺序。
|
|
49
|
+
- 每个字段对象最少包含:`name`、`type`。
|
|
53
50
|
- 所有字段类型都支持可选 `description`;支持纯文本,也支持 Markdown 链接,如 `协作约定可参考[团队字段约定](https://example.com/field-spec)`。
|
|
54
|
-
- 需要字段默认值时传 `default_value`,直接使用字段对应 CellValue;`datetime` / `user` 的动态填充用 `$slot`。完整规则见 [
|
|
51
|
+
- 需要字段默认值时传 `default_value`,直接使用字段对应 CellValue;`datetime` / `user` 的动态填充用 `$slot`。完整规则见 [Field Schema](lark-base-field-schema.md)。
|
|
55
52
|
- `type` 不同,必填子字段不同:
|
|
56
53
|
- `select`:`multiple` 控制是否多选,`options` 定义静态选项,`dynamic_options_source` 定义动态选项来源。静态与动态选项配置二选一,不能同时传。
|
|
57
54
|
- `link`:必须有 `link_table`,可选 `bidirectional`、`bidirectional_link_field_name`。
|
|
@@ -73,37 +70,8 @@ POST /open-apis/base/v3/bases/:base_token/tables/:table_id/fields
|
|
|
73
70
|
}
|
|
74
71
|
```
|
|
75
72
|
|
|
76
|
-
**字段说明示例**
|
|
77
|
-
|
|
78
|
-
```json
|
|
79
|
-
{
|
|
80
|
-
"name": "负责人",
|
|
81
|
-
"type": "user",
|
|
82
|
-
"multiple": false,
|
|
83
|
-
"description": "用于标记记录的直接负责人;协作约定可参考[团队字段约定](https://example.com/field-spec)"
|
|
84
|
-
}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## 返回重点
|
|
88
|
-
|
|
89
|
-
- 返回 `field` 和 `created: true`。
|
|
90
|
-
- 如果返回 `field_get_recommended:false` 且 `next_step:"done"`,表示本次是简单字段创建,通常不需要立刻执行 `+field-get`。
|
|
91
|
-
- 如果返回 `field_get_recommended:true` 或 `next_step:"field_get"`,按 `verification_hint` 读回字段;`formula`、`lookup`、`link`、`auto_number` 等计算、关联或生成型字段更适合读回确认服务端最终结构。
|
|
92
|
-
|
|
93
|
-
## 工作流
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
1. formula / lookup 字段必须先阅读对应指南;没读之前不要直接创建。
|
|
97
|
-
2. 创建简单字段时,优先相信命令返回;只有用户要求精确核对额外属性,或返回建议读回时,才继续执行 `+field-get`。
|
|
98
|
-
|
|
99
|
-
## 坑点
|
|
100
|
-
|
|
101
|
-
- ⚠️ 这是写入操作,执行前必须确认。
|
|
102
|
-
- ⚠️ 当 `type` 是 `formula` 或 `lookup` 时,先读对应 guide,再创建。
|
|
103
|
-
- ⚠️ 不要把“每次创建后都 `+field-get`”当作固定流程;按返回里的 `field_get_recommended` 和 `next_step` 决定是否读回。
|
|
104
|
-
|
|
105
73
|
## 参考
|
|
106
74
|
|
|
107
|
-
- [
|
|
108
|
-
- [
|
|
109
|
-
- [
|
|
75
|
+
- [Field Schema](lark-base-field-schema.md) — 字段 JSON 规范(推荐)
|
|
76
|
+
- [Formula Field](lark-base-field-formula.md) — 创建公式必读
|
|
77
|
+
- [Lookup Field](lark-base-field-lookup.md) — 创建查找引用必读
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Base
|
|
1
|
+
# Base Field Schema
|
|
2
2
|
|
|
3
3
|
> 适用命令:`lark-cli base +field-create`、`lark-cli base +field-update`
|
|
4
4
|
|
|
@@ -6,12 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
## 1. 顶层规则(必须遵守)
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
9
|
+
- 单个字段定义始终是 JSON 对象,每个字段对象统一使用:`type` + `name` + 类型特有字段。
|
|
10
|
+
- `+field-create --json` 接受一个字段对象或非空字段对象数组。
|
|
11
|
+
- `+field-update --json` 只接受一个字段对象。
|
|
11
12
|
- 所有字段类型都支持可选 `description`;支持纯文本,也支持 Markdown 链接。
|
|
12
|
-
- 字段默认值使用 `default_value`,直接传对应 CellValue;支持范围只有 `text`、`number`、静态 `select`、`datetime`、`user`。清空默认值传 `null
|
|
13
|
+
- 字段默认值使用 `default_value`,直接传对应 CellValue;支持范围只有 `text`、`number`、静态 `select`、`datetime`、`user`。清空默认值传 `null`;创建时省略表示不设置。
|
|
13
14
|
- 不要使用旧结构:`field_name`、`property`、`ui_type`、数字枚举 `type`。
|
|
14
|
-
- `+field-update`
|
|
15
|
+
- `+field-update` 是 override 式的完整覆盖 `PUT`,不是 partial update;先用 `+field-get` 读取当前定义,在其基础上修改目标属性,并把整个字段需要保留的可写配置完整写回,同时带 `--yes`。
|
|
15
16
|
- `type=formula` 或 `type=lookup` 创建/更新前,必须先读对应 guide。
|
|
16
17
|
|
|
17
18
|
推荐示例:
|
|
@@ -184,7 +185,7 @@
|
|
|
184
185
|
- `icon` 默认 `star`
|
|
185
186
|
- `icon` 可用:`star`、`heart`、`thumbsup`、`fire`、`smile`、`lightning`、`flower`、`number`
|
|
186
187
|
- `min` 取值 `0..1`,默认 `1`
|
|
187
|
-
- `max`
|
|
188
|
+
- `max` 取值 `1..10`,默认 `5`
|
|
188
189
|
|
|
189
190
|
```json
|
|
190
191
|
{
|
|
@@ -228,6 +229,8 @@
|
|
|
228
229
|
|
|
229
230
|
#### 动态选项
|
|
230
231
|
|
|
232
|
+
当新字段要引用或复用另一选项字段的选项列表时,优先使用 `dynamic_options_source`,避免重复定义和维护 `options`。
|
|
233
|
+
|
|
231
234
|
支持字段:`multiple`、`dynamic_options_source`
|
|
232
235
|
动态选项不支持 `default_value`。
|
|
233
236
|
|
|
@@ -263,7 +266,7 @@
|
|
|
263
266
|
{
|
|
264
267
|
"type": "datetime",
|
|
265
268
|
"name": "截止时间",
|
|
266
|
-
"default_value": "2026-03-24 10:00
|
|
269
|
+
"default_value": "2026-03-24 10:00"
|
|
267
270
|
}
|
|
268
271
|
```
|
|
269
272
|
|
|
@@ -271,7 +274,7 @@
|
|
|
271
274
|
|
|
272
275
|
默认值 / 约束:
|
|
273
276
|
- `style.format` 默认 `yyyy/MM/dd` 可用格式:`yyyy/MM/dd`、`yyyy/MM/dd HH:mm`、`yyyy/MM/dd HH:mm Z`、`yyyy-MM-dd`、`yyyy-MM-dd HH:mm`、`yyyy-MM-dd HH:mm Z`、`MM-dd`、`MM/dd/yyyy`、`dd/MM/yyyy`
|
|
274
|
-
- `style.format`
|
|
277
|
+
- `style.format` 只控制 Base 前端展示,不影响 CLI 读取的 CellValue;前端当前最多配置到分钟级展示,底层时间值以毫秒级精度存储。
|
|
275
278
|
|
|
276
279
|
常用写法:
|
|
277
280
|
|
|
@@ -304,12 +307,7 @@
|
|
|
304
307
|
|
|
305
308
|
### 3.6 user / group_chat
|
|
306
309
|
|
|
307
|
-
|
|
308
|
-
`user` 支持 `default_value`:人员 CellValue 数组,元素可用 `{ "id": "ou_xxx" }` 或 `{ "$slot": "current_user" }`;不要猜用户 ID。`group_chat` 不支持默认值。
|
|
309
|
-
|
|
310
|
-
默认值 / 约束:
|
|
311
|
-
- `multiple` 默认 `true`
|
|
312
|
-
- `user` 字段支持 `default_value` 配置,`group_chat` 字段不支持 `default_value` 配置。
|
|
310
|
+
两者都支持 `multiple`(默认 `true`);仅 `user` 支持人员数组 `default_value`,元素使用 `{ "id": "ou_xxx" }` 或 `{ "$slot": "current_user" }`,用户 ID 必须来自真实查询。
|
|
313
311
|
|
|
314
312
|
```json
|
|
315
313
|
{
|
|
@@ -326,15 +324,7 @@
|
|
|
326
324
|
|
|
327
325
|
### 3.7 created_by / updated_by
|
|
328
326
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
```json
|
|
332
|
-
{ "type": "created_by", "name": "创建人" }
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
```json
|
|
336
|
-
{ "type": "updated_by", "name": "更新人" }
|
|
337
|
-
```
|
|
327
|
+
系统创建人和修改人字段,记录写入时只读:`{ "type": "created_by", "name": "创建人" }`、`{ "type": "updated_by", "name": "更新人" }`。
|
|
338
328
|
|
|
339
329
|
### 3.8 link
|
|
340
330
|
|
|
@@ -376,7 +366,7 @@
|
|
|
376
366
|
|
|
377
367
|
### 3.9 formula
|
|
378
368
|
|
|
379
|
-
公式字段;`expression` 必填。创建/更新前先读 [
|
|
369
|
+
公式字段;`expression` 必填。创建/更新前先读 [Formula Field](lark-base-field-formula.md) 学习公式语法。
|
|
380
370
|
|
|
381
371
|
```json
|
|
382
372
|
{
|
|
@@ -388,34 +378,7 @@
|
|
|
388
378
|
|
|
389
379
|
### 3.10 lookup
|
|
390
380
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
支持字段:`from`、`select`、`where`、`aggregate`
|
|
394
|
-
|
|
395
|
-
默认值 / 约束:
|
|
396
|
-
- `from`、`select`、`where` 必填
|
|
397
|
-
- `aggregate` 默认 `raw_value` 代表不进行聚合,直接返回 select 回的原始值
|
|
398
|
-
- `aggregate` 可用:`raw_value`、`sum`、`average`、`counta`、`unique_counta`、`max`、`min`、`unique`
|
|
399
|
-
- `where.logic` 默认 `and`,仅支持 `and` / `or`
|
|
400
|
-
- `where.conditions` 至少 1 条
|
|
401
|
-
- `conditions` 每项是三元组 `[field, op, value?]`
|
|
402
|
-
|
|
403
|
-
```json
|
|
404
|
-
{
|
|
405
|
-
"type": "lookup",
|
|
406
|
-
"name": "状态汇总",
|
|
407
|
-
"from": "任务表",
|
|
408
|
-
"select": "状态",
|
|
409
|
-
"where": {
|
|
410
|
-
"logic": "and",
|
|
411
|
-
"conditions": [
|
|
412
|
-
["负责人", "==", { "type": "field_ref", "field": "当前负责人" }],
|
|
413
|
-
["状态", "non_empty", null]
|
|
414
|
-
]
|
|
415
|
-
},
|
|
416
|
-
"aggregate": "raw_value"
|
|
417
|
-
}
|
|
418
|
-
```
|
|
381
|
+
查找引用字段使用 `from`、`select`、`where` 和可选 `aggregate`;结构、条件和聚合值必须按 [Lookup Field](lark-base-field-lookup.md) 构造。
|
|
419
382
|
|
|
420
383
|
### 3.11 auto_number
|
|
421
384
|
|
|
@@ -430,52 +393,7 @@
|
|
|
430
393
|
}
|
|
431
394
|
```
|
|
432
395
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
默认值 / 约束:
|
|
436
|
-
- `style.rules` 是规则数组,数量 `1..9`
|
|
437
|
-
- 默认规则:
|
|
438
|
-
|
|
439
|
-
```json
|
|
440
|
-
{
|
|
441
|
-
"style": {
|
|
442
|
-
"rules": [
|
|
443
|
-
{ "type": "text", "text": "NO." },
|
|
444
|
-
{ "type": "incremental_number", "length": 3 }
|
|
445
|
-
]
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
```
|
|
449
|
-
|
|
450
|
-
#### `text`
|
|
451
|
-
|
|
452
|
-
支持字段:`text`
|
|
453
|
-
|
|
454
|
-
```json
|
|
455
|
-
{ "type": "text", "text": "TASK-" }
|
|
456
|
-
```
|
|
457
|
-
|
|
458
|
-
#### `incremental_number`
|
|
459
|
-
|
|
460
|
-
支持字段:`length`
|
|
461
|
-
|
|
462
|
-
默认值 / 约束:
|
|
463
|
-
- `length` 取值 `1..9`
|
|
464
|
-
|
|
465
|
-
```json
|
|
466
|
-
{ "type": "incremental_number", "length": 4 }
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
#### `created_time`
|
|
470
|
-
|
|
471
|
-
支持字段:`date_format`
|
|
472
|
-
|
|
473
|
-
默认值 / 约束:
|
|
474
|
-
- `date_format` 可用:`yyyyMMdd`、`yyyyMM`、`yyMM`、`MMdd`、`yyyy`、`MM`、`dd`
|
|
475
|
-
|
|
476
|
-
```json
|
|
477
|
-
{ "type": "created_time", "date_format": "yyyyMMdd" }
|
|
478
|
-
```
|
|
396
|
+
`style.rules` 包含 1–9 条规则:固定文本用 `{ "type":"text", "text":"TASK-" }`;递增序号用 `{ "type":"incremental_number", "length":4 }`(长度 1–9);创建时间用 `{ "type":"created_time", "date_format":"yyyyMMdd" }`,格式支持 `yyyyMMdd`、`yyyyMM`、`yyMM`、`MMdd`、`yyyy`、`MM`、`dd`。
|
|
479
397
|
|
|
480
398
|
自定义规则:
|
|
481
399
|
|
|
@@ -503,7 +421,7 @@
|
|
|
503
421
|
{ "type": "location", "name": "位置" }
|
|
504
422
|
```
|
|
505
423
|
|
|
506
|
-
|
|
424
|
+
Location 读取为 `{lng,lat,full_address}`;写入只使用数字 `{lng,lat}`,`full_address` 由平台根据坐标解析,不允许手动指定;筛选行为按照 `full_address` 做字符串筛选,将 Location 当作文本列使用文本 operator。`location -> text` 时只保留 `full_address`。
|
|
507
425
|
|
|
508
426
|
```json
|
|
509
427
|
{ "type": "checkbox", "name": "完成" }
|
|
@@ -512,7 +430,7 @@
|
|
|
512
430
|
## 4. 创建与更新
|
|
513
431
|
|
|
514
432
|
- `+field-create`:按目标字段配置直接构造 `--json`。
|
|
515
|
-
- `+field-update`:使用同样的 JSON
|
|
433
|
+
- `+field-update`:使用同样的 JSON 结构,但执行完整覆盖更新,不是局部 patch。先用 `+field-get` 读取当前定义,在其基础上修改目标属性;需要保留的名称、类型、样式、选项、默认值、描述及类型专属配置都应完整写回,并带 `--yes`。
|
|
516
434
|
|
|
517
435
|
## 5. 暂不支持字段
|
|
518
436
|
|