openyida 2026.7.8 → 2026.7.10
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 +1 -1
- package/scripts/postinstall.js +23 -23
- package/scripts/validate-skills.js +175 -0
- package/yida-skills/SKILL.md +68 -57
- package/yida-skills/references/development-rules.md +13 -9
- package/yida-skills/skills/large-file-write/SKILL.md +12 -10
- package/yida-skills/skills/large-file-write/references/write-patterns.md +13 -15
- package/yida-skills/skills/large-file-write/scripts/write.js +10 -10
- package/yida-skills/skills/yida-app/SKILL.md +92 -77
- package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +4 -2
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-design-system.md +1 -1
- package/yida-skills/skills/yida-canvas-upgrade/SKILL.md +1 -1
- package/yida-skills/skills/yida-chart/SKILL.md +4 -4
- package/yida-skills/skills/yida-chart/references/echarts-bindding-guide.md +6 -7
- package/yida-skills/skills/yida-chart/references/echarts-code-template.md +1 -1
- package/yida-skills/skills/yida-chart/references/echarts-design-spec.md +1 -1
- package/yida-skills/skills/yida-chart/references/examples.md +2 -2
- package/yida-skills/skills/yida-connector/SKILL.md +4 -0
- package/yida-skills/skills/yida-connector-safe-actions/SKILL.md +7 -4
- package/yida-skills/skills/yida-create-form-page/SKILL.md +11 -8
- package/yida-skills/skills/yida-create-process/SKILL.md +12 -6
- package/yida-skills/skills/yida-custom-page/SKILL.md +12 -6
- package/yida-skills/skills/yida-custom-page/references/coding-guide.md +1 -1
- package/yida-skills/skills/yida-custom-page/references/component-jsx-guide.md +3 -1
- package/yida-skills/skills/yida-custom-page/references/design-system.md +1 -1
- package/yida-skills/skills/yida-dashboard/SKILL.md +1 -1
- package/yida-skills/skills/yida-data-management/SKILL.md +14 -11
- package/yida-skills/skills/yida-data-source-connectors/SKILL.md +3 -1
- package/yida-skills/skills/yida-flash-note-to-prd/references/examples.md +3 -2
- package/yida-skills/skills/yida-formula/references/examples.md +4 -4
- package/yida-skills/skills/yida-formula-evaluate/SKILL.md +4 -2
- package/yida-skills/skills/yida-get-schema/SKILL.md +14 -5
- package/yida-skills/skills/yida-i18n/SKILL.md +4 -2
- package/yida-skills/skills/yida-integration/SKILL.md +5 -2
- package/yida-skills/skills/yida-integration/references/examples.md +2 -2
- package/yida-skills/skills/yida-openyida-publish-guard/SKILL.md +2 -2
- package/yida-skills/skills/yida-page-uiux/SKILL.md +1 -1
- package/yida-skills/skills/yida-page-uiux/workflow/step-0-nav-shape.md +2 -2
- package/yida-skills/skills/yida-ppt/SKILL.md +2 -2
- package/yida-skills/skills/yida-ppt-slider/SKILL.md +1 -1
- package/yida-skills/skills/yida-ppt-slider/references/echarts-race-example.md +1 -1
- package/yida-skills/skills/yida-process-rule/SKILL.md +5 -2
- package/yida-skills/skills/yida-process-rule/references/examples.md +12 -12
- package/yida-skills/skills/yida-publish-page/SKILL.md +2 -2
- package/yida-skills/skills/yida-report/SKILL.md +5 -2
- package/yida-skills/skills/yida-report/references/examples.md +4 -4
- package/yida-skills/skills/yida-table-form/references/examples.md +3 -3
- package/yida-skills/skills-index.json +430 -0
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
适用于一次性写入大块内容(>100 行)。
|
|
8
8
|
|
|
9
|
-
### Step 1
|
|
9
|
+
### Step 1:用结构化文件写入工具创建临时内容脚本
|
|
10
10
|
|
|
11
11
|
```js
|
|
12
|
-
// /
|
|
12
|
+
// <projectRoot>/.cache/openyida/<任务名>/scripts/content-payload.js
|
|
13
13
|
const fs = require('fs');
|
|
14
14
|
const content = `
|
|
15
15
|
// 这里放你要写入的大块内容
|
|
@@ -25,7 +25,7 @@ console.log('写入完成,行数:', content.split('\n').length);
|
|
|
25
25
|
### Step 2:执行脚本
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
node /
|
|
28
|
+
node .cache/openyida/<任务名>/scripts/content-payload.js
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
### Step 3:验证写入结果
|
|
@@ -42,7 +42,7 @@ tail -5 /path/to/target.js
|
|
|
42
42
|
适用于向已有文件末尾追加大块内容。
|
|
43
43
|
|
|
44
44
|
```js
|
|
45
|
-
// /
|
|
45
|
+
// <projectRoot>/.cache/openyida/<任务名>/scripts/append-payload.js
|
|
46
46
|
const fs = require('fs');
|
|
47
47
|
const appendContent = `
|
|
48
48
|
// 追加的内容
|
|
@@ -57,22 +57,23 @@ console.log('追加完成');
|
|
|
57
57
|
执行:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
node /
|
|
60
|
+
node .cache/openyida/<任务名>/scripts/append-payload.js
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
65
|
-
## 模式三:使用通用写入脚本(
|
|
65
|
+
## 模式三:使用通用写入脚本(content-file 模式)
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
适用于内容已经由结构化文件写入工具保存为独立文件的场景。
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
70
|
node ~/.agents/skills/large-file-write/scripts/write.js \
|
|
71
71
|
--file /path/to/target.js \
|
|
72
|
+
--content-file .cache/openyida/<任务名>/scripts/content.txt \
|
|
72
73
|
--mode write # 或 append
|
|
73
74
|
```
|
|
74
75
|
|
|
75
|
-
|
|
76
|
+
不要通过 shell 管道、heredoc 或重定向临时生成 `content.txt`;先使用 create_file / Write / file edit tool 创建它。
|
|
76
77
|
|
|
77
78
|
---
|
|
78
79
|
|
|
@@ -80,10 +81,7 @@ node ~/.agents/skills/large-file-write/scripts/write.js \
|
|
|
80
81
|
|
|
81
82
|
**不要**用 PowerShell 把大 JSX/JS 文件转成 JSON patch:
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
# 禁止:会把整个文件读入内存并生成转义后的大字符串
|
|
85
|
-
Get-Content -Raw project\pages\src\vendor-section.oyd.jsx | ConvertTo-Json > vendor-patch.json
|
|
86
|
-
```
|
|
84
|
+
禁止把整个文件读入内存再重定向成 JSON patch,例如 `Get-Content -Raw ... | ConvertTo-Json` 这类流程会制造巨大中间数据,也违反“命令输入文件由结构化写入工具创建”的约定。
|
|
87
85
|
|
|
88
86
|
这种写法会同时持有原始源码、JSON 转义字符串、管道对象和输出缓冲。对包含 vendor、base64、压缩代码的 `.oyd.jsx` 文件,内存可能被放大到数十 GB。
|
|
89
87
|
|
|
@@ -106,7 +104,7 @@ fs.writeFileSync(target, next, 'utf8');
|
|
|
106
104
|
当单次内容超过 300 行时,拆分为多个脚本分段写入:
|
|
107
105
|
|
|
108
106
|
```js
|
|
109
|
-
// /
|
|
107
|
+
// <projectRoot>/.cache/openyida/<任务名>/scripts/part1-payload.js — 写入第一段(文件头 + 前半部分)
|
|
110
108
|
const fs = require('fs');
|
|
111
109
|
const part1 = `
|
|
112
110
|
// === 第一段内容 ===
|
|
@@ -118,7 +116,7 @@ console.log('第一段写入完成');
|
|
|
118
116
|
```
|
|
119
117
|
|
|
120
118
|
```js
|
|
121
|
-
// /
|
|
119
|
+
// <projectRoot>/.cache/openyida/<任务名>/scripts/part2-payload.js — 追加第二段
|
|
122
120
|
const fs = require('fs');
|
|
123
121
|
const part2 = `
|
|
124
122
|
// === 第二段内容 ===
|
|
@@ -145,5 +143,5 @@ tail -5 /path/to/target.js
|
|
|
145
143
|
|---------|------|---------|
|
|
146
144
|
| 文件为空 | 模板字符串反引号未闭合 | 检查 `` ` `` 是否成对,特殊字符是否转义 |
|
|
147
145
|
| 内容截断 | 单次 create_file 超过 token 限制 | 拆分为多个脚本分段写入 |
|
|
148
|
-
| 权限拒绝 | 目标路径无写权限 |
|
|
146
|
+
| 权限拒绝 | 目标路径无写权限 | 检查目标目录权限;OpenYida 业务文件仍应留在 project 工作目录内 |
|
|
149
147
|
| node 命令未找到 | Node.js 未安装 | 先安装 Node.js ≥ 16 |
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* node write.js --file <目标文件路径> [--mode write|append] [--encoding utf8]
|
|
9
9
|
*
|
|
10
10
|
* 内容来源(三选一):
|
|
11
|
-
* 1. stdin
|
|
12
|
-
* 2. --content-file
|
|
13
|
-
* 3. --payload <JS文件>:node write.js --payload /
|
|
11
|
+
* 1. stdin:交互式输入或由调用方传入标准输入
|
|
12
|
+
* 2. --content-file <内容文件>:node write.js --file out.js --content-file .cache/openyida/task/content.txt
|
|
13
|
+
* 3. --payload <JS文件>:node write.js --payload .cache/openyida/task/payload.js(payload 文件自行调用 fs 写入)
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
const fs = require('fs');
|
|
@@ -53,15 +53,15 @@ large-file-write - 大文件可靠写入工具
|
|
|
53
53
|
--help 显示帮助
|
|
54
54
|
|
|
55
55
|
示例:
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
# 从 stdin 写入
|
|
57
|
+
node write.js --file .cache/openyida/task/out.txt
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
# 从内容文件写入
|
|
60
|
+
node write.js --file .cache/openyida/task/out.js --content-file .cache/openyida/task/content.txt --verify
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
`);
|
|
62
|
+
# 执行自包含 payload 脚本
|
|
63
|
+
node write.js --payload .cache/openyida/task/my-payload.js
|
|
64
|
+
`);
|
|
65
65
|
process.exit(0);
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -6,13 +6,17 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
6
6
|
# yida-app — 宜搭完整应用开发编排技能
|
|
7
7
|
|
|
8
8
|
> 本文档是**流程编排层**,描述各子技能的调用时机、决策逻辑和数据流转。
|
|
9
|
-
>
|
|
9
|
+
> 在支持 `use_skill` 的宿主中,只在进入对应阶段前调用 `use_skill("<技能名>", "<本阶段目的>")` 加载该阶段子技能;不要预读未来阶段技能。
|
|
10
|
+
> 如果宿主没有 `use_skill` / `search_skills`,按根技能路由表逐阶段定位子技能,并只读取当前阶段唯一必要的子技能文档;`skills-index.json` 不是普通宿主的运行前置条件。
|
|
10
11
|
|
|
11
12
|
## 严格禁止 (NEVER DO)
|
|
12
13
|
|
|
13
14
|
- 不要跳过 `openyida env` 环境检测直接开始开发
|
|
14
|
-
-
|
|
15
|
+
- 不要在未加载对应阶段子技能的情况下执行该阶段操作
|
|
16
|
+
- 不要用 `Read` / `read_file` / `cat` 读取子技能 `SKILL.md` 路径;支持 `use_skill` 时必须走 `use_skill`
|
|
17
|
+
- 不要在开头预读未来阶段技能,也不要并发批量加载多个子技能
|
|
15
18
|
- 不要编造任何 ID(appType/formUuid/fieldId),必须从命令返回中提取
|
|
19
|
+
- 不要用 shell heredoc、`cat`/`echo`/`printf`/`tee` 或重定向生成 OpenYida 命令输入文件
|
|
16
20
|
|
|
17
21
|
## 严格要求 (MUST DO)
|
|
18
22
|
|
|
@@ -20,11 +24,27 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
20
24
|
- 按照本文档的流程编排顺序执行,不要跳步
|
|
21
25
|
- 每个关键 ID 创建后立即记录到 `.cache/<项目名>-schema.json`
|
|
22
26
|
- 业务需求记录到 `prd/<项目名>.md`
|
|
23
|
-
-
|
|
27
|
+
- 临时字段配置、流程配置、报表配置、连接器配置、导入数据和一次性执行脚本统一用结构化文件写入工具创建到 `<projectRoot>/.cache/openyida/<项目名或任务名>/`;从 workspace 根执行命令时传 `project/.cache/...`,从 OpenYida project 工作目录执行时传 `.cache/...`;不要写到仓库根目录或系统临时目录
|
|
24
28
|
- 首次生成完整应用后,必须基于业务信息架构整理导航顺序:面向决策者的总览/驾驶舱看板作为门面靠前,数据录入/明细表单在后;同级多个专题看板按业务优先级排,不要把所有自定义页面无脑堆最前
|
|
25
29
|
- 导航整理完成后,若应用含表单,默认向核心表单灌入 2-3 条覆盖关键维度的示例数据,让看板首屏有真实聚合效果;`DateField`/`CascadeDateField` 用 13 位毫秒时间戳,灌后 `openyida data query` 抽查至少 1 条确认字段值非空(用户明确说"不要示例数据"时才跳过)
|
|
26
30
|
- **本技能不读写 memory**:所有关键 ID(appType、formUuid 等)通过 `.cache/<项目名>-schema.json` 持久化,不依赖跨会话的 memory 状态
|
|
27
31
|
|
|
32
|
+
## 阶段式子技能加载
|
|
33
|
+
|
|
34
|
+
完整应用搭建时,开头只加载 `yida-app` 本编排技能。进入下列阶段前,再加载该阶段唯一必要的子技能:
|
|
35
|
+
|
|
36
|
+
| 阶段 | 加载方式 |
|
|
37
|
+
|------|----------|
|
|
38
|
+
| 创建应用 | `use_skill("yida-create-app", "创建应用并获取 appType")` |
|
|
39
|
+
| 创建表单 | `use_skill("yida-create-form-page", "设计并创建表单字段结构")` |
|
|
40
|
+
| 创建页面 | `use_skill("yida-create-page", "创建自定义页面容器并获取 formUuid")` |
|
|
41
|
+
| 编写页面 | `use_skill("yida-custom-page", "编写宜搭自定义页面 JSX")` |
|
|
42
|
+
| 发布页面 | `use_skill("yida-publish-page", "编译并发布自定义页面")` |
|
|
43
|
+
| 整理导航 | `use_skill("yida-nav-group", "整理应用导航顺序")` |
|
|
44
|
+
| 示例数据 | `use_skill("yida-data-management", "写入和抽查示例数据")` |
|
|
45
|
+
|
|
46
|
+
按需阶段也遵守同一规则:需要流程时再调用 `use_skill("yida-create-process", "创建或配置流程表单")`;需要视觉方向时再调用 `use_skill("yida-page-uiux", "确定自定义页面视觉方向")`;需要报表或图表时,分别在进入报表阶段前调用 `use_skill("yida-report", "创建原生报表")` 或 `use_skill("yida-chart", "创建 ECharts 可视化页面")`。
|
|
47
|
+
|
|
28
48
|
## 适用场景
|
|
29
49
|
|
|
30
50
|
用户说"帮我搭建一个完整应用"、"从零开始创建系统"、"一句话生成应用"时使用。
|
|
@@ -47,14 +67,14 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
47
67
|
↓
|
|
48
68
|
[Step 2] 需求分析 → 写入 prd/<项目名>.md
|
|
49
69
|
↓
|
|
50
|
-
[Step 3]
|
|
70
|
+
[Step 3](按需)创建/更新表单 → openyida create-form → 获得 formUuid + fieldId(表单)
|
|
51
71
|
↓
|
|
52
|
-
[Step 4]
|
|
72
|
+
[Step 4] 创建自定义页面 → openyida create-page → 获得 formUuid(自定义页面)
|
|
53
73
|
↓
|
|
54
74
|
[Step 5](按需,需求含「审批」「流程」「申请」「审核」「工单」等关键词时必须执行)
|
|
55
|
-
配置流程 →
|
|
75
|
+
配置流程 → use_skill("yida-create-process", "创建或配置流程表单") → openyida create-process / configure-process
|
|
56
76
|
↓
|
|
57
|
-
[Step 6] 编写自定义页面代码 →
|
|
77
|
+
[Step 6] 编写自定义页面代码 → use_skill("yida-custom-page", "编写宜搭自定义页面 JSX") → pages/src/<项目名>.oyd.jsx
|
|
58
78
|
↓ (首次生成必做:先用 yida-page-uiux 产出「视觉方向决策块」,避免统一灰白圆角的 AI 味模板脸)
|
|
59
79
|
↓ openyida check-page / compile 预检(.oyd.jsx 自动兼容构建)
|
|
60
80
|
↓ (列表/表格类页面:参考 yida-density 技能选择合适的信息密度)
|
|
@@ -70,9 +90,14 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
70
90
|
[Step 10] 输出访问链接,用系统浏览器打开
|
|
71
91
|
```
|
|
72
92
|
|
|
73
|
-
###
|
|
93
|
+
### 阶段加载提醒
|
|
74
94
|
|
|
75
|
-
|
|
95
|
+
- 创建应用阶段:先加载 `yida-create-app`。
|
|
96
|
+
- 生成表单 schema 阶段:先加载 `yida-create-form-page`。
|
|
97
|
+
- 创建自定义页面阶段:先加载 `yida-create-page`。
|
|
98
|
+
- 编写自定义页面代码阶段:先加载 `yida-custom-page`;首次生成面向用户页面时,再按需加载 `yida-page-uiux` 产出视觉方向决策块。
|
|
99
|
+
- 发布阶段:先加载 `yida-publish-page`。
|
|
100
|
+
- 导航和示例数据阶段:分别加载 `yida-nav-group`、`yida-data-management`。
|
|
76
101
|
|
|
77
102
|
### 使用模板文件确保一次性成功
|
|
78
103
|
|
|
@@ -84,7 +109,7 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
84
109
|
| yida-data-management | `openyida sample yida-data-management form-field-template` | 表单字段定义和数据插入 |
|
|
85
110
|
| yida-create-app | `openyida sample yida-create-app ipd-app-template` | 完整应用创建示例 |
|
|
86
111
|
|
|
87
|
-
表单详情页视觉优化不走 `openyida publish`。当用户要求“详情页美化 / formDetail
|
|
112
|
+
表单详情页视觉优化不走 `openyida publish`。当用户要求“详情页美化 / formDetail 样式优化”时,调用 `use_skill("yida-form-detail", "通过表单 Schema 注入详情页 CSS")`,通过表单 Schema 注入 Html 组件承载 CSS。
|
|
88
113
|
|
|
89
114
|
**代码生成前必须**:
|
|
90
115
|
|
|
@@ -101,9 +126,9 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
101
126
|
```
|
|
102
127
|
用户需求
|
|
103
128
|
│
|
|
104
|
-
├── 纯展示 / 静态内容 → 跳过 Step
|
|
129
|
+
├── 纯展示 / 静态内容 → 跳过 Step 3(无需创建表单)
|
|
105
130
|
│
|
|
106
|
-
└── 需要收集 / 存储数据 → Step
|
|
131
|
+
└── 需要收集 / 存储数据 → Step 3 创建表单
|
|
107
132
|
```
|
|
108
133
|
|
|
109
134
|
### 决策 2:是否需要审批流程?
|
|
@@ -111,9 +136,9 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
111
136
|
```
|
|
112
137
|
表单创建后
|
|
113
138
|
│
|
|
114
|
-
├── 无审批需求 → 直接进入 Step 6 编写代码
|
|
139
|
+
├── 无审批需求 → 直接进入 Step 4 创建页面 / Step 6 编写代码
|
|
115
140
|
│
|
|
116
|
-
└── 有审批需求 →
|
|
141
|
+
└── 有审批需求 → 加载 yida-create-process 配置流程后再编写代码
|
|
117
142
|
```
|
|
118
143
|
|
|
119
144
|
### 决策 3:是否需要数据可视化报表?
|
|
@@ -121,9 +146,9 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
121
146
|
```
|
|
122
147
|
应用功能需求
|
|
123
148
|
│
|
|
124
|
-
├── 标准统计报表 →
|
|
149
|
+
├── 标准统计报表 → 加载 yida-report 创建原生报表
|
|
125
150
|
│
|
|
126
|
-
└── 高级 ECharts 大屏 →
|
|
151
|
+
└── 高级 ECharts 大屏 → 先加载 yida-report 创建数据源,再加载 yida-chart 创建可视化页面
|
|
127
152
|
```
|
|
128
153
|
|
|
129
154
|
### 决策 4:corpId 一致性检查(创建页面前必须执行)
|
|
@@ -146,7 +171,7 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
146
171
|
|
|
147
172
|
### Step 1:创建应用
|
|
148
173
|
|
|
149
|
-
|
|
174
|
+
进入本阶段前调用 `use_skill("yida-create-app", "创建应用并获取 appType")`,创建宜搭应用并获取 `appType`:
|
|
150
175
|
|
|
151
176
|
```bash
|
|
152
177
|
openyida create-app "<应用名称>" "[描述]"
|
|
@@ -154,8 +179,6 @@ openyida create-app "<应用名称>" "[描述]"
|
|
|
154
179
|
|
|
155
180
|
**输出**:`appType`(如 `APP_XXXXXX`),自动写入 prd 文档的应用配置表。
|
|
156
181
|
|
|
157
|
-
> 📖 详见 [`skills/yida-create-app/SKILL.md`](../yida-create-app/SKILL.md)
|
|
158
|
-
|
|
159
182
|
---
|
|
160
183
|
|
|
161
184
|
### Step 2:需求分析 → 写入 prd 文档
|
|
@@ -258,25 +281,13 @@ openyida create-app "<应用名称>" "[描述]"
|
|
|
258
281
|
|
|
259
282
|
---
|
|
260
283
|
|
|
261
|
-
### Step 3
|
|
262
|
-
|
|
263
|
-
确认 corpId 一致后,调用 `yida-create-page` 技能:
|
|
264
|
-
|
|
265
|
-
```bash
|
|
266
|
-
openyida create-page <appType> "<页面名称>" [--mode dashboard]
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
**输出**:`formUuid`(如 `FORM-XXXXXX`),写入 `.cache/<项目名>-schema.json`。
|
|
270
|
-
|
|
271
|
-
> 📖 详见 [`skills/yida-create-page/SKILL.md`](../yida-create-page/SKILL.md)
|
|
272
|
-
|
|
273
|
-
---
|
|
284
|
+
### Step 3:创建表单(按需)
|
|
274
285
|
|
|
275
|
-
|
|
286
|
+
**当页面需要收集/存储数据时**,进入本阶段前调用 `use_skill("yida-create-form-page", "设计并创建表单字段结构")`。
|
|
276
287
|
|
|
277
|
-
|
|
288
|
+
#### 3.1 定义字段,写入 `<projectRoot>/.cache/openyida/<项目名或任务名>/xxx-fields.json`
|
|
278
289
|
|
|
279
|
-
|
|
290
|
+
使用 create_file / Write / file edit tool 创建字段定义文件;不要用 shell heredoc 或重定向写 JSON。若从 workspace 根执行命令,路径写作 `project/.cache/openyida/<项目名或任务名>/xxx-fields.json`。
|
|
280
291
|
|
|
281
292
|
```json
|
|
282
293
|
[
|
|
@@ -287,15 +298,15 @@ openyida create-page <appType> "<页面名称>" [--mode dashboard]
|
|
|
287
298
|
]
|
|
288
299
|
```
|
|
289
300
|
|
|
290
|
-
####
|
|
301
|
+
#### 3.2 创建表单
|
|
291
302
|
|
|
292
303
|
```bash
|
|
293
|
-
openyida create-form create <appType> "<表单名称>" .cache/openyida
|
|
304
|
+
openyida create-form create <appType> "<表单名称>" .cache/openyida/<项目名或任务名>/xxx-fields.json
|
|
294
305
|
```
|
|
295
306
|
|
|
296
307
|
**输出**:`formUuid` 和各字段的 `fieldId`(如 `textField_xxxxxxxx`)。
|
|
297
308
|
|
|
298
|
-
####
|
|
309
|
+
#### 3.3 将 Schema ID 写入 `.cache/<项目名>-schema.json`
|
|
299
310
|
|
|
300
311
|
```json
|
|
301
312
|
{
|
|
@@ -317,26 +328,37 @@ openyida create-form create <appType> "<表单名称>" .cache/openyida/<项目
|
|
|
317
328
|
}
|
|
318
329
|
```
|
|
319
330
|
|
|
320
|
-
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
### Step 4:创建自定义页面
|
|
334
|
+
|
|
335
|
+
确认 corpId 一致后,进入本阶段前调用 `use_skill("yida-create-page", "创建自定义页面容器并获取 formUuid")`:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
openyida create-page <appType> "<页面名称>" [--mode dashboard]
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**输出**:`formUuid`(如 `FORM-XXXXXX`),写入 `.cache/<项目名>-schema.json`。
|
|
321
342
|
|
|
322
343
|
---
|
|
323
344
|
|
|
324
345
|
### Step 5:配置流程(按需)
|
|
325
346
|
|
|
326
347
|
**当需求含「审批」「流程」「申请」「审核」「工单」等关键词时必须执行**。
|
|
348
|
+
进入本阶段前调用 `use_skill("yida-create-process", "创建或配置流程表单")`。
|
|
327
349
|
|
|
328
350
|
```bash
|
|
329
|
-
openyida create-process <appType> --formUuid <formUuid>
|
|
351
|
+
openyida create-process <appType> --formUuid <formUuid> .cache/openyida/<项目名或任务名>/process-definition.json
|
|
330
352
|
```
|
|
331
353
|
|
|
332
|
-
|
|
354
|
+
流程定义文件先用结构化文件写入工具创建;从 workspace 根执行命令时路径加 `project/` 前缀。
|
|
333
355
|
|
|
334
356
|
---
|
|
335
357
|
|
|
336
358
|
### Step 6:编写自定义页面代码
|
|
337
359
|
|
|
338
360
|
**编写前必须**:
|
|
339
|
-
1.
|
|
361
|
+
1. 调用 `use_skill("yida-custom-page", "编写宜搭自定义页面 JSX")`
|
|
340
362
|
2. 执行 `openyida sample yida-custom-page custom-page-template` 获取模板,再用 `read_file` 读取 `.cache/samples/custom-page-template.js`
|
|
341
363
|
3. 读取 prd 文档和 `.cache/<项目名>-schema.json` 获取所有 ID
|
|
342
364
|
|
|
@@ -360,13 +382,11 @@ openyida check-page pages/src/<项目名>.oyd.jsx
|
|
|
360
382
|
openyida compile pages/src/<项目名>.oyd.jsx
|
|
361
383
|
```
|
|
362
384
|
|
|
363
|
-
> 📖 详见 [`skills/yida-custom-page/SKILL.md`](../yida-custom-page/SKILL.md)
|
|
364
|
-
|
|
365
385
|
---
|
|
366
386
|
|
|
367
387
|
### Step 7:发布页面
|
|
368
388
|
|
|
369
|
-
|
|
389
|
+
进入本阶段前调用 `use_skill("yida-publish-page", "编译并发布自定义页面")`,将源码编译并部署到宜搭平台:
|
|
370
390
|
|
|
371
391
|
```bash
|
|
372
392
|
openyida publish <源文件路径> <appType> <formUuid> [--health-check]
|
|
@@ -374,13 +394,11 @@ openyida publish <源文件路径> <appType> <formUuid> [--health-check]
|
|
|
374
394
|
|
|
375
395
|
**发布流程**:Babel 编译 JSX → ES5 → UglifyJS 压缩 → 调用 `saveFormSchema` 保存 Schema
|
|
376
396
|
|
|
377
|
-
> 📖 详见 [`skills/yida-publish-page/SKILL.md`](../yida-publish-page/SKILL.md)
|
|
378
|
-
|
|
379
397
|
---
|
|
380
398
|
|
|
381
399
|
### Step 8:整理导航顺序(含看板/多页面时必做)
|
|
382
400
|
|
|
383
|
-
|
|
401
|
+
首次生成完整应用后,导航是创建时的默认顺序(通常表单在前、看板在后),必须基于业务信息架构重排。进入本阶段前调用 `use_skill("yida-nav-group", "整理应用导航顺序")`:
|
|
384
402
|
|
|
385
403
|
```bash
|
|
386
404
|
openyida nav-group order <appType> <总览看板> <专题看板...> <核心表单...>
|
|
@@ -388,26 +406,23 @@ openyida nav-group order <appType> <总览看板> <专题看板...> <核心表
|
|
|
388
406
|
|
|
389
407
|
**默认原则**:面向决策者的**总览/驾驶舱看板作为应用门面靠前**,数据录入/明细表单在其后;同级多个专题看板按业务优先级排,不要把所有页面无脑堆最前。
|
|
390
408
|
|
|
391
|
-
> 📖 详见 [`skills/yida-nav-group/SKILL.md`](../yida-nav-group/SKILL.md)
|
|
392
|
-
|
|
393
409
|
---
|
|
394
410
|
|
|
395
411
|
### Step 9:灌入示例数据(有表单时默认执行)
|
|
396
412
|
|
|
397
|
-
新建应用的表单默认无数据,看板首屏会空。导航整理完成后,默认向核心表单灌入 **2-3
|
|
413
|
+
新建应用的表单默认无数据,看板首屏会空。导航整理完成后,默认向核心表单灌入 **2-3 条**覆盖关键维度(不同活动/渠道/日期等)的示例记录。进入本阶段前调用 `use_skill("yida-data-management", "写入和抽查示例数据")`:
|
|
398
414
|
|
|
399
415
|
```bash
|
|
400
|
-
openyida data create form <appType> <formUuid> --data-json
|
|
416
|
+
openyida data create form <appType> <formUuid> --data-file .cache/openyida/<项目名或任务名>/data-import/sample-record-1.json
|
|
401
417
|
```
|
|
402
418
|
|
|
403
419
|
**要点**:
|
|
420
|
+
- 示例数据 JSON 先用结构化文件写入工具创建到 `<projectRoot>/.cache/openyida/<项目名或任务名>/data-import/`;从 workspace 根执行命令时路径加 `project/` 前缀。
|
|
404
421
|
- `DateField`/`CascadeDateField` 必须用 13 位毫秒时间戳,不要传 `YYYY-MM-DD`。
|
|
405
422
|
- 字段 ID 从 `.cache/<项目名>-schema.json` 或 `openyida get-schema` 获取,不能猜。
|
|
406
423
|
- 灌完执行 `openyida data query form <appType> <formUuid>` 抽查至少 1 条,确认 `formData` 字段有实际值。
|
|
407
424
|
- 用户明确说"不要示例数据 / 不要 mock 数据"时才跳过。
|
|
408
425
|
|
|
409
|
-
> 📖 详见 [`skills/yida-data-management/SKILL.md`](../yida-data-management/SKILL.md)
|
|
410
|
-
|
|
411
426
|
---
|
|
412
427
|
|
|
413
428
|
### Step 10:输出访问链接并用系统浏览器打开
|
|
@@ -421,8 +436,8 @@ openyida data create form <appType> <formUuid> --data-json '{"selectField_xxx":"
|
|
|
421
436
|
| 步骤 | 产出 | 用途 |
|
|
422
437
|
|------|------|------|
|
|
423
438
|
| create-app | `appType` | 所有后续命令的必填参数 |
|
|
424
|
-
| create-page | `pageId` (即 `formUuid`) | 发布自定义页面时指定目标页面 |
|
|
425
439
|
| create-form | `formUuid` + `fieldId` | 自定义页面代码中调用表单 API |
|
|
440
|
+
| create-page | `pageId` (即 `formUuid`) | 发布自定义页面时指定目标页面 |
|
|
426
441
|
| get-schema | `fieldId` 列表 | 公式字段、权限配置、数据查询时引用 |
|
|
427
442
|
|
|
428
443
|
**存储约定**:
|
|
@@ -431,7 +446,7 @@ openyida data create form <appType> <formUuid> --data-json '{"selectField_xxx":"
|
|
|
431
446
|
|
|
432
447
|
**测试数据/修数脚本约定**:
|
|
433
448
|
- 一次性造数、旧数据修正、字段迁移可以使用 Python 或 JS,选择更快更清晰的实现即可;不要求为了“宜搭”强行写 JS。
|
|
434
|
-
- 脚本放在
|
|
449
|
+
- 脚本放在 `<projectRoot>/.cache/openyida/<项目名或任务名>/scripts/` 下,导入数据放在 `<projectRoot>/.cache/openyida/<项目名或任务名>/data-import/` 下,均由结构化文件写入工具创建;执行前先 `openyida get-schema` / `openyida data query` 确认字段和记录,批量更新单次不超过 30 条。
|
|
435
450
|
- 脚本可以通过 `openyida data ...` 命令或宜搭官方接口执行,但字段 ID、formInstId、appType 必须来自真实查询结果,不能猜。
|
|
436
451
|
|
|
437
452
|
---
|
|
@@ -441,39 +456,39 @@ openyida data create form <appType> <formUuid> --data-json '{"selectField_xxx":"
|
|
|
441
456
|
### 场景 1:一句话生成应用(如"生日祝福小游戏")
|
|
442
457
|
|
|
443
458
|
```
|
|
444
|
-
1. yida-create-app → 创建应用,获取 appType
|
|
459
|
+
1. 加载子技能 `yida-create-app` → 创建应用,获取 appType
|
|
445
460
|
2. 需求分析 → 写入 prd/birthday-game.md
|
|
446
|
-
3. yida-create-page →
|
|
447
|
-
4. yida-create-
|
|
448
|
-
5. yida-custom-page → 编写游戏页面代码
|
|
449
|
-
6. yida-publish-page → 发布,输出访问链接
|
|
450
|
-
7. yida-nav-group → 按“游戏首页 → 祝福记录表”整理导航
|
|
451
|
-
8. yida-data-management → 向祝福记录表灌 2-3 条示例数据
|
|
461
|
+
3. 加载子技能 `yida-create-form-page` → 创建祝福记录表单,获取 formUuid + fieldId
|
|
462
|
+
4. 加载子技能 `yida-create-page` → 创建自定义页面,获取 pageId
|
|
463
|
+
5. 加载子技能 `yida-custom-page` → 编写游戏页面代码
|
|
464
|
+
6. 加载子技能 `yida-publish-page` → 发布,输出访问链接
|
|
465
|
+
7. 加载子技能 `yida-nav-group` → 按“游戏首页 → 祝福记录表”整理导航
|
|
466
|
+
8. 加载子技能 `yida-data-management` → 向祝福记录表灌 2-3 条示例数据
|
|
452
467
|
```
|
|
453
468
|
|
|
454
469
|
### 场景 2:带审批的 CRM 系统
|
|
455
470
|
|
|
456
471
|
```
|
|
457
|
-
1. yida-create-app → 创建 CRM 应用
|
|
472
|
+
1. 加载子技能 `yida-create-app` → 创建 CRM 应用
|
|
458
473
|
2. 需求分析 → 写入 prd/crm.md
|
|
459
|
-
3. yida-create-form-page → 创建客户信息表、跟进记录表
|
|
460
|
-
4. yida-create-process → 配置客户审批流程
|
|
461
|
-
5. yida-report → 创建销售数据报表
|
|
462
|
-
6. yida-create-page → 创建 CRM 首页
|
|
463
|
-
7. yida-custom-page → 编写首页代码(集成表单 + 报表)
|
|
464
|
-
8. yida-publish-page → 发布
|
|
465
|
-
9. yida-nav-group → 按“CRM 首页/看板 → 客户信息表 → 跟进记录表 → 审批流程/报表”整理导航
|
|
466
|
-
10. yida-data-management → 向客户信息表、跟进记录表灌 2-3 条示例数据
|
|
474
|
+
3. 加载子技能 `yida-create-form-page` → 创建客户信息表、跟进记录表
|
|
475
|
+
4. 加载子技能 `yida-create-process` → 配置客户审批流程
|
|
476
|
+
5. 加载子技能 `yida-report` → 创建销售数据报表
|
|
477
|
+
6. 加载子技能 `yida-create-page` → 创建 CRM 首页
|
|
478
|
+
7. 加载子技能 `yida-custom-page` → 编写首页代码(集成表单 + 报表)
|
|
479
|
+
8. 加载子技能 `yida-publish-page` → 发布
|
|
480
|
+
9. 加载子技能 `yida-nav-group` → 按“CRM 首页/看板 → 客户信息表 → 跟进记录表 → 审批流程/报表”整理导航
|
|
481
|
+
10. 加载子技能 `yida-data-management` → 向客户信息表、跟进记录表灌 2-3 条示例数据
|
|
467
482
|
```
|
|
468
483
|
|
|
469
484
|
### 场景 3:数据大屏(ECharts 可视化)
|
|
470
485
|
|
|
471
486
|
```
|
|
472
|
-
1. yida-create-app → 创建应用
|
|
473
|
-
2. yida-create-form-page → 创建数据录入表单
|
|
474
|
-
3. yida-report → 创建原生报表(作为 ECharts 数据源)
|
|
475
|
-
4. yida-chart → 创建 ECharts 自定义页面(引用原生报表数据)
|
|
476
|
-
5. yida-publish-page → 发布
|
|
487
|
+
1. 加载子技能 `yida-create-app` → 创建应用
|
|
488
|
+
2. 加载子技能 `yida-create-form-page` → 创建数据录入表单
|
|
489
|
+
3. 加载子技能 `yida-report` → 创建原生报表(作为 ECharts 数据源)
|
|
490
|
+
4. 加载子技能 `yida-chart` → 创建 ECharts 自定义页面(引用原生报表数据)
|
|
491
|
+
5. 加载子技能 `yida-publish-page` → 发布
|
|
477
492
|
```
|
|
478
493
|
|
|
479
494
|
---
|
|
@@ -47,7 +47,7 @@ OpenYida CLI 已支持发布 `YidaCodeCanvas` 页面:把 Code Canvas 源码写
|
|
|
47
47
|
|
|
48
48
|
## 视觉方向:先定方向,再写代码
|
|
49
49
|
|
|
50
|
-
写页面前先定视觉方向,避免首次就生成「默认蓝 + 大圆角 + emoji」的 AI 味套版。视觉决策是**栈无关**的,与 native 链路共用决策层技能 `yida-page-uiux
|
|
50
|
+
写页面前先定视觉方向,避免首次就生成「默认蓝 + 大圆角 + emoji」的 AI 味套版。视觉决策是**栈无关**的,与 native 链路共用决策层技能 `yida-page-uiux`:需要视觉方向时调用 `use_skill("yida-page-uiux", "确定 Code Canvas 页面的视觉方向")`,按页面类型(工作台/仪表盘/列表/详情)做 5 维差异化、走去 AI 味清单、严禁 emoji。
|
|
51
51
|
|
|
52
52
|
Canvas 这套栈(React18 + antd + Tailwind)怎么把「主色跟随 App 品牌」落地由 [references/canvas-design-system.md](references/canvas-design-system.md) 负责。一句话记忆:**CSS 变量 `var(--color-brand1-*)` 对普通 DOM / Tailwind 直接可用(Canvas 跑在真 window、节点在宿主树内会级联);antd token 和图表颜色是 JS 消费,需用 `getComputedStyle` 把品牌色解析成真实色值再喂进去。** 语义色(成功/警告/错误)保持固定,不随主题变。
|
|
53
53
|
|
|
@@ -87,9 +87,11 @@ openyida publish project/pages/src/<页面名>.canvas.jsx <appType> <formUuid>
|
|
|
87
87
|
# 扩展名不规范但确为 Canvas 源码时,显式加 --canvas。
|
|
88
88
|
|
|
89
89
|
# 6. 发布后回读 Schema 验收:确认组件树存在 YidaCodeCanvas,且 runtimeCode 非空
|
|
90
|
-
openyida get-schema <appType> <formUuid>
|
|
90
|
+
openyida get-schema <appType> <formUuid>
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
+
如需保存完整 Schema,使用 create_file / Write / file edit tool 创建 `<projectRoot>/.cache/openyida/<页面名或任务名>/<页面名>-schema.json`;从 workspace 根执行后续命令时路径加 `project/` 前缀。不要把 `openyida` stdout 通过 shell 重定向保存成 JSON。
|
|
94
|
+
|
|
93
95
|
## 与其他技能分工
|
|
94
96
|
|
|
95
97
|
| 需求 | 使用 |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
本文件是 Code Canvas 页面的**实现层**引导:怎么让首次生成的页面跟随宿主 App 的品牌主题色,而不是永远一片 antd 默认蓝。视觉方向怎么定(页面类型、差异化、去 AI 味)是**栈无关**的,走共用的决策层技能 `yida-page-uiux`,本文件只讲 Canvas(React18 + antd + Tailwind)这套栈怎么把主色落地。
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> 决策层:需要视觉方向时调用 `use_skill("yida-page-uiux", "确定 Code Canvas 页面视觉方向")`(先做 Step 0 导航形态判定,再定工作台/仪表盘/列表/详情、5 维差异化、去 AI 味、禁 emoji)。
|
|
6
6
|
> 实现层:本文件负责把「主色跟随 App 品牌」落到 antd token / Tailwind / 图表。
|
|
7
7
|
|
|
8
8
|
> **前提是导航可见**:跟随品牌主色是为了跟应用框架融合。若页面隐藏了应用导航(`isRenderNav=false`,沉浸/独立/门户/大屏,由 `yida-page-uiux` Step 0 判定),主色相可自立、不必严格跟品牌——此时把下文 `readBrandColor` 的取值换成自定的主色即可(antd `colorPrimary` / 图表色都改喂自定色),**语义色仍固定、去 AI 味红线仍生效**。拿不准就按「跟随品牌」这个更安全的默认走。
|
|
@@ -20,7 +20,7 @@ description: 将 OpenYida 原普通自定义页面链路升级/迁移为宜搭 C
|
|
|
20
20
|
| --- | --- |
|
|
21
21
|
| 登录态只读验证 | `openyida env --json` + `openyida login --check-only --json` |
|
|
22
22
|
| 原页面源码 | 找到 `.oyd.jsx` / `.jsx` 源文件;不要只看 dist 编译产物 |
|
|
23
|
-
| 目标页面 Schema | `openyida get-schema <appType> <formUuid
|
|
23
|
+
| 目标页面 Schema | 先执行 `openyida get-schema <appType> <formUuid>`,再用 create_file / Write / file edit tool 按需保存到 `<projectRoot>/.cache/openyida/canvas-upgrade/<name>-schema.json`;不要用 shell 重定向 |
|
|
24
24
|
| Code Canvas 发布能力 | 已内置:产出的 `.canvas.jsx` 用 `openyida publish <源文件> <appType> <formUuid>` 即自动走 Canvas 链路(`.canvas.jsx` 扩展名识别,CLI 本地用 Babel 编译出 `runtimeCode` + `importedModules` 并写 `YidaCodeCanvas` Schema),无需设计器手工添加 |
|
|
25
25
|
| 原页面数据依赖 | 列出 `this.utils.yida.*`、`this.dataSourceMap.*`、连接器、外部脚本、全局变量 |
|
|
26
26
|
|
|
@@ -60,8 +60,8 @@ openyida login --check-only --json
|
|
|
60
60
|
# Step 2: 准备原生报表数据源
|
|
61
61
|
# 无原生报表时先使用 yida-report 创建;已有 URL 时解析 appType/formUuid
|
|
62
62
|
|
|
63
|
-
# Step 3: 获取报表 Schema
|
|
64
|
-
openyida get-schema <appType>
|
|
63
|
+
# Step 3: 获取报表 Schema;需要文件时用 CLI 输出目录或结构化文件写入工具保存 stdout
|
|
64
|
+
openyida get-schema <appType> --all --keyword <报表名称> --output-dir .cache/openyida/<项目名或任务名>/schemas
|
|
65
65
|
|
|
66
66
|
# Step 4: 解析 cid / className / dataSetKey / filterKey / cname
|
|
67
67
|
|
|
@@ -156,5 +156,5 @@ A:更新 `_customState.filterValueMap`,重新调用报表数据请求函数
|
|
|
156
156
|
| [ECharts 视觉规范](references/echarts-design-spec.md) | 默认风格、配色、卡片、图表模板、多端适配、表格样式 | 设计页面 UI 时必读 |
|
|
157
157
|
| [已有报表绑定指南](references/echarts-bindding-guide.md) | 方案 C、Schema 解析、filterKey、数据源完整性校验 | 用户提供报表 URL 时必读 |
|
|
158
158
|
| [示例](references/examples.md) | 命令示例、页面代码示例、常见图表实现 | 需要参考完整写法时阅读 |
|
|
159
|
-
|
|
|
160
|
-
|
|
|
159
|
+
| `yida-report` 子技能 | 原生报表创建、追加图表、Schema 生成 | 需要先创建或补齐原生报表时调用 `use_skill("yida-report", "创建或补齐原生报表")` |
|
|
160
|
+
| `yida-custom-page` 子技能 | 宜搭 React 16 自定义页面规则 | 不确定页面运行时限制时调用 `use_skill("yida-custom-page", "确认宜搭自定义页面运行时限制")` |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 基于已有报表创建 ECharts 页面指南
|
|
2
2
|
|
|
3
3
|
> 本文档包含方案 C 的完整执行流程、Schema 解析规范、filterKey 提取规则和数据源完整性校验。
|
|
4
|
-
> 由 `yida-chart
|
|
4
|
+
> 由 `yida-chart` 主技能拆分而来,执行方案 C 时必须读取本文档。
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -25,7 +25,7 @@ Step 1: 从 URL 中解析 appType 和 formUuid
|
|
|
25
25
|
Step 2: 执行 openyida env 检测环境和登录态
|
|
26
26
|
↓
|
|
27
27
|
Step 3: 执行 openyida get-schema <appType> <formUuid> 获取现有报表 Schema
|
|
28
|
-
↓
|
|
28
|
+
↓ 需要文件时,使用结构化文件写入工具保存 stdout,或用 --all --keyword --output-dir 输出到 project .cache
|
|
29
29
|
↓
|
|
30
30
|
Step 4: 解析 Schema,提取每个图表组件的 5 个核心参数
|
|
31
31
|
↓ 详见下方「Schema 解析规范」
|
|
@@ -58,15 +58,14 @@ Step 11: 输出 ECharts 自定义页面访问链接
|
|
|
58
58
|
|
|
59
59
|
## Schema 获取注意事项
|
|
60
60
|
|
|
61
|
-
1.
|
|
61
|
+
1. **不要用 shell 重定向保存 Schema**:报表 Schema 通常非常大(数千行),需要文件时用 CLI 自带输出目录或 agent 结构化文件写入工具
|
|
62
62
|
```bash
|
|
63
|
-
openyida get-schema <appType>
|
|
63
|
+
openyida get-schema <appType> --all --keyword <报表名称> --output-dir .cache/openyida/<项目名或任务名>/schemas
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
2.
|
|
66
|
+
2. **单表回读时保存 stdout**:如必须按 `formUuid` 回读,先执行命令,再用 create_file / Write / file edit tool 保存纯 JSON 到 `<projectRoot>/.cache/openyida/<项目名或任务名>/report-schema.json`
|
|
67
67
|
```bash
|
|
68
|
-
|
|
69
|
-
tail -n +<行号> .cache/report-schema-output.txt > .cache/report-schema.json
|
|
68
|
+
openyida get-schema <appType> <formUuid> --json
|
|
70
69
|
```
|
|
71
70
|
|
|
72
71
|
---
|