@dazitech/cli 3.0.7 → 3.0.8
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 +1 -1
- package/dist/clis/dazi-flow.js +1 -1
- package/dist/clis/dazi-onto.js +73 -22
- package/dist/clis/dazi.js +266 -171
- package/dist/docs/flow/flow-project-guide.md +1 -1
- package/dist/docs/guides/quickstart.md +18 -4
- package/dist/docs/guides/troubleshooting.md +1 -1
- package/dist/docs/guides/workspace-v3.md +43 -23
- package/dist/docs/index.json +9 -3
- package/dist/docs/onto/action-guide.md +3 -3
- package/dist/docs/onto/dazi_script_sdk_reference.md +178 -174
- package/dist/docs/onto/dazi_script_seed_data_guide.md +158 -155
- package/dist/docs/onto/function-guide.md +37 -10
- package/dist/docs/onto/space-management.md +3 -1
- 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 +138 -34
- package/dist/docs/onto//346/234/254/344/275/223/350/247/204/345/210/222/346/214/207/345/215/227.md +73 -31
- package/dist/docs/onto//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 +497 -0
- package/dist/docs/onto//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 +597 -541
- package/dist/examples/index.json +202 -22
- package/dist/examples/onto/README.md +43 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/profit_fn_account_breakdown.py +99 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/profit_fn_budget_vs_actual.py +116 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/profit_fn_cost_center_profit.py +85 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/profit_fn_get_summary.py +76 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/profit_fn_mom_analysis.py +86 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/profit_fn_top_accounts.py +103 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/profit_fn_yoy_analysis.py +86 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/save_test_arguments.ps1 +27 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/test_arguments/profit.fn.account_breakdown.json +10 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/test_arguments/profit.fn.budget_vs_actual.json +10 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/test_arguments/profit.fn.cost_center_profit.json +9 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/test_arguments/profit.fn.get_summary.json +9 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/test_arguments/profit.fn.mom_analysis.json +9 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/test_arguments/profit.fn.top_accounts.json +11 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/function/test_arguments/profit.fn.yoy_analysis.json +9 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/setup/profit_ontology_init.py +521 -0
- package/dist/examples/onto//345/210/251/346/266/246/347/244/272/344/276/213/setup/profit_seed_data.py +213 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/README.md +25 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/sales_fn_channel_mix.py +86 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/sales_fn_customer_segmentation.py +123 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/sales_fn_get_summary.py +81 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/sales_fn_mom_analysis.py +90 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/sales_fn_region_breakdown.py +85 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/sales_fn_top_products.py +101 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/sales_fn_yoy_analysis.py +90 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/save_test_arguments.ps1 +25 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/test_arguments/sales.fn.channel_mix.json +8 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/test_arguments/sales.fn.customer_segmentation.json +10 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/test_arguments/sales.fn.get_summary.json +8 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/test_arguments/sales.fn.mom_analysis.json +8 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/test_arguments/sales.fn.region_breakdown.json +8 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/test_arguments/sales.fn.top_products.json +10 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/functions/test_arguments/sales.fn.yoy_analysis.json +8 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/setup/README.md +5 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/setup/sales_ontology_init.py +403 -0
- package/dist/examples/onto//351/224/200/345/224/256/347/244/272/344/276/213/setup/sales_seed_data.py +124 -0
- package/dist/prompts/index.json +2 -2
- package/dist/prompts/onto/action-design.md +4 -1
- package/dist/prompts/onto/function-design.md +9 -2
- package/dist/prompts/onto/rule-seed.md +5 -1
- package/dist/prompts/onto/script-publish-run.md +72 -24
- package/package.json +1 -1
- package/dist/examples/onto/function/profit_fn_customer_segmentation.py +0 -117
- package/dist/examples/onto/function/profit_fn_mom_analysis.py +0 -89
- package/dist/examples/onto/function/profit_fn_top_products.py +0 -89
- package/dist/examples/onto/function/profit_fn_yoy_analysis.py +0 -89
- package/dist/examples/onto/setup/profit_ontology_init.py +0 -388
|
@@ -17,8 +17,11 @@ code --install-extension dazi-vscode-3.x.x.vsix
|
|
|
17
17
|
|
|
18
18
|
### 2. 打开工作区
|
|
19
19
|
|
|
20
|
-
将 **`dazi-work`** 文件夹作为 VS Code 工作区根目录打开(含 `项目/`、`资源/`、`scripts/`)。
|
|
21
|
-
|
|
20
|
+
将 **`dazi-work`** 文件夹作为 VS Code 工作区根目录打开(含 `项目/`、`资源/`、`scripts/`)。
|
|
21
|
+
|
|
22
|
+
业务项目位于 **`项目/<业务名>/`**,内含固定子目录 `本体/`、`流程/`、`应用/`。
|
|
23
|
+
本体开发入口为 **`项目/<业务名>/本体/ontos/<实现名>/`**(含 `plans/`、`setup/`、`functions/`;`space_id` 写在 `README.md`)。
|
|
24
|
+
应用组件位于 **`项目/<业务名>/应用/apps/<app_id>/`**(见 [§331](../../docs/331-应用项目多项目与组件重构.md))。
|
|
22
25
|
|
|
23
26
|
### 3. 自检 CLI
|
|
24
27
|
|
|
@@ -49,11 +52,21 @@ dazi auth set-token --token "your-jwt-token"
|
|
|
49
52
|
|
|
50
53
|
### 6. 初始化工作区
|
|
51
54
|
|
|
55
|
+
**推荐(v3 业务项目 + per-item 本体)**:
|
|
56
|
+
|
|
57
|
+
1. 命令面板执行 **搭子: 新建业务项目**,创建 `项目/<业务名>/`
|
|
58
|
+
2. 命令面板执行 **搭子: 新建本体实现**,在 `本体/ontos/<实现名>/` 下生成 `plans/`、`setup/`、`functions/` 及 `快速启动_<实现名>.md`
|
|
59
|
+
3. 在 `ontos/<实现名>/README.md` 中确认或填写数据空间 ID
|
|
60
|
+
|
|
61
|
+
**兼容(历史 CLI 布局,非日常开发入口)**:
|
|
62
|
+
|
|
52
63
|
```powershell
|
|
53
|
-
# 新项目(本体空间)
|
|
54
64
|
dazi onto space init --space-id <your-space-id>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
已有 v2 项目迁移:
|
|
55
68
|
|
|
56
|
-
|
|
69
|
+
```powershell
|
|
57
70
|
dazi migrate workspace
|
|
58
71
|
```
|
|
59
72
|
|
|
@@ -72,6 +85,7 @@ dazi auth whoami
|
|
|
72
85
|
- [CLI 调用约定](./cli-invocation.md)
|
|
73
86
|
- [认证管理](../auth/auth-login.md)
|
|
74
87
|
- [本体开发入门](../onto/space-management.md)
|
|
88
|
+
- [工作区 v3 规范](./workspace-v3.md) — 业务项目目录树与 per-item 本体结构
|
|
75
89
|
- [数据流程项目开发](../flow/flow-project-guide.md) — **推荐**:`项目/<业务名>/流程/flows/`、菜单、pull/push
|
|
76
90
|
- [节点代码编写](../flow/node-code-guide.md) — python-script、sql-query 等
|
|
77
91
|
- [流程开发索引](../flow/flows-guide.md) — Flow 文档入口
|
|
@@ -84,7 +84,7 @@ dazi doctor --workspace-root D:\path\to\dazi-work
|
|
|
84
84
|
检查 `.cursor/mcp.json` 配置。MCP 需能调用 bundled CLI,示例:
|
|
85
85
|
|
|
86
86
|
```powershell
|
|
87
|
-
$env:DAZI_BUNDLED_DIR = "$env:USERPROFILE\.cursor\extensions\dazitech.dazi-vscode-3.0.
|
|
87
|
+
$env:DAZI_BUNDLED_DIR = "$env:USERPROFILE\.cursor\extensions\dazitech.dazi-vscode-3.0.7\bundled\clis"
|
|
88
88
|
node "$env:DAZI_BUNDLED_DIR\dazi.js" mcp stdio
|
|
89
89
|
```
|
|
90
90
|
|
|
@@ -2,52 +2,72 @@
|
|
|
2
2
|
|
|
3
3
|
**文档 ID**: `guides/workspace-v3`
|
|
4
4
|
**适用版本**: dazi-vscode v3.0+
|
|
5
|
-
**最后更新**: 2026-05-
|
|
5
|
+
**最后更新**: 2026-06-05(业务项目 + per-item 本体结构)
|
|
6
6
|
|
|
7
7
|
## 目录结构(搭子工作区,如 dazi-work)
|
|
8
8
|
|
|
9
9
|
```text
|
|
10
10
|
<workspace>/
|
|
11
11
|
├── 项目/
|
|
12
|
-
│
|
|
13
|
-
│
|
|
14
|
-
├──
|
|
15
|
-
├──
|
|
16
|
-
├──
|
|
17
|
-
└──
|
|
12
|
+
│ └── <业务名>/ ← 业务项目(固定子目录:本体、流程、应用)
|
|
13
|
+
│ ├── README.md
|
|
14
|
+
│ ├── 本体/
|
|
15
|
+
│ │ ├── README.md
|
|
16
|
+
│ │ ├── onto-assets/ ← 平台元数据缓存(侧栏懒拉取)
|
|
17
|
+
│ │ └── ontos/
|
|
18
|
+
│ │ └── <实现名>/ ← ★ 本体实现工作单元
|
|
19
|
+
│ │ ├── README.md ← space_id(权威)
|
|
20
|
+
│ │ ├── 快速启动_<实现名>.md
|
|
21
|
+
│ │ ├── plans/ ← 本实现规划
|
|
22
|
+
│ │ ├── setup/ ← init / seed 脚本
|
|
23
|
+
│ │ └── functions/ ← 本体函数
|
|
24
|
+
│ ├── 流程/
|
|
25
|
+
│ │ ├── plans/
|
|
26
|
+
│ │ └── flows/<流程名>/...
|
|
27
|
+
│ └── 应用/
|
|
28
|
+
│ ├── plans/
|
|
29
|
+
│ └── apps/<组件名>/...
|
|
30
|
+
├── 资源/ ← 帮助文档、提示词等(dazi docs sync)
|
|
31
|
+
├── scripts/ ← dazi.ps1、doctor-cli(终端 CLI 包装)
|
|
32
|
+
├── tools/dazi-clis/ ← 可选:离线 bundled CLI 副本
|
|
33
|
+
└── (可选)runtime-apps/ ← 兼容旧布局
|
|
18
34
|
```
|
|
19
35
|
|
|
20
|
-
> v3.1+
|
|
36
|
+
> v3.1+ 应用项目位于 `项目/<业务名>/应用/apps/<组件名>/`。详见 [§331](../../docs/331-应用项目多项目与组件重构.md)。
|
|
21
37
|
|
|
22
38
|
## 目录说明
|
|
23
39
|
|
|
24
|
-
| 路径
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
40
|
+
| 路径 | 对应 CLI | 用途 |
|
|
41
|
+
| ---------------------------------------------------------- | ------------------------------------------ | -------------------------------------- |
|
|
42
|
+
| `项目/<业务名>/本体/ontos/<实现名>/` | `dazi onto ...` | 本体规划、脚本、发布(per-item spaceId) |
|
|
43
|
+
| `项目/<业务名>/本体/onto-assets/` | `dazi onto ...` | 平台对象/函数/动作/规则缓存 |
|
|
44
|
+
| `项目/<业务名>/流程/flows/<流程名>/` | `dazi flow ...` | 数据流程定义与节点代码 |
|
|
45
|
+
| `项目/<业务名>/应用/apps/<app_id>/` | `pnpm run dazi-app -- ...`(在应用项目根) | DRAP 应用组件源码 |
|
|
46
|
+
| `资源/docs/` | `dazi docs ...` | 同步后的内置文档 |
|
|
47
|
+
| `scripts/` | `dazi ...` | 本体/流程/鉴权/数据(非 DRAP) |
|
|
48
|
+
| `~/.dazi/auth.json` | 共享 | 登录凭据(扩展与 CLI 共用) |
|
|
32
49
|
|
|
33
50
|
## 扩展侧栏对应
|
|
34
51
|
|
|
35
|
-
| 侧栏 | 工作区路径
|
|
36
|
-
| -------- |
|
|
37
|
-
| 本体 |
|
|
38
|
-
|
|
|
39
|
-
|
|
|
52
|
+
| 侧栏 | 工作区路径 |
|
|
53
|
+
| -------- | ------------------------------------------------------- |
|
|
54
|
+
| 本体 | `项目/<业务名>/本体/ontos/<实现名>/` → plans/setup/functions |
|
|
55
|
+
| 流程 | `项目/<业务名>/流程/flows/<流程名>/` |
|
|
56
|
+
| App 应用 | `项目/<业务名>/应用/apps/<app_id>/` |
|
|
57
|
+
| 数据资源 | 平台数据空间(非目录) |
|
|
40
58
|
|
|
41
59
|
## v2 → v3 目录映射
|
|
42
60
|
|
|
43
61
|
| v2 | v3(搭子工作区) |
|
|
44
62
|
| ----------------------- | ---------------------------------------------------------------- |
|
|
45
|
-
| `ontology/` |
|
|
46
|
-
|
|
|
63
|
+
| `ontology/` | `项目/<业务名>/本体/ontos/<实现名>/` |
|
|
64
|
+
| `项目/onto_<名称>/` | `项目/<业务名>/本体/ontos/<实现名>/`(并入业务项目) |
|
|
65
|
+
| `runtime-apps/apps/*` | `项目/<业务名>/应用/apps/*`(推荐)或 `<ws>/runtime-apps/apps/*`(兼容) |
|
|
47
66
|
| `.dazi-agent/auth.json` | `~/.dazi/auth.json` |
|
|
48
67
|
|
|
49
68
|
## 相关文档
|
|
50
69
|
|
|
51
70
|
- [§331 应用项目多项目与组件重构](../../docs/331-应用项目多项目与组件重构.md)
|
|
52
71
|
- [§333 本轮扩展总结](../../docs/333-dazi-vscode应用项目多项目与本轮优化总结.md)
|
|
72
|
+
- [§346 本体结构对齐开发方案](../../docs/346-dazi-vscode本体结构对齐开发方案.md)
|
|
53
73
|
- [CLI 调用约定](./cli-invocation.md)
|
package/dist/docs/index.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.0.
|
|
3
|
-
"updatedAt": "2026-
|
|
2
|
+
"version": "3.0.9",
|
|
3
|
+
"updatedAt": "2026-06-05T12:00:00.000Z",
|
|
4
4
|
"docs": [
|
|
5
5
|
{
|
|
6
6
|
"id": "guides/quickstart",
|
|
@@ -88,10 +88,16 @@
|
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
"id": "onto/planning-example-profit",
|
|
91
|
-
"title": "
|
|
91
|
+
"title": "规划示例:利润分析本体(GL 域)",
|
|
92
92
|
"category": "onto",
|
|
93
93
|
"file": "onto/规划示例_利润分析本体方案.md"
|
|
94
94
|
},
|
|
95
|
+
{
|
|
96
|
+
"id": "onto/planning-example-sales",
|
|
97
|
+
"title": "规划示例:产品销售本体",
|
|
98
|
+
"category": "onto",
|
|
99
|
+
"file": "onto/规划示例_产品销售本体规划方案.md"
|
|
100
|
+
},
|
|
95
101
|
{
|
|
96
102
|
"id": "onto/script-authoring",
|
|
97
103
|
"title": "本体脚本编写指南(含发布)",
|
|
@@ -18,16 +18,16 @@ dazi onto action list --space <space-id>
|
|
|
18
18
|
|
|
19
19
|
## 发布 Action
|
|
20
20
|
|
|
21
|
-
脚本放在
|
|
21
|
+
脚本放在 **`项目/<业务名>/本体/ontos/<实现名>/functions/`**(可与函数脚本同目录,用文件名区分):
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
dazi onto script publish
|
|
24
|
+
dazi onto script publish 项目/<业务名>/本体/ontos/<实现名>/functions/my_action.py \
|
|
25
25
|
--space <space-id> \
|
|
26
26
|
--register-action-id my_action_code \
|
|
27
27
|
--register-action-permission-tag "finance.write"
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
`<space-id>`
|
|
30
|
+
`<space-id>` 取自实现单元 **`README.md`**(`项目/<业务名>/本体/ontos/<实现名>/README.md`)。
|
|
31
31
|
|
|
32
32
|
## 更新 Action 代码
|
|
33
33
|
|
|
@@ -1,174 +1,178 @@
|
|
|
1
|
-
# DaziScript SDK 参考
|
|
2
|
-
|
|
3
|
-
**文档 ID**: `onto/dazi-script-sdk-reference`
|
|
4
|
-
**适用**: dazi-vscode v3 + 搭子平台 DaziScript(ClickHouse 数据空间)
|
|
5
|
-
|
|
6
|
-
> 给 LLM 与开发者提供精简、可执行的 SDK 规范。脚本目录、类型与 **`dazi onto script publish`** 等见 **[本体脚本编写指南](./本体脚本编写指南.md)**。
|
|
7
|
-
|
|
8
|
-
## 1. 工作区与脚本放置(dazi-vscode)
|
|
9
|
-
|
|
10
|
-
| 用途 | 路径 |
|
|
11
|
-
| -------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
12
|
-
| **日常开发**(推荐) |
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
- `
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- `
|
|
34
|
-
- `s.
|
|
35
|
-
- `s.
|
|
36
|
-
- `s.
|
|
37
|
-
- `s.
|
|
38
|
-
- `s.
|
|
39
|
-
- `s.
|
|
40
|
-
- `
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- `s = space.
|
|
97
|
-
- `space.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
- `s.sql.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- `s.tables.
|
|
113
|
-
- `s.tables.
|
|
114
|
-
- `s.tables.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
- `s.onto.
|
|
124
|
-
- `s.onto.
|
|
125
|
-
- `s.onto.
|
|
126
|
-
- `s.onto.
|
|
127
|
-
- `s.onto.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
1
|
+
# DaziScript SDK 参考
|
|
2
|
+
|
|
3
|
+
**文档 ID**: `onto/dazi-script-sdk-reference`
|
|
4
|
+
**适用**: dazi-vscode v3 + 搭子平台 DaziScript(ClickHouse 数据空间)
|
|
5
|
+
|
|
6
|
+
> 给 LLM 与开发者提供精简、可执行的 SDK 规范。脚本目录、类型与 **`dazi onto script publish`** 等见 **[本体脚本编写指南](./本体脚本编写指南.md)**。
|
|
7
|
+
|
|
8
|
+
## 1. 工作区与脚本放置(dazi-vscode)
|
|
9
|
+
|
|
10
|
+
| 用途 | 路径 |
|
|
11
|
+
| -------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
12
|
+
| **日常开发**(推荐) | `<工作区根>/项目/<业务名>/本体/ontos/<实现名>/setup/*.py`(初始化、灌数) |
|
|
13
|
+
| | `<工作区根>/项目/<业务名>/本体/ontos/<实现名>/functions/*.py`(本体函数、动作) |
|
|
14
|
+
| **空间 ID** | `项目/<业务名>/本体/ontos/<实现名>/README.md` 中的数据空间 ID |
|
|
15
|
+
| **参考示例** | **`资源/examples/onto/利润示例/`**、**`资源/examples/onto/销售示例/`**(侧栏 **帮助 → 示例** 或 `dazi examples sync`;总览 `onto/README.md`) |
|
|
16
|
+
| **本文档** | `资源/docs/onto/dazi_script_sdk_reference.md`(`dazi docs sync` 后) |
|
|
17
|
+
|
|
18
|
+
- **禁止**将 `onto/<space_id>/editorial/` 作为 v3 本地开发约定(历史路径,仅 CLI `script sync` 可能拉回平台副本)。
|
|
19
|
+
- 脚本入口仅需定义 **`main()`**;平台执行时自动调用,**不要**写 `if __name__ == "__main__":`。
|
|
20
|
+
|
|
21
|
+
## 2. 基本约束
|
|
22
|
+
|
|
23
|
+
- 数据引擎:**ClickHouse**
|
|
24
|
+
- 新建空间须显式指定(若脚本内创建空间):
|
|
25
|
+
- `storage_engine="clickhouse"`
|
|
26
|
+
- `connection_config={"database": "<db_name>"}`
|
|
27
|
+
- 执行前确认已登录(`dazi auth whoami`)且 `dazi.serverUrl` 正确。
|
|
28
|
+
|
|
29
|
+
## 3. 顶层对象与推荐调用
|
|
30
|
+
|
|
31
|
+
常用对象:
|
|
32
|
+
|
|
33
|
+
- `space`:空间管理与切换
|
|
34
|
+
- `s.sql`:原始 SQL
|
|
35
|
+
- `s.tables`:表注册与列同步
|
|
36
|
+
- `s.register_cube(...)`:Cube 注册
|
|
37
|
+
- `s.onto`:本体定义(对象、属性、链接、函数、活动)
|
|
38
|
+
- `s.ontology`:对象中心能力(objects/features)
|
|
39
|
+
- `s.ontology_rules`:规则集与规则
|
|
40
|
+
- `s.scripts`:脚本记录管理
|
|
41
|
+
- `output`:打印与成功提示(`output.print` / `output.success`)
|
|
42
|
+
|
|
43
|
+
命名规范(便于 LLM 推断):
|
|
44
|
+
|
|
45
|
+
- 读操作:`exists_*`、`get_*`、`require_*`、`list_*`
|
|
46
|
+
- 写操作:`create_*`、`ensure_*`、`update_*`、`delete_*`
|
|
47
|
+
- 派生/同步:`create_from_*`、`sync_*`
|
|
48
|
+
|
|
49
|
+
推荐本体落库路径(与 **[本体规划指南](./本体规划指南.md)** 一致):
|
|
50
|
+
|
|
51
|
+
1. `s.onto.define_object_type` → `s.onto.bind_source(..., "dazi_cube", config={"cube": ...})`
|
|
52
|
+
2. `s.onto.define_property`(`dimension` / `measure` 须带与 Cube 成员一致的 `qualified_name`)
|
|
53
|
+
3. `s.onto.define_link_type`(两端为对象类型 **`code`**,非 Cube 名)
|
|
54
|
+
4. `s.onto.register_function` / `s.onto.define_action`
|
|
55
|
+
5. `s.ontology.features.attach(object_code, feature_type, feature_id)`(`feature_type`: `function | action | rule`)
|
|
56
|
+
|
|
57
|
+
**关于 `s.ontology.objects.create_from_cubes`**:SDK 仍提供,**易与业务语义脱节**;规划文档、示例包与交付脚本**不应依赖**。仅隔离烟测按需使用。
|
|
58
|
+
|
|
59
|
+
## 4. 返回结构规范
|
|
60
|
+
|
|
61
|
+
### 4.1 批量派生返回(ResultBatch)
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"ok": true,
|
|
66
|
+
"created": [],
|
|
67
|
+
"updated": [],
|
|
68
|
+
"skipped": [],
|
|
69
|
+
"errors": [],
|
|
70
|
+
"summary": {
|
|
71
|
+
"requested": 0,
|
|
72
|
+
"created": 0,
|
|
73
|
+
"updated": 0,
|
|
74
|
+
"skipped": 0,
|
|
75
|
+
"errors": 0
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 4.2 特征绑定返回(示例)
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"ok": true,
|
|
85
|
+
"id": "xxx",
|
|
86
|
+
"created": true,
|
|
87
|
+
"updated": false,
|
|
88
|
+
"message": ""
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 5. 模块速查
|
|
93
|
+
|
|
94
|
+
### 5.1 `space`
|
|
95
|
+
|
|
96
|
+
- `s = space.create(name, space_id=None, storage_engine="clickhouse", connection_config={"database": ...}, ...)`
|
|
97
|
+
- `s = space.get(name_or_id)`
|
|
98
|
+
- `space.use(handle_or_name)`
|
|
99
|
+
|
|
100
|
+
### 5.2 `s.sql`
|
|
101
|
+
|
|
102
|
+
- `s.sql.query(sql)` / `s.sql.query_one(sql)` / `s.sql.execute(sql)`
|
|
103
|
+
- `s.sql.insert_rows(table, rows)`(`rows` 为 `list[dict]`)
|
|
104
|
+
|
|
105
|
+
**ClickHouse:`INSERT ... VALUES` 与注释**
|
|
106
|
+
|
|
107
|
+
- **`VALUES` 与各元组之间禁止 SQL 行注释 `--`**,否则易出现 `Code: 27` 等解析错误。
|
|
108
|
+
- **推荐**:大批量灌数用 **`s.sql.insert_rows`**;详见 **[dazi_script_seed_data_guide](./dazi_script_seed_data_guide.md)**。
|
|
109
|
+
|
|
110
|
+
### 5.3 `s.tables`
|
|
111
|
+
|
|
112
|
+
- `s.tables.register(table_name, label=...)`
|
|
113
|
+
- `s.tables.sync_columns(table_name)`
|
|
114
|
+
- `s.tables.list()` / `s.tables.discover()`
|
|
115
|
+
- `s.tables.add_relationship(from_table, to_table, join_sql, relationship_type="many_to_one", join_keys=None, description=None)` — 注册**数据空间表间关系**(幂等);`join_keys` 示例:`[{"from": "product_id", "to": "product_id"}]`
|
|
116
|
+
|
|
117
|
+
### 5.4 Cube
|
|
118
|
+
|
|
119
|
+
- `s.register_cube(name, table, title, measures, dimensions)`
|
|
120
|
+
|
|
121
|
+
### 5.5 `s.onto`
|
|
122
|
+
|
|
123
|
+
- `s.onto.define_object_type(code, name, ...)`
|
|
124
|
+
- `s.onto.bind_source(object_type_code, "dazi_cube", config={"cube": "CubeName"})`
|
|
125
|
+
- `s.onto.define_property(...)`
|
|
126
|
+
- `s.onto.define_link_type(code, name, from_object_type_code, to_object_type_code, ...)`
|
|
127
|
+
- `s.onto.register_function(function_id, adapter, ...)`
|
|
128
|
+
- `s.onto.define_action(action_code, ...)`
|
|
129
|
+
|
|
130
|
+
### 5.6 `s.ontology` / `s.ontology_rules` / `s.scripts`
|
|
131
|
+
|
|
132
|
+
见上文;规则:`ensure_rule_set` + `upsert_rule`;脚本记录:`create` / `ensure` / `list` 等。
|
|
133
|
+
|
|
134
|
+
## 6. 标准初始化流程(建议)
|
|
135
|
+
|
|
136
|
+
1. 确认 `space_id`(实现单元 README)
|
|
137
|
+
2. 建表与灌数(`s.sql`;灌数规范见 seed 指南)
|
|
138
|
+
3. `s.tables.register` + `sync_columns`
|
|
139
|
+
4. **`s.tables.add_relationship`**(与规划「表间关系」一致;**勿省略**)
|
|
140
|
+
5. `s.register_cube`
|
|
141
|
+
6. `s.onto` 定义对象、属性、链接
|
|
142
|
+
7. 注册函数/动作并 `features.attach`;**发布后** CLI `save-test-arguments` 写入 `test_arguments`(见 [function-guide](./function-guide.md))
|
|
143
|
+
8. 配置规则(如需要)
|
|
144
|
+
|
|
145
|
+
## 7. 在 dazi-vscode 中发布与运行
|
|
146
|
+
|
|
147
|
+
开发完成后,在工作区根目录:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# 预检
|
|
151
|
+
dazi onto script publish-preview 项目/<业务名>/本体/ontos/<实现名>/setup/my_setup.py --space <space-id>
|
|
152
|
+
|
|
153
|
+
# 发布(初始化/灌数类脚本)
|
|
154
|
+
dazi onto script publish 项目/<业务名>/本体/ontos/<实现名>/setup/my_setup.py --space <space-id>
|
|
155
|
+
|
|
156
|
+
# 发布并注册为本体函数
|
|
157
|
+
dazi onto script publish 项目/<业务名>/本体/ontos/<实现名>/functions/my_func.py \
|
|
158
|
+
--space <space-id> \
|
|
159
|
+
--register-function-id my_func
|
|
160
|
+
|
|
161
|
+
# 运行已入库函数
|
|
162
|
+
dazi onto function run my_func --space <space-id> --params '{}'
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
亦可用侧栏 **Onto 本体** → 发布函数 / 运行函数。
|
|
166
|
+
|
|
167
|
+
## 8. 回归与 JSON 摘要
|
|
168
|
+
|
|
169
|
+
- 支持 `--json` 时,输出前缀统一:`__JSON_SUMMARY__`
|
|
170
|
+
- 非 0 退出码即失败
|
|
171
|
+
- 会改写数据的步骤须提供跳过/禁用开关
|
|
172
|
+
|
|
173
|
+
**内置参考示例**(在用户工作区:**侧栏 帮助 → 示例 → 下载所有示例**,或执行 `dazi examples sync`,得到 **`资源/examples/`**;可复制到 **`项目/<业务名>/本体/ontos/<实现名>/setup/`** 或 **`functions/`** 再改,勿直接改写同步下来的只读备份):
|
|
174
|
+
|
|
175
|
+
- **规划全文(推荐)**:**`资源/docs/onto/规划示例_产品销售本体规划方案.md`**(含表间关系、test_arguments)
|
|
176
|
+
- **完整落地参考**(init / seed / 7 个 sales 函数):**`项目/潘达石化/本体/ontos/产品销售本体方案/`**
|
|
177
|
+
- **利润示例(GL 域)**:`资源/examples/onto/利润示例/setup/profit_ontology_init.py`、`profit_seed_data.py`、`function/profit_fn_*.py`、`function/test_arguments/`
|
|
178
|
+
- **销售示例(推荐,含表间关系 + test_arguments)**:`资源/examples/onto/销售示例/setup/sales_ontology_init.py`、`sales_seed_data.py`、`functions/sales_fn_*.py`
|