@dazitech/cli 3.0.9 → 3.1.1
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/README.md +1 -1
- package/dist/clis/dazi-app.js +2 -2
- package/dist/clis/dazi-flow.js +2 -2
- package/dist/clis/dazi-onto.js +324 -41
- package/dist/clis/dazi.js +407 -185
- package/dist/docs/flow/flow-project-guide.md +1 -1
- package/dist/docs/guides/cli-reference.md +16 -3
- package/dist/docs/guides/troubleshooting.md +3 -3
- package/dist/docs/index.json +3 -15
- package/dist/docs/onto/dazi_script_sdk_reference.md +246 -244
- package/dist/docs/onto/dazi_script_seed_data_guide.md +1 -1
- package/dist/docs/onto/function-guide.md +123 -123
- package/dist/docs/onto//346/234/254/344/275/223/345/210/206/347/261/273/350/247/204/345/210/222/344/270/216SDK/346/211/251/345/261/225/346/226/271/346/241/210.md +169 -168
- package/dist/docs/onto//346/234/254/344/275/223/345/221/275/345/220/215/350/247/204/350/214/203_/347/211/251/347/220/206/350/241/250Cube/344/270/216/345/257/271/350/261/241.md +403 -402
- package/dist/docs/onto//346/234/254/344/275/223/345/274/200/345/217/221/344/274/230/345/214/226/346/200/273/347/273/223.md +257 -0
- package/dist/docs/onto//346/234/254/344/275/223/350/204/232/346/234/254/347/274/226/345/206/231/346/214/207/345/215/227.md +339 -311
- package/dist/docs/onto//346/234/254/344/275/223/350/247/204/345/210/222/346/214/207/345/215/227.md +305 -281
- package/dist/docs/onto//350/204/232/346/234/254/350/277/220/350/241/214/345/270/270/350/247/201/351/224/231/350/257/257/345/244/204/347/220/206.md +297 -0
- package/dist/examples/index.json +222 -6
- package/dist/examples/onto/README.md +34 -36
- package/dist/examples/onto/_templates/onto_preflight.ps1 +84 -0
- package/dist/examples/onto/index.json +53 -0
- package/dist/examples/onto/index.yaml +29 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/README.md +23 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/functions/save_test_arguments.ps1 +12 -11
- package/dist/{docs/onto → examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/plans}//350/247/204/345/210/222/347/244/272/344/276/213_/345/210/251/346/266/246/345/210/206/346/236/220/346/234/254/344/275/223/346/226/271/346/241/210.md +37 -35
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/setup/profit_category_mount.py +85 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/setup/profit_ontology_init.py +3 -66
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/README.md +24 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_availability_analysis.py +84 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_downtime_breakdown.py +119 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_energy_intensity.py +98 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_get_summary.py +125 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_maintenance_compliance.py +77 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_mom_analysis.py +118 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_oee_analysis.py +126 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_plan_vs_actual.py +105 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_top_fault_equipment.py +104 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_unit_comparison.py +120 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/equip_ops_fn_yoy_analysis.py +115 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/save_test_arguments.ps1 +42 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.availability_analysis.json +7 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.downtime_breakdown.json +8 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.energy_intensity.json +8 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.get_summary.json +7 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.maintenance_compliance.json +7 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.mom_analysis.json +8 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.oee_analysis.json +8 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.plan_vs_actual.json +8 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.top_fault_equipment.json +8 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.unit_comparison.json +8 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/functions/test_arguments/equip_ops.fn.yoy_analysis.json +8 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/plans//345/214/226/345/267/245/350/256/276/345/244/207/350/277/220/350/220/245/345/210/206/346/236/220/346/234/254/344/275/223/346/226/271/346/241/210.md +735 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/setup/equip_ops_category_mount.py +106 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/setup/equip_ops_ontology_init.py +1077 -0
- package/dist/examples/onto//350/256/276/345/244/207/350/277/220/350/220/245/setup/equip_ops_seed_data.py +552 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/README.md +23 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/save_test_arguments.ps1 +13 -12
- package/dist/{docs/onto → examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/plans}//350/247/204/345/210/222/347/244/272/344/276/213_/344/272/247/345/223/201/351/224/200/345/224/256/346/234/254/344/275/223/350/247/204/345/210/222/346/226/271/346/241/210.md +34 -34
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/setup/sales_category_mount.py +82 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/setup/sales_ontology_init.py +3 -54
- package/dist/prompts/index.json +8 -1
- package/dist/prompts/onto/function-design.md +73 -73
- package/dist/prompts/onto/planning-design.md +226 -0
- package/dist/prompts/onto/script-publish-run.md +231 -208
- package/package.json +1 -1
- package/dist/docs/onto//350/204/232/346/234/254/350/277/220/350/241/214/347/272/240/351/224/231_/345/225/206/345/212/241/346/210/220/346/234/254/346/226/271/346/241/210/345/274/200/345/217/221/350/277/207/347/250/213.md +0 -213
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# 脚本运行常见错误处理
|
|
2
|
+
|
|
3
|
+
**文档 ID**: `onto/script-run-troubleshooting`
|
|
4
|
+
**级别**: **执行脚本前必读(强制)** — 在终端执行 `dazi onto script publish` / `script run` / `function run` / `save-test-arguments` **之前**须通读
|
|
5
|
+
**适用**: 本体 `setup/`、`functions/` 脚本编写、发布与运行;智能体见提示词 `onto/script-publish-run`
|
|
6
|
+
|
|
7
|
+
> 路径占位:`<项目路径>` = `项目/<业务名>/本体/ontos/<实现名>`,`<空间>` 取自实现单元 `README.md`。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. setup 脚本 API 误用
|
|
12
|
+
|
|
13
|
+
| 错误写法 | 正确写法 | 说明 |
|
|
14
|
+
| -------- | -------- | ---- |
|
|
15
|
+
| `s.onto.sync_metrics()` | 删除;必要时 `s.sync_metric_refs()` | `sync_metrics` 不存在 |
|
|
16
|
+
| `s.cubes.upsert(...)` | `s.register_cube(...)` | 无 `s.cubes` |
|
|
17
|
+
| `define_object_type(code, label=name)` | `define_object_type(code, name=...)` | 第二参数为 `name` |
|
|
18
|
+
| `define_object_type(title=...)` | `define_object_type(name=...)` | 参数名为 `name` |
|
|
19
|
+
| `bind_source(source_type=..., source_name=...)` | `bind_source(obj_code, "dazi_cube", config={"cube": "CubeName"})` | 见利润/销售示例 |
|
|
20
|
+
| `define_property(object_type_code=..., title=...)` | `define_property(obj_code, code, name, ...)` | 位置参数 |
|
|
21
|
+
| `define_link_type(title=..., from_object_type=...)` | `define_link_type(name=..., from_object_type_code=..., to_object_type_code=...)` | 以 `_code` 结尾 |
|
|
22
|
+
| **Reference 对象无 Cube 仍 define_property** | 参考型对象不 `bind_source` 则**禁止** `define_property` | 见 §1.1 |
|
|
23
|
+
|
|
24
|
+
**教训**:对照 `资源/examples/onto/利润示例`、`销售示例` 的 init,勿猜 API。
|
|
25
|
+
|
|
26
|
+
### 1.1 无 Cube 绑定的对象禁止 define_property
|
|
27
|
+
|
|
28
|
+
| 对象分类(347) | bind_source | define_property |
|
|
29
|
+
| --------------- | ----------- | --------------- |
|
|
30
|
+
| 主数据 / 事务 / 分析 | **必须**绑定 Cube | ✅ 可定义属性 |
|
|
31
|
+
| 参考 / 配置(无 Cube) | 无 | ❌ **禁止** — 会报「对象类型未绑定任何 DaziCube」 |
|
|
32
|
+
|
|
33
|
+
规划阶段:Reference/Master 无 Cube 时,属性章节须标注「跳过或需补 Cube + bind_source」。
|
|
34
|
+
|
|
35
|
+
### 1.2 本域首次 init 检查表(5 条)
|
|
36
|
+
|
|
37
|
+
init `script run` 前逐项确认:
|
|
38
|
+
|
|
39
|
+
| # | 检查项 | 通过标准 |
|
|
40
|
+
| --- | ------ | -------- |
|
|
41
|
+
| 1 | **dim_date** | 共用空间时确认已存在,或 init 含幂等 `ensure_dim_date` |
|
|
42
|
+
| 2 | **bind_source** | 每个需读模型的分析/主数据/事务对象已绑定 Cube |
|
|
43
|
+
| 3 | **define_property** | 无 Cube 的参考对象未调用 define_property |
|
|
44
|
+
| 4 | **function_result** | 函数模板使用 `columns=`/`data=` kwargs,非 dict positional |
|
|
45
|
+
| 5 | **relationship_count** | init 日志关系数与 plans §表间关系一致 |
|
|
46
|
+
| 6 | **init 不含 apply_registry** | 分类在 `*_category_mount.py`;init 只做表/Cube/对象/链接 |
|
|
47
|
+
|
|
48
|
+
### 1.3 init 与 category_mount 职责分离
|
|
49
|
+
|
|
50
|
+
| 脚本 | 职责 | 时机 |
|
|
51
|
+
| ---- | ---- | ---- |
|
|
52
|
+
| `*_ontology_init.py` | 建表、register_with_meta、关系、Cube、对象/链接、sync_metric_refs | init → seed 之前 |
|
|
53
|
+
| `*_category_mount.py` | `CATEGORY_REGISTRY` + `apply_registry` | **最后**(全部函数 publish 后) |
|
|
54
|
+
|
|
55
|
+
**禁止**:在 init 内调用 `s.categories.apply_registry`(函数未 publish 时 function 段会被 skip;重跑 init 成本高)。
|
|
56
|
+
|
|
57
|
+
`dazi onto script publish-preview` 对 `*init*.py` 会报错 `[init-no-apply-registry]`。
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 2. SQL 聚合:`query_one` 返回类型
|
|
62
|
+
|
|
63
|
+
**现象**:`float' object has no attribute 'get'`
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
# 错误
|
|
67
|
+
total_row = p.sql.query_one("SELECT sum(amount) AS grand_total FROM ...")
|
|
68
|
+
grand_total = float(total_row.get("grand_total", 0))
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**原因**:聚合场景下 `query_one()` 可能返回标量而非字典行。
|
|
72
|
+
|
|
73
|
+
**修复**:
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
total_rows = p.sql.query("SELECT sum(amount) AS grand_total FROM ...")
|
|
77
|
+
total_row = total_rows[0] if total_rows else {}
|
|
78
|
+
grand_total = float(total_row.get("grand_total", 0) or 0)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 3. 函数输出:禁止 `output.print_json`
|
|
84
|
+
|
|
85
|
+
**现象**:`AttributeError: 'OutputModule' has no attribute 'print_json'`
|
|
86
|
+
|
|
87
|
+
本体函数须 **`return`** 结构化结果,不能当 setup 脚本用 `output` 打印 JSON。
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
def _ontology_fn_body(p):
|
|
91
|
+
rows = p.sql.query("SELECT ...")
|
|
92
|
+
return p.function_result(columns=[...], data=rows, row_count=len(rows))
|
|
93
|
+
|
|
94
|
+
def main():
|
|
95
|
+
s = space.get(ctx.space_id or "")
|
|
96
|
+
# 组装 p(见 ontology_function_template.py)
|
|
97
|
+
return _ontology_fn_body(p)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**禁止**:`output.print_json()`、`main(params: dict)`、裸 `return {"k": v}` 代替 `function_result`。
|
|
101
|
+
|
|
102
|
+
**模板**:`资源/examples/onto/_templates/ontology_function_template.py`
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 4. CLI 参数误用
|
|
107
|
+
|
|
108
|
+
### 4.1 `function run` 与默认参数
|
|
109
|
+
|
|
110
|
+
**推荐顺序**:`publish` → `function run`(验证)→ `save-test-arguments`(侧栏预填)。
|
|
111
|
+
|
|
112
|
+
未传 `--params` 或 `--params '{}'` 时,CLI **自动回退**:
|
|
113
|
+
|
|
114
|
+
1. 已保存的 `test_arguments.arguments`
|
|
115
|
+
2. 否则脚本内 `TEST_ARGUMENTS.arguments`
|
|
116
|
+
|
|
117
|
+
```powershell
|
|
118
|
+
# 首次 run(无 save-test-arguments 也可,回退脚本内 TEST_ARGUMENTS)
|
|
119
|
+
dazi onto function run sales.fn.yoy_analysis --space <空间>
|
|
120
|
+
|
|
121
|
+
# 显式传参
|
|
122
|
+
dazi onto function run sales.fn.yoy_analysis --space <空间> --params '{"start_date":"2025-01-01","end_date":"2025-12-31"}'
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**不支持** `--arguments-json-file`(勿与 save-test-arguments 混淆)。
|
|
126
|
+
|
|
127
|
+
### 4.2 `save-test-arguments`:ofn_xxx 或 --function-id
|
|
128
|
+
|
|
129
|
+
```powershell
|
|
130
|
+
# 推荐:function_id 别名(无需查 ofn_xxx)
|
|
131
|
+
dazi onto function save-test-arguments --function-id profit.fn.get_summary --space <空间> `
|
|
132
|
+
--arguments-json-file <项目路径>/functions/test_arguments/profit.fn.get_summary.json
|
|
133
|
+
|
|
134
|
+
# 或使用平台内部 id
|
|
135
|
+
dazi onto function list --space <空间> --json # 含 save_command 字段
|
|
136
|
+
dazi onto function save-test-arguments ofn_xxxxxxxx --space <空间> `
|
|
137
|
+
--arguments-json-file <项目路径>/functions/test_arguments/profit.fn.get_summary.json
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 4.3 函数发布未带 `--register-function-id`
|
|
141
|
+
|
|
142
|
+
仅 `script publish` 时代码入库,**不会**出现在 Onto → 函数列表,`function run` 失败。
|
|
143
|
+
|
|
144
|
+
```powershell
|
|
145
|
+
dazi onto script publish <项目路径>/functions/xxx_fn.py --space <空间> `
|
|
146
|
+
--register-function-id <domain>.fn.<name>
|
|
147
|
+
dazi onto function list --space <空间> # 必须能看到该 id
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
可选同时挂载平台分类:`--register-platform-category 总览分析`
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 5. 函数「未注册」(规划有、侧栏无)
|
|
155
|
+
|
|
156
|
+
| 现象 | 根因 |
|
|
157
|
+
| ---- | ---- |
|
|
158
|
+
| `CATEGORY_REGISTRY` / plans 列了 N 个函数 | 规划清单 ≠ 已发布函数 |
|
|
159
|
+
| `functions/` 文件数 < 规划数 | 脚本未写完 |
|
|
160
|
+
| `function list` 只有 1 条 | 多数未 `publish --register-function-id` |
|
|
161
|
+
|
|
162
|
+
**结论**:init **不负责**注册本体函数;每个 `functions/*.py` 须单独 publish 并注册。
|
|
163
|
+
|
|
164
|
+
**门禁**:规划函数数 = `functions/*.py` 数 = `function list` 条数。可运行 `functions/onto_preflight.ps1`(见 `资源/examples/onto/_templates/`)自动核对。
|
|
165
|
+
|
|
166
|
+
## 5.1 本体函数 publish-preview 静态预检
|
|
167
|
+
|
|
168
|
+
`dazi onto script publish-preview` / `script publish`(本体函数)会在本地检查:
|
|
169
|
+
|
|
170
|
+
| 级别 | 规则 |
|
|
171
|
+
| ---- | ---- |
|
|
172
|
+
| error | 禁止 `output.print_json`;须 `def main():`;须 `function_result(columns=...)` kwargs |
|
|
173
|
+
| warn | 缺少 `TEST_ARGUMENTS`;`params.get("start_date", "")` 空串默认 |
|
|
174
|
+
|
|
175
|
+
有 **error** 时预检失败,须修复后再 publish。
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 6. 平台分类挂载时机
|
|
180
|
+
|
|
181
|
+
**推荐**:与灌数一样,使用独立 `setup/*_category_mount.py`,放在流程**最后**:
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
init → seed → 发布全部函数 → category_mount
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
| 方式 | 何时 |
|
|
188
|
+
| ---- | ---- |
|
|
189
|
+
| **`*_category_mount.py`**(推荐) | 全量 `CATEGORY_REGISTRY` + `apply_registry`;函数齐后一次执行 |
|
|
190
|
+
| `--register-platform-category` | 单函数 publish 时内联(与 category_mount 幂等可并存) |
|
|
191
|
+
| init 内 `apply_registry` | **不推荐**(函数未 publish 时 function 段被跳过,须重跑 init) |
|
|
192
|
+
|
|
193
|
+
`skip_missing=True` 时,未注册函数会被跳过;**补发函数后只重跑 category_mount**,无需重跑 init。
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 7. 平台分类字典报错
|
|
198
|
+
|
|
199
|
+
**现象**:
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
ValueError: 平台分类字典中不存在分类: kind='table', category='维度表'
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
(旧版日志可能显示乱码,非脚本 UTF-8 损坏。)
|
|
206
|
+
|
|
207
|
+
**原因**:`category` 须为**平台标准分类中文名**(如「维度表」「事实表」),且测试环境 backend 须含完整平台分类字典。
|
|
208
|
+
|
|
209
|
+
**处理**:
|
|
210
|
+
|
|
211
|
+
1. 确认 `CATEGORY_REGISTRY` 使用标准名,与 [本体分类规划与SDK扩展方案](./本体分类规划与SDK扩展方案.md) 一致
|
|
212
|
+
2. 部署含 `s.categories` 与表类中文名索引的 backend 版本
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 8. 表/列显示名未写入
|
|
217
|
+
|
|
218
|
+
仅用 `register` + `sync_columns` 时,列 `description` **不会**自动写入规划中的业务说明。
|
|
219
|
+
|
|
220
|
+
**推荐**:
|
|
221
|
+
|
|
222
|
+
```python
|
|
223
|
+
s.tables.register_with_meta(
|
|
224
|
+
table_name,
|
|
225
|
+
display_name=meta["display_name"],
|
|
226
|
+
description=meta.get("description"),
|
|
227
|
+
columns=meta["columns"],
|
|
228
|
+
force_column_meta=True,
|
|
229
|
+
)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
见 [本体脚本编写指南 · 表注册](./本体脚本编写指南.md#表注册-table_registry--register_with_meta)。
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 9. 标准 CLI 顺序(通用)
|
|
237
|
+
|
|
238
|
+
在 `dazi-work` 根目录,将 `<项目路径>`、`<空间>` 替换为实际值。
|
|
239
|
+
|
|
240
|
+
```powershell
|
|
241
|
+
# 1. init
|
|
242
|
+
dazi onto script publish <项目路径>/setup/xxx_ontology_init.py --space <空间> --type setup
|
|
243
|
+
dazi onto script run --file <项目路径>/setup/xxx_ontology_init.py --space <空间>
|
|
244
|
+
|
|
245
|
+
# 2. seed(如有)
|
|
246
|
+
dazi onto script publish <项目路径>/setup/xxx_seed_data.py --space <空间> --type data
|
|
247
|
+
dazi onto script run --file <项目路径>/setup/xxx_seed_data.py --space <空间>
|
|
248
|
+
|
|
249
|
+
# 3. 每个本体函数
|
|
250
|
+
dazi onto script publish <项目路径>/functions/xxx_fn.py --space <空间> `
|
|
251
|
+
--register-function-id <domain>.fn.<name> `
|
|
252
|
+
--register-platform-category <平台分类名>
|
|
253
|
+
|
|
254
|
+
# 4. 平台分类挂载(最后一步,类灌数)
|
|
255
|
+
dazi onto script publish <项目路径>/setup/xxx_category_mount.py --space <空间> --type setup
|
|
256
|
+
dazi onto script run --file <项目路径>/setup/xxx_category_mount.py --space <空间>
|
|
257
|
+
|
|
258
|
+
# 5. 测试参数与验证
|
|
259
|
+
dazi onto function list --space <空间>
|
|
260
|
+
dazi onto function save-test-arguments <ofn_id> --space <空间> --arguments-json-file ...
|
|
261
|
+
dazi onto function run <function_id> --space <空间>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 10. 修改脚本后的重发流程
|
|
267
|
+
|
|
268
|
+
| 脚本类型 | 操作 |
|
|
269
|
+
| -------- | ---- |
|
|
270
|
+
| setup / data | `script publish` → `script run` |
|
|
271
|
+
| 本体函数 | `script publish`(含 `--register-function-id`)→ `function run` → 参数变更时重做 `save-test-arguments` |
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## 11. 命令速查
|
|
276
|
+
|
|
277
|
+
| 目的 | 命令 |
|
|
278
|
+
| ---- | ---- |
|
|
279
|
+
| 发布 setup | `dazi onto script publish <path> --space <空间> --type setup` |
|
|
280
|
+
| 发布 data | `dazi onto script publish <path> --space <空间> --type data` |
|
|
281
|
+
| 发布并注册函数 | `... --register-function-id <id> [--register-platform-category <分类>]` |
|
|
282
|
+
| 执行脚本 | `dazi onto script run --file <path> --space <空间>` |
|
|
283
|
+
| 运行函数 | `dazi onto function run <function_id> --space <空间>`(无参时回退 TEST_ARGUMENTS) |
|
|
284
|
+
| 函数列表 | `dazi onto function list --space <空间> [--json]` |
|
|
285
|
+
| 保存默认参数 | `dazi onto function save-test-arguments --function-id <id> --space <空间> --arguments-json-file <json>` |
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 12. 相关文档
|
|
290
|
+
|
|
291
|
+
| 文档 | 说明 |
|
|
292
|
+
| ---- | ---- |
|
|
293
|
+
| [本体脚本编写指南](./本体脚本编写指南.md) | 目录、四阶段实施、test_arguments |
|
|
294
|
+
| [本体函数开发指南](./function-guide.md) | 函数模板、`save-test-arguments` |
|
|
295
|
+
| [DaziScript SDK 参考](./dazi_script_sdk_reference.md) | API 与 `s.categories` |
|
|
296
|
+
| [本体开发优化总结](./本体开发优化总结.md) | 表显示名、平台分类、函数四阶段 |
|
|
297
|
+
| [故障排查](../guides/troubleshooting.md) | CLI 环境、401、侧栏空白 |
|
package/dist/examples/index.json
CHANGED
|
@@ -1,18 +1,222 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.
|
|
3
|
-
"updatedAt": "2026-06-
|
|
2
|
+
"version": "3.1.1",
|
|
3
|
+
"updatedAt": "2026-06-07T12:00:00.000Z",
|
|
4
4
|
"examples": [
|
|
5
5
|
{
|
|
6
6
|
"id": "onto/readme",
|
|
7
|
-
"title": "Onto
|
|
7
|
+
"title": "Onto 内置示例总览(销售 + 利润 + 设备运营)",
|
|
8
8
|
"category": "onto",
|
|
9
9
|
"file": "onto/README.md"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
|
-
"id": "onto/template/
|
|
13
|
-
"title": "
|
|
12
|
+
"id": "onto/template/onto-preflight",
|
|
13
|
+
"title": "Onto 函数 publish 门禁脚本模板",
|
|
14
14
|
"category": "onto-模板",
|
|
15
|
-
"file": "onto/_templates/
|
|
15
|
+
"file": "onto/_templates/onto_preflight.ps1"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "onto/index",
|
|
19
|
+
"title": "Onto 示例索引(index.yaml)",
|
|
20
|
+
"category": "onto",
|
|
21
|
+
"file": "onto/index.yaml"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "onto/index-json",
|
|
25
|
+
"title": "Onto 示例索引(index.json,CLI 机器可读)",
|
|
26
|
+
"category": "onto",
|
|
27
|
+
"file": "onto/index.json"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "onto/sales/readme",
|
|
31
|
+
"title": "销售示例 · 总览",
|
|
32
|
+
"category": "onto-销售",
|
|
33
|
+
"file": "onto/销售示例/README.md"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "onto/sales/plan",
|
|
37
|
+
"title": "销售示例 · 规划正文",
|
|
38
|
+
"category": "onto-销售",
|
|
39
|
+
"file": "onto/销售示例/plans/规划示例_产品销售本体规划方案.md"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "onto/profit/readme",
|
|
43
|
+
"title": "利润示例 · 总览",
|
|
44
|
+
"category": "onto-利润",
|
|
45
|
+
"file": "onto/利润示例/README.md"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "onto/profit/plan",
|
|
49
|
+
"title": "利润示例 · 规划正文",
|
|
50
|
+
"category": "onto-利润",
|
|
51
|
+
"file": "onto/利润示例/plans/规划示例_利润分析本体方案.md"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "onto/equip-ops/readme",
|
|
55
|
+
"title": "设备运营 · 总览",
|
|
56
|
+
"category": "onto-设备运营",
|
|
57
|
+
"file": "onto/设备运营/README.md"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "onto/equip-ops/plan",
|
|
61
|
+
"title": "设备运营 · 规划正文",
|
|
62
|
+
"category": "onto-设备运营",
|
|
63
|
+
"file": "onto/设备运营/plans/化工设备运营分析本体方案.md"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "onto/equip-ops/setup/ontology-init",
|
|
67
|
+
"title": "设备运营 · 本体初始化",
|
|
68
|
+
"category": "onto-设备运营-初始化",
|
|
69
|
+
"file": "onto/设备运营/setup/equip_ops_ontology_init.py"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "onto/equip-ops/setup/seed-data",
|
|
73
|
+
"title": "设备运营 · 演示灌数",
|
|
74
|
+
"category": "onto-设备运营-初始化",
|
|
75
|
+
"file": "onto/设备运营/setup/equip_ops_seed_data.py"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "onto/equip-ops/setup/category-mount",
|
|
79
|
+
"title": "设备运营 · 平台分类挂载",
|
|
80
|
+
"category": "onto-设备运营-初始化",
|
|
81
|
+
"file": "onto/设备运营/setup/equip_ops_category_mount.py"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "onto/equip-ops/function/get-summary",
|
|
85
|
+
"title": "设备运营 · 运营总览",
|
|
86
|
+
"category": "onto-设备运营-函数",
|
|
87
|
+
"file": "onto/设备运营/functions/equip_ops_fn_get_summary.py"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "onto/equip-ops/function/oee",
|
|
91
|
+
"title": "设备运营 · OEE 分析",
|
|
92
|
+
"category": "onto-设备运营-函数",
|
|
93
|
+
"file": "onto/设备运营/functions/equip_ops_fn_oee_analysis.py"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "onto/equip-ops/function/availability",
|
|
97
|
+
"title": "设备运营 · 可用率分析",
|
|
98
|
+
"category": "onto-设备运营-函数",
|
|
99
|
+
"file": "onto/设备运营/functions/equip_ops_fn_availability_analysis.py"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "onto/equip-ops/function/downtime-breakdown",
|
|
103
|
+
"title": "设备运营 · 停机分解",
|
|
104
|
+
"category": "onto-设备运营-函数",
|
|
105
|
+
"file": "onto/设备运营/functions/equip_ops_fn_downtime_breakdown.py"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "onto/equip-ops/function/maintenance-compliance",
|
|
109
|
+
"title": "设备运营 · 维保合规",
|
|
110
|
+
"category": "onto-设备运营-函数",
|
|
111
|
+
"file": "onto/设备运营/functions/equip_ops_fn_maintenance_compliance.py"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "onto/equip-ops/function/energy-intensity",
|
|
115
|
+
"title": "设备运营 · 能耗强度",
|
|
116
|
+
"category": "onto-设备运营-函数",
|
|
117
|
+
"file": "onto/设备运营/functions/equip_ops_fn_energy_intensity.py"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "onto/equip-ops/function/plan-vs-actual",
|
|
121
|
+
"title": "设备运营 · 计划 vs 实际",
|
|
122
|
+
"category": "onto-设备运营-函数",
|
|
123
|
+
"file": "onto/设备运营/functions/equip_ops_fn_plan_vs_actual.py"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"id": "onto/equip-ops/function/unit-comparison",
|
|
127
|
+
"title": "设备运营 · 装置对比",
|
|
128
|
+
"category": "onto-设备运营-函数",
|
|
129
|
+
"file": "onto/设备运营/functions/equip_ops_fn_unit_comparison.py"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "onto/equip-ops/function/top-fault-equipment",
|
|
133
|
+
"title": "设备运营 · 故障设备 Top N",
|
|
134
|
+
"category": "onto-设备运营-函数",
|
|
135
|
+
"file": "onto/设备运营/functions/equip_ops_fn_top_fault_equipment.py"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "onto/equip-ops/function/yoy",
|
|
139
|
+
"title": "设备运营 · 同比 (YoY)",
|
|
140
|
+
"category": "onto-设备运营-函数",
|
|
141
|
+
"file": "onto/设备运营/functions/equip_ops_fn_yoy_analysis.py"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "onto/equip-ops/function/mom",
|
|
145
|
+
"title": "设备运营 · 环比 (MoM)",
|
|
146
|
+
"category": "onto-设备运营-函数",
|
|
147
|
+
"file": "onto/设备运营/functions/equip_ops_fn_mom_analysis.py"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "onto/equip-ops/function/save-test-arguments",
|
|
151
|
+
"title": "设备运营 · 批量保存 test_arguments",
|
|
152
|
+
"category": "onto-设备运营-工具",
|
|
153
|
+
"file": "onto/设备运营/functions/save_test_arguments.ps1"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"id": "onto/equip-ops/test-args/get-summary",
|
|
157
|
+
"title": "test_arguments · equip_ops.fn.get_summary",
|
|
158
|
+
"category": "onto-设备运营-测试参数",
|
|
159
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.get_summary.json"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"id": "onto/equip-ops/test-args/oee",
|
|
163
|
+
"title": "test_arguments · equip_ops.fn.oee_analysis",
|
|
164
|
+
"category": "onto-设备运营-测试参数",
|
|
165
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.oee_analysis.json"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"id": "onto/equip-ops/test-args/availability",
|
|
169
|
+
"title": "test_arguments · equip_ops.fn.availability_analysis",
|
|
170
|
+
"category": "onto-设备运营-测试参数",
|
|
171
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.availability_analysis.json"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"id": "onto/equip-ops/test-args/downtime-breakdown",
|
|
175
|
+
"title": "test_arguments · equip_ops.fn.downtime_breakdown",
|
|
176
|
+
"category": "onto-设备运营-测试参数",
|
|
177
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.downtime_breakdown.json"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"id": "onto/equip-ops/test-args/maintenance-compliance",
|
|
181
|
+
"title": "test_arguments · equip_ops.fn.maintenance_compliance",
|
|
182
|
+
"category": "onto-设备运营-测试参数",
|
|
183
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.maintenance_compliance.json"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"id": "onto/equip-ops/test-args/energy-intensity",
|
|
187
|
+
"title": "test_arguments · equip_ops.fn.energy_intensity",
|
|
188
|
+
"category": "onto-设备运营-测试参数",
|
|
189
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.energy_intensity.json"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"id": "onto/equip-ops/test-args/plan-vs-actual",
|
|
193
|
+
"title": "test_arguments · equip_ops.fn.plan_vs_actual",
|
|
194
|
+
"category": "onto-设备运营-测试参数",
|
|
195
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.plan_vs_actual.json"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"id": "onto/equip-ops/test-args/unit-comparison",
|
|
199
|
+
"title": "test_arguments · equip_ops.fn.unit_comparison",
|
|
200
|
+
"category": "onto-设备运营-测试参数",
|
|
201
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.unit_comparison.json"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"id": "onto/equip-ops/test-args/top-fault-equipment",
|
|
205
|
+
"title": "test_arguments · equip_ops.fn.top_fault_equipment",
|
|
206
|
+
"category": "onto-设备运营-测试参数",
|
|
207
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.top_fault_equipment.json"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"id": "onto/equip-ops/test-args/yoy",
|
|
211
|
+
"title": "test_arguments · equip_ops.fn.yoy_analysis",
|
|
212
|
+
"category": "onto-设备运营-测试参数",
|
|
213
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.yoy_analysis.json"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"id": "onto/equip-ops/test-args/mom",
|
|
217
|
+
"title": "test_arguments · equip_ops.fn.mom_analysis",
|
|
218
|
+
"category": "onto-设备运营-测试参数",
|
|
219
|
+
"file": "onto/设备运营/functions/test_arguments/equip_ops.fn.mom_analysis.json"
|
|
16
220
|
},
|
|
17
221
|
{
|
|
18
222
|
"id": "onto/profit/setup/ontology-init",
|
|
@@ -26,6 +230,12 @@
|
|
|
26
230
|
"category": "onto-利润-初始化",
|
|
27
231
|
"file": "onto/利润示例/setup/profit_seed_data.py"
|
|
28
232
|
},
|
|
233
|
+
{
|
|
234
|
+
"id": "onto/profit/setup/category-mount",
|
|
235
|
+
"title": "利润分析 · 平台分类挂载",
|
|
236
|
+
"category": "onto-利润-初始化",
|
|
237
|
+
"file": "onto/利润示例/setup/profit_category_mount.py"
|
|
238
|
+
},
|
|
29
239
|
{
|
|
30
240
|
"id": "onto/profit/function/get-summary",
|
|
31
241
|
"title": "利润分析 · 利润总览",
|
|
@@ -128,6 +338,12 @@
|
|
|
128
338
|
"category": "onto-销售-初始化",
|
|
129
339
|
"file": "onto/销售示例/setup/sales_seed_data.py"
|
|
130
340
|
},
|
|
341
|
+
{
|
|
342
|
+
"id": "onto/sales/setup/category-mount",
|
|
343
|
+
"title": "产品销售 · 平台分类挂载",
|
|
344
|
+
"category": "onto-销售-初始化",
|
|
345
|
+
"file": "onto/销售示例/setup/sales_category_mount.py"
|
|
346
|
+
},
|
|
131
347
|
{
|
|
132
348
|
"id": "onto/sales/function/get-summary",
|
|
133
349
|
"title": "产品销售 · 销售概览",
|
|
@@ -1,51 +1,49 @@
|
|
|
1
1
|
# Onto 内置示例
|
|
2
2
|
|
|
3
|
-
`dazi examples sync` 后位于 **`资源/examples/onto
|
|
3
|
+
`dazi examples sync` 后位于 **`资源/examples/onto/`**。每个子目录是**完整本体单元**(与业务 `ontos/<实现>/` 同构):
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
```text
|
|
6
|
+
<示例名>/
|
|
7
|
+
├── README.md
|
|
8
|
+
├── plans/ ← ★ 规划正文(真理源)
|
|
9
|
+
├── setup/ ← init、seed、category_mount
|
|
10
|
+
└── functions/ ← 本体函数 + test_arguments
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
**规划 / 脚本前**:须至少阅读 **一个** 示例的 `README.md` + `plans/*.md`。索引见 **`index.yaml`** / **`index.json`**(`dazi examples onto list`)。
|
|
6
14
|
|
|
7
|
-
|
|
8
|
-
|------|------|----------|
|
|
9
|
-
| `setup/profit_ontology_init.py` | GL 域 init(科目/分录/预算表、Cube、对象、链接) | [规划示例_利润分析本体方案](../../docs/onto/规划示例_利润分析本体方案.md) |
|
|
10
|
-
| `setup/profit_seed_data.py` | 演示灌数(科目树、成本中心、实际分录、预算) | 同上 |
|
|
11
|
-
| `functions/profit_fn_*.py` | 7 个 GL 分析函数(总览/同比/环比/预实/科目/组织/Top 科目) | 同上 |
|
|
12
|
-
| `functions/test_arguments/*.json` | 各 `profit.fn.*` 默认测试入参 | 规划 §6.5 |
|
|
13
|
-
| `functions/save_test_arguments.ps1` | 批量写入平台 `test_arguments` | 发布函数后执行 |
|
|
15
|
+
## 示例一览
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
| 目录 | 域 | 规划(plans/) | 函数数 |
|
|
18
|
+
|------|-----|----------------|--------|
|
|
19
|
+
| [销售示例](./销售示例/) | 销售、订单、渠道 | `规划示例_产品销售本体规划方案.md` | 7 |
|
|
20
|
+
| [利润示例](./利润示例/) | GL、科目、预实 | `规划示例_利润分析本体方案.md` | 7 |
|
|
21
|
+
| [设备运营](./设备运营/) | 设备、OEE、停机 | `化工设备运营分析本体方案.md` | 11 |
|
|
16
22
|
|
|
17
|
-
|
|
23
|
+
> 规划正文仅在 `examples/onto/<示例>/plans/`;`dazi examples onto show <id> --plan`。
|
|
18
24
|
|
|
19
|
-
##
|
|
25
|
+
## 复制到业务项目
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
| `functions/sales_fn_*.py` | 7 个销售分析函数 | 同上 |
|
|
26
|
-
| `functions/test_arguments/*.json` | 各 `function_id` 默认测试入参 | 与规划 §函数清单一致 |
|
|
27
|
-
| `functions/save_test_arguments.ps1` | 批量写入平台 `test_arguments` | 发布函数后执行 |
|
|
27
|
+
```text
|
|
28
|
+
资源/examples/onto/<示例>/setup/* → 项目/<业务>/本体/ontos/<实现>/setup/
|
|
29
|
+
资源/examples/onto/<示例>/functions/* → 项目/<业务>/本体/ontos/<实现>/functions/
|
|
30
|
+
```
|
|
28
31
|
|
|
29
|
-
|
|
32
|
+
规划须在本项目 **`plans/` 独立撰写**;示例 `plans/` 仅供只读对照(见快速启动 §0)。
|
|
30
33
|
|
|
31
|
-
##
|
|
34
|
+
## 模板与工具
|
|
32
35
|
|
|
33
36
|
| 路径 | 说明 |
|
|
34
37
|
|------|------|
|
|
35
|
-
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
资源/examples/onto/利润示例/functions/test_arguments/ → .../functions/test_arguments/
|
|
45
|
-
|
|
46
|
-
资源/examples/onto/销售示例/setup/*.py → 项目/<业务>/本体/ontos/<实现>/setup/
|
|
47
|
-
资源/examples/onto/销售示例/functions/*.py → 项目/<业务>/本体/ontos/<实现>/functions/
|
|
48
|
-
资源/examples/onto/销售示例/functions/test_arguments/ → .../functions/test_arguments/
|
|
38
|
+
| [_templates/ontology_function_template.py](./_templates/ontology_function_template.py) | 新建函数结构模板 |
|
|
39
|
+
| [_templates/onto_preflight.ps1](./_templates/onto_preflight.ps1) | 函数数 / publish-preview 门禁 |
|
|
40
|
+
|
|
41
|
+
```powershell
|
|
42
|
+
dazi examples onto list
|
|
43
|
+
dazi examples onto suggest 设备 OEE
|
|
44
|
+
dazi examples onto show equip-ops --plan
|
|
45
|
+
dazi examples list --category onto
|
|
46
|
+
dazi examples show onto/readme
|
|
49
47
|
```
|
|
50
48
|
|
|
51
|
-
侧栏 **帮助 → 示例**
|
|
49
|
+
侧栏 **帮助 → 示例** 可按 `onto-销售-函数`、`onto-设备运营-函数` 等分类浏览。
|