openyida 2026.4.15 → 2026.4.20
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/lib/auth/login.js +3 -3
- package/lib/auth/qr-login.js +1 -0
- package/package.json +1 -1
- package/yida-skills/SKILL.md +214 -150
- package/yida-skills/skills/yida-ppt/SKILL.md +699 -0
- package/yida-skills/skills/yida-ppt-slider/SKILL.md +228 -2
package/lib/auth/login.js
CHANGED
|
@@ -243,7 +243,7 @@ const { URL } = require('url');
|
|
|
243
243
|
const page = await context.newPage();
|
|
244
244
|
await page.goto(${JSON.stringify(loginUrl)}, { timeout: 120000 });
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
console.error(' Waiting for login (up to 10 minutes)...');
|
|
247
247
|
// 轮询 tianshu_csrf_token cookie 出现来判断登录成功
|
|
248
248
|
// 兼容专属域名(your-company.aliwork.com)登录后跳转路径不固定的情况
|
|
249
249
|
let loginSuccess = false;
|
|
@@ -257,12 +257,12 @@ const { URL } = require('url');
|
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
259
|
if (!loginSuccess) {
|
|
260
|
-
|
|
260
|
+
console.error(' ⏰ Login timed out (10 minutes). Please try again.');
|
|
261
261
|
await browser.close();
|
|
262
262
|
process.exit(1);
|
|
263
263
|
}
|
|
264
264
|
await page.waitForLoadState('networkidle').catch(() => {});
|
|
265
|
-
|
|
265
|
+
console.error(' ✅ Login successful!');
|
|
266
266
|
|
|
267
267
|
const currentUrl = page.url();
|
|
268
268
|
const cookies = await context.cookies();
|
package/lib/auth/qr-login.js
CHANGED
|
@@ -22,6 +22,7 @@ const readline = require('readline');
|
|
|
22
22
|
const { extractInfoFromCookies } = require('../core/utils');
|
|
23
23
|
const { saveCookieCache } = require('./login');
|
|
24
24
|
const { t } = require('../core/i18n');
|
|
25
|
+
const { warn } = require('../core/chalk');
|
|
25
26
|
|
|
26
27
|
const { resolveLoginUrl, resolveEndpoint } = require('../core/env-manager');
|
|
27
28
|
const DEFAULT_BASE_URL = 'https://www.aliwork.com';
|
package/package.json
CHANGED
package/yida-skills/SKILL.md
CHANGED
|
@@ -1,234 +1,298 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description:
|
|
2
|
+
name: Yida
|
|
3
|
+
description: >
|
|
4
|
+
宜搭 AI 应用开发总入口技能。通过有 AI Coding 能力的智能体(悟空/Claude/Open Code 等)+ 宜搭低代码平台,实现一句话生成完整应用。
|
|
5
|
+
包含应用创建、表单设计、自定义页面开发、页面发布、登录态管理等完整开发流程。
|
|
6
|
+
当用户提到"宜搭"、"yida"、"低代码"、"创建应用"、"创建表单"、"发布页面"、"搭建"、"系统"、等关键词时,使用此技能。
|
|
7
|
+
license: MIT
|
|
8
|
+
compatibility:
|
|
9
|
+
- opencode
|
|
10
|
+
- claude-code
|
|
11
|
+
- qoder
|
|
12
|
+
- wukong
|
|
4
13
|
metadata:
|
|
5
|
-
|
|
14
|
+
audience: developers
|
|
15
|
+
workflow: yida-development
|
|
16
|
+
version: 3.0.0
|
|
17
|
+
tags:
|
|
18
|
+
- yida
|
|
19
|
+
- low-code
|
|
20
|
+
- app
|
|
21
|
+
- form
|
|
22
|
+
- custom-page
|
|
6
23
|
---
|
|
7
24
|
|
|
8
25
|
# 宜搭 AI 应用开发指南
|
|
9
26
|
|
|
10
|
-
|
|
27
|
+
## 概述
|
|
11
28
|
|
|
12
|
-
|
|
29
|
+
本技能通过有 AI Coding 能力的智能体(悟空/Claude/Open Code 等) + 宜搭低代码平台,实现一句话生成完整应用。涵盖从应用创建、表单设计、自定义页面开发到页面发布的完整链路。
|
|
13
30
|
|
|
14
|
-
|
|
15
|
-
- 不要在未读取子技能 SKILL.md 的情况下执行操作,参数格式必须以文档为准
|
|
16
|
-
- 不要在 corpId 不一致时强行创建应用,必须先询问用户
|
|
17
|
-
- 不要将临时文件写在项目根目录,统一写入 `.cache/` 文件夹
|
|
31
|
+
所有操作通过 **`openyida`** 命令行工具统一执行,无需关心脚本路径或运行环境差异。
|
|
18
32
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
- 执行任何操作前,必须先运行 `openyida env` 检测环境和登录态
|
|
22
|
-
- 每个子技能执行前,必须完整读取其 SKILL.md,不得凭记忆猜测参数
|
|
23
|
-
- 业务语义信息写入 `prd/<项目名>.md`,Schema ID 写入 `.cache/<项目名>-schema.json`
|
|
24
|
-
- 超过 100 行的大文件写入,使用 `large-file-write` 技能,禁止用 heredoc
|
|
25
|
-
- 在悟空环境中(`AGENT_WORK_ROOT` 包含 `.real`),执行任何 npm/node/npx 命令前,必须先设置 `export PATH="$HOME/.real/.bin/node/bin:$PATH"`,确保使用悟空自带的 node 环境
|
|
33
|
+
**登录态说明**:所有命令自动读取 `.cache/cookies.json`,首次运行或 Cookie 失效时自动触发登录流程,无需手动执行登录命令。
|
|
26
34
|
|
|
27
35
|
---
|
|
28
36
|
|
|
29
|
-
##
|
|
37
|
+
## 环境依赖
|
|
30
38
|
|
|
31
|
-
|
|
39
|
+
| 依赖 | 版本 | 用途 |
|
|
40
|
+
|------|------|------|
|
|
41
|
+
| Node.js | ≥ 16 | 运行 openyida |
|
|
32
42
|
|
|
33
43
|
```bash
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
44
|
+
# 安装 openyida(首次使用前执行)
|
|
45
|
+
npm install -g openyida
|
|
46
|
+
|
|
47
|
+
# 更新 openyida 到最新版本
|
|
48
|
+
npm install -g openyida@latest
|
|
49
|
+
```
|
|
38
50
|
|
|
39
|
-
|
|
40
|
-
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 更新 openyida
|
|
41
54
|
|
|
42
|
-
|
|
43
|
-
|
|
55
|
+
**手动更新**:
|
|
56
|
+
```bash
|
|
57
|
+
npm install -g openyida@latest
|
|
44
58
|
```
|
|
45
59
|
|
|
46
|
-
|
|
60
|
+
**让 AI 帮你更新**:
|
|
47
61
|
|
|
48
|
-
|
|
49
|
-
# 0. 悟空环境:确保使用悟空自带的 node/npm(避免权限问题)
|
|
50
|
-
if ($env:AGENT_WORK_ROOT -and $env:AGENT_WORK_ROOT -match '\.real') {
|
|
51
|
-
$env:PATH = "$env:USERPROFILE\.real\.bin\node\bin;$env:PATH"
|
|
52
|
-
}
|
|
62
|
+
执行 `openyida` 命令出现报错时,直接告诉 AI:
|
|
53
63
|
|
|
54
|
-
|
|
55
|
-
try { openyida -v } catch { npm install -g openyida@latest }
|
|
64
|
+
> "openyida 命令出错了,请帮我更新 openyida"
|
|
56
65
|
|
|
57
|
-
|
|
58
|
-
|
|
66
|
+
AI 会自动执行以下命令完成更新:
|
|
67
|
+
```bash
|
|
68
|
+
npm install -g openyida@latest
|
|
59
69
|
```
|
|
60
70
|
|
|
71
|
+
更新完成后重新执行出错的命令即可。
|
|
72
|
+
|
|
61
73
|
---
|
|
62
74
|
|
|
63
|
-
##
|
|
64
|
-
|
|
65
|
-
根据用户描述,快速定位应使用的子技能:
|
|
66
|
-
|
|
67
|
-
用户提到"查询应用列表/我的应用/有哪些应用" → `openyida yida-app-list`(直接执行,无需子技能)
|
|
68
|
-
用户提到"创建应用/新建系统/搭建平台" → 先读 `yida-app` 了解全流程,再用 `yida-create-app`
|
|
69
|
-
用户提到"创建表单/新增字段/更新表单" → `yida-create-form-page`
|
|
70
|
-
用户提到"自定义页面/JSX/React/可视化大屏" → `yida-custom-page` + `yida-publish-page`
|
|
71
|
-
用户提到"审批流程/流程表单/审批节点" → `yida-create-process` 或 `yida-process-rule`
|
|
72
|
-
用户提到"流程预览/流程图/审批进度/流程可视化" → `openyida process preview`(直接执行)
|
|
73
|
-
用户提到"数据查询/数据管理/表单实例" → `yida-data-management`
|
|
74
|
-
用户提到"报表/图表/ECharts/数据大屏" → `yida-report`(原生报表)或 `yida-chart`(ECharts 高级)
|
|
75
|
-
用户提到"连接器/外部接口/HTTP 接入" → `yida-connector`
|
|
76
|
-
用户提到"权限/字段权限/数据权限" → `yida-form-permission`
|
|
77
|
-
用户提到"公开访问/分享链接/外部访问" → `yida-page-config`
|
|
78
|
-
用户提到"集成/自动化/触发通知" → `yida-integration`
|
|
79
|
-
用户提到"登录/Cookie 失效/切换账号" → `yida-login` 或 `yida-logout`
|
|
80
|
-
用户提到"公式/计算字段/函数" → `yida-formula`
|
|
81
|
-
用户提到"闪记/会议纪要/PRD" → `yida-flash-note-to-prd`
|
|
82
|
-
用户提到"Sequence/主键冲突/自增ID错误" → `yida-db-seq-fix`
|
|
83
|
-
|
|
84
|
-
**关键区分**:
|
|
85
|
-
- `yida-report`(宜搭原生报表页面,16 种内置图表)vs `yida-chart`(ECharts 自定义大屏,依赖 yida-report 作数据源)
|
|
86
|
-
- `yida-create-process`(从零创建流程表单一体化)vs `yida-process-rule`(为已有表单配置审批规则)
|
|
87
|
-
- `yida-create-form-page`(创建/更新表单结构)vs `yida-data-management`(操作表单中的数据记录)
|
|
88
|
-
|
|
89
|
-
> 易混淆场景详见各子技能 SKILL.md 的"注意事项"章节。
|
|
75
|
+
## ⚡ 首要步骤:检测运行环境(必须先执行)
|
|
90
76
|
|
|
91
|
-
|
|
77
|
+
**在执行任何宜搭操作前,必须先运行环境检测命令**,确认当前 AI 工具环境和登录态:
|
|
92
78
|
|
|
93
|
-
|
|
79
|
+
```bash
|
|
80
|
+
openyida env
|
|
81
|
+
```
|
|
94
82
|
|
|
95
|
-
|
|
83
|
+
**输出解读**:
|
|
96
84
|
|
|
97
|
-
|
|
|
85
|
+
| 字段 | 说明 |
|
|
98
86
|
|------|------|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
| 切换组织(logout/login) | 会清除当前登录态 |
|
|
87
|
+
| AI 工具检测 | 显示当前活跃的 AI 工具(悟空/OpenCode/Aone Copilot 等) |
|
|
88
|
+
| 当前生效环境 | 显示项目根目录路径 |
|
|
89
|
+
| 登录态检测 | 显示是否已登录、域名、组织 ID |
|
|
103
90
|
|
|
104
|
-
|
|
105
|
-
1. 展示操作摘要(操作类型 + 目标对象 + 影响范围)
|
|
106
|
-
2. 等待用户明确回复确认
|
|
107
|
-
3. 执行操作
|
|
91
|
+
> **若显示"未登录",自动执行 `openyida login`,无需手动操作。**。
|
|
108
92
|
|
|
109
93
|
---
|
|
110
94
|
|
|
111
|
-
##
|
|
95
|
+
## 🔧 初始化 project 工作目录
|
|
96
|
+
|
|
97
|
+
**如果当前工程目录下没有 `project/` 目录**(例如切换了 AI 工具、或在新工程中首次使用),需要手动执行初始化:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
openyida copy
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 复制目标说明
|
|
104
|
+
|
|
105
|
+
| AI 工具 | project 目录位置 | 说明 |
|
|
106
|
+
|---------|-----------------|------|
|
|
107
|
+
| **悟空(Wukong)** | `~/.real/workspace/project` | 悟空有专属 workspace,与工程目录无关 |
|
|
108
|
+
| **其他工具**(Aone Copilot、Cursor、Claude Code、OpenCode 等) | `<当前工程目录>/project` | 以项目为单位,需在工程根目录下执行 |
|
|
109
|
+
|
|
110
|
+
### AI 执行规则
|
|
112
111
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
112
|
+
**在执行任何宜搭操作前,先检查 project 目录是否存在**:
|
|
113
|
+
|
|
114
|
+
- **悟空**:检查 `~/.real/workspace/project` 是否存在
|
|
115
|
+
- **其他工具**:检查当前工程目录下的 `project/` 是否存在
|
|
116
|
+
|
|
117
|
+
若不存在,执行初始化:
|
|
118
|
+
```bash
|
|
119
|
+
openyida copy
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
> ⚠️ 对于非悟空工具,必须先 `cd` 到工程根目录再执行 `openyida copy`。
|
|
118
123
|
|
|
119
124
|
---
|
|
120
125
|
|
|
121
|
-
##
|
|
126
|
+
## 何时使用
|
|
122
127
|
|
|
123
|
-
|
|
128
|
+
当用户提出以下需求时,使用本技能并按照完整开发流程执行:
|
|
129
|
+
- 创建宜搭应用、表单、自定义页面
|
|
130
|
+
- 发布或更新宜搭页面
|
|
131
|
+
- 配置页面公开访问/组织内分享
|
|
132
|
+
- 查询表单 Schema 或字段 ID
|
|
133
|
+
- 管理宜搭登录态(登录/退出)
|
|
124
134
|
|
|
125
|
-
|
|
135
|
+
---
|
|
126
136
|
|
|
127
|
-
|
|
128
|
-
|------|------|------|
|
|
129
|
-
| **yida-app** | [`skills/yida-app/SKILL.md`](skills/yida-app/SKILL.md) | 完整应用开发全流程编排(从零到一,创建应用前必读) |
|
|
130
|
-
| **app-list** | `openyida yida-app-list [--size N]` | 查询我的应用列表,返回 appName / appType / systemLink(直接执行,无需子技能) |
|
|
131
|
-
| **sample** | `openyida sample <skill> <name>` | 输出代码示例/模板到 `.cache/samples/<name>.js`,再用 `read_file` 读取(`--list` 查看所有可用示例) |
|
|
132
|
-
| **yida-create-app** | [`skills/yida-create-app/SKILL.md`](skills/yida-create-app/SKILL.md) | 创建应用,获取 appType |
|
|
133
|
-
| **yida-create-page** | [`skills/yida-create-page/SKILL.md`](skills/yida-create-page/SKILL.md) | 创建自定义展示页面,获取 formUuid |
|
|
134
|
-
| **yida-publish-page** | [`skills/yida-publish-page/SKILL.md`](skills/yida-publish-page/SKILL.md) | 编译并发布自定义页面 |
|
|
137
|
+
## 完整开发流程
|
|
135
138
|
|
|
136
|
-
|
|
139
|
+
```
|
|
140
|
+
[Step 1] 创建应用 → openyida create-app → 获得 appType
|
|
141
|
+
↓
|
|
142
|
+
[Step 2] 需求分析 → 写入 prd/<项目名>.md
|
|
143
|
+
↓
|
|
144
|
+
[Step 3] 创建自定义页面 → openyida create-page → 获得 formUuid(自定义页面)
|
|
145
|
+
↓
|
|
146
|
+
[Step 4](按需)创建/更新表单 → openyida create-form → 获得 formUuid(表单)
|
|
147
|
+
↓
|
|
148
|
+
[Step 5] 编写自定义页面代码 → yida-custom-page 规范 → pages/src/<项目名>.js
|
|
149
|
+
↓
|
|
150
|
+
[Step 6] 发布页面 → openyida publish
|
|
151
|
+
↓
|
|
152
|
+
[Step 7](按需)配置公开访问 → openyida verify-short-url / save-share-config
|
|
153
|
+
↓
|
|
154
|
+
[Step 8] 输出访问链接,用系统浏览器打开
|
|
155
|
+
```
|
|
137
156
|
|
|
138
|
-
|
|
139
|
-
|------|------|------|
|
|
140
|
-
| **yida-create-form-page** | [`skills/yida-create-form-page/SKILL.md`](skills/yida-create-form-page/SKILL.md) | 创建/更新表单(19 种字段类型) |
|
|
141
|
-
| **yida-get-schema** | [`skills/yida-get-schema/SKILL.md`](skills/yida-get-schema/SKILL.md) | 获取表单 Schema,确认字段 ID |
|
|
142
|
-
| **yida-data-management** | [`skills/yida-data-management/SKILL.md`](skills/yida-data-management/SKILL.md) | 表单/流程实例的查询、新增、更新 |
|
|
143
|
-
| **yida-form-permission** | [`skills/yida-form-permission/SKILL.md`](skills/yida-form-permission/SKILL.md) | 表单权限配置(字段/数据/操作权限) |
|
|
144
|
-
| **yida-formula** | [`skills/yida-formula/SKILL.md`](skills/yida-formula/SKILL.md) | 公式字段编写规范(函数速查、18 个常见场景示例) |
|
|
157
|
+
---
|
|
145
158
|
|
|
146
|
-
|
|
159
|
+
## 子技能速查
|
|
160
|
+
|
|
161
|
+
> 每个子技能均有独立的 SKILL.md,执行前请读取对应文档获取详细参数说明。
|
|
162
|
+
|
|
163
|
+
| 技能 | SKILL.md 路径 | 用途 | 典型命令 |
|
|
164
|
+
|------|--------------|------|---------|
|
|
165
|
+
| `yida-login` | `skills/yida-login/SKILL.md` | 登录态管理(通常自动触发) | `openyida login` |
|
|
166
|
+
| `yida-logout` | `skills/yida-logout/SKILL.md` | 退出登录 / 切换账号 | `openyida logout` |
|
|
167
|
+
| `yida-create-app` | `skills/yida-create-app/SKILL.md` | 创建应用,获取 appType | `openyida create-app "<名称>"` |
|
|
168
|
+
| `yida-create-page` | `skills/yida-create-page/SKILL.md` | 创建自定义页面,获取 formUuid | `openyida create-page <appType> "<页面名>"` |
|
|
169
|
+
| `yida-create-form-page` | `skills/yida-create-form-page/SKILL.md` | 创建/更新表单页面 | `openyida create-form create <appType> "<表单名>" <字段JSON>` |
|
|
170
|
+
| `yida-get-schema` | `skills/yida-get-schema/SKILL.md` | 获取表单 Schema,确认字段 ID | `openyida get-schema <appType> <formUuid>` |
|
|
171
|
+
| `yida-custom-page` | `skills/yida-custom-page/SKILL.md` | 编写自定义页面 JSX 代码规范 | 详见 SKILL.md |
|
|
172
|
+
| `yida-publish-page` | `skills/yida-publish-page/SKILL.md` | 编译并发布自定义页面 | `openyida publish <源文件路径> <appType> <formUuid>` |
|
|
173
|
+
| `yida-page-config` | `skills/yida-page-config/SKILL.md` | 页面公开访问/组织内分享配置 | `openyida verify-short-url <appType> <formUuid> <url>` |
|
|
174
|
+
| `yida-chart` | `skills/yida-chart/SKILL.md` | 报表可视化(ECharts 图表 + 数据聚合) | 详见 SKILL.md |
|
|
175
|
+
| `yida-report` | `skills/yida-report/SKILL.md` | 宜搭原生报表创建(标准报表) | `openyida create-report <appType> "<名称>" <配置>` |
|
|
176
|
+
| `yida-ppt` | `skills/yida-ppt/SKILL.md` | PPT/演示文稿开发(深色科技风+Canvas粒子+电影级转场+玻璃态卡片) | 详见 SKILL.md |
|
|
147
177
|
|
|
148
|
-
|
|
149
|
-
|------|------|------|
|
|
150
|
-
| **yida-create-process** | [`skills/yida-create-process/SKILL.md`](skills/yida-create-process/SKILL.md) | 一键创建流程表单(创建+转流程+配置) |
|
|
151
|
-
| **yida-process-rule** | [`skills/yida-process-rule/SKILL.md`](skills/yida-process-rule/SKILL.md) | 为已有表单配置审批规则(条件分支/审批节点/字段权限) |
|
|
152
|
-
| **process-preview** | `openyida process preview <appType> <processInstanceId> [--output <path>]` | 预览流程实例,生成可视化流程图 HTML(高亮当前审批节点,直接执行,无需子技能) |
|
|
153
|
-
| **yida-integration** | [`skills/yida-integration/SKILL.md`](skills/yida-integration/SKILL.md) | 创建集成&自动化逻辑流(触发事件/通知/数据操作) |
|
|
178
|
+
---
|
|
154
179
|
|
|
155
|
-
|
|
180
|
+
## 关键规则
|
|
156
181
|
|
|
157
|
-
|
|
158
|
-
|------|------|------|
|
|
159
|
-
| **yida-custom-page** | [`skills/yida-custom-page/SKILL.md`](skills/yida-custom-page/SKILL.md) | JSX 编码规范、API 调用、状态管理(必须完整学习) |
|
|
160
|
-
| **yida-density** | [`skills/yida-density/SKILL.md`](skills/yida-density/SKILL.md) | 信息密度设计规范(紧凑/舒适/宽松) |
|
|
161
|
-
| **yida-table-form** | [`skills/yida-table-form/SKILL.md`](skills/yida-table-form/SKILL.md) | 表格形式批量表单提交 |
|
|
162
|
-
| **yida-ppt-slider** | [`skills/yida-ppt-slider/SKILL.md`](skills/yida-ppt-slider/SKILL.md) | PPT 幻灯片页面开发(演讲/路演/培训) |
|
|
182
|
+
### 1. 执行子技能前必须读取其 SKILL.md
|
|
163
183
|
|
|
164
|
-
|
|
184
|
+
每个子技能的详细参数、注意事项、示例均在其 SKILL.md 中。**执行任何子技能前,必须先读取对应的 SKILL.md**,不要凭记忆猜测参数格式。
|
|
165
185
|
|
|
166
|
-
|
|
167
|
-
|------|------|------|
|
|
168
|
-
| **yida-connector** | [`skills/yida-connector/SKILL.md`](skills/yida-connector/SKILL.md) | HTTP 连接器管理(创建/测试/智能生成) |
|
|
169
|
-
| **yida-report** | [`skills/yida-report/SKILL.md`](skills/yida-report/SKILL.md) | 创建宜搭原生报表(16 种图表/表格/筛选器,可作为 yida-chart 数据源) |
|
|
170
|
-
| **yida-chart** | [`skills/yida-chart/SKILL.md`](skills/yida-chart/SKILL.md) | ECharts 高级报表(定制化数据大屏) |
|
|
186
|
+
### 2. corpId 一致性检查(必须遵守)
|
|
171
187
|
|
|
172
|
-
|
|
188
|
+
在创建页面前,**必须对比 prd 文档中的 corpId 与 `.cache/cookies.json` 中的 corpId 是否一致**:
|
|
173
189
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
| **yida-login** | [`skills/yida-login/SKILL.md`](skills/yida-login/SKILL.md) | 登录态管理(通常自动触发) |
|
|
177
|
-
| **yida-logout** | [`skills/yida-logout/SKILL.md`](skills/yida-logout/SKILL.md) | 退出登录 / 切换账号 |
|
|
178
|
-
| **yida-page-config** | [`skills/yida-page-config/SKILL.md`](skills/yida-page-config/SKILL.md) | 页面公开访问 / 组织内分享配置 |
|
|
190
|
+
- **一致** → 继续执行
|
|
191
|
+
- **不一致** → 询问用户:重新登录到正确组织,还是在当前组织新建应用?
|
|
179
192
|
|
|
180
|
-
###
|
|
193
|
+
### 3. 配置信息分两处存储
|
|
181
194
|
|
|
182
|
-
|
|
|
183
|
-
|
|
184
|
-
|
|
|
185
|
-
|
|
|
186
|
-
| **yida-db-seq-fix** | [`skills/yida-db-seq-fix/SKILL.md`](skills/yida-db-seq-fix/SKILL.md) | PostgreSQL Sequence 自动修复(检测并修复主键冲突问题) |
|
|
187
|
-
| **large-file-write** | [`skills/large-file-write/SKILL.md`](skills/large-file-write/SKILL.md) | 大文件写入(解决 heredoc 截断问题) |
|
|
195
|
+
| 信息类型 | 存储位置 | 内容示例 |
|
|
196
|
+
|---------|---------|---------|
|
|
197
|
+
| 业务语义信息 | `prd/<项目名>.md` | 字段名称、字段类型、字段说明 |
|
|
198
|
+
| Schema ID | `.cache/<项目名>-schema.json` | `appType`、`formUuid`、`fieldId` |
|
|
188
199
|
|
|
189
|
-
|
|
200
|
+
> **prd 文档不记录 `formUuid`、`fieldId` 等 ID**,这些写入 `.cache/` 临时文件。
|
|
190
201
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
202
|
+
### 4. 临时文件规范
|
|
203
|
+
|
|
204
|
+
所有临时文件(cookies、schema 缓存等)**必须写在项目根目录的 `.cache/` 文件夹中**,不要写在系统其他位置。
|
|
205
|
+
|
|
206
|
+
### 5. 报表优化/美化提示规则(必须遵守)
|
|
207
|
+
|
|
208
|
+
当用户提到"优化"、"美化"、"更好看"、"不够漂亮"等与报表视觉效果相关的关键词时,**必须先询问用户**选择以下哪种方案:
|
|
209
|
+
|
|
210
|
+
| 方案 | 说明 | 适用场景 |
|
|
211
|
+
|------|------|---------|
|
|
212
|
+
| **方案 A:优化宜搭原生报表** | 调整图表类型、布局、筛选器等,仍使用宜搭原生报表组件 | 快速优化,无需编写代码 |
|
|
213
|
+
| **方案 B:创建 ECharts 高级报表** | 使用 ECharts + 自定义页面 JSX,实现高度定制化、更美观的数据可视化 | 需要更精美的视觉效果、复杂交互、数据大屏 |
|
|
214
|
+
|
|
215
|
+
**提示话术示例**:
|
|
216
|
+
|
|
217
|
+
> 我可以通过两种方式帮你优化报表:
|
|
218
|
+
> 1. **优化原生报表**:调整图表类型组合、布局排列、添加筛选器,快速提升效果
|
|
219
|
+
> 2. **创建 ECharts 高级报表**:使用 ECharts 自定义页面,实现更精美的视觉效果和交互体验(如渐变色、动画、自定义主题等)
|
|
220
|
+
>
|
|
221
|
+
> 你想选择哪种方案?
|
|
222
|
+
|
|
223
|
+
- 用户选择方案 A → 使用 `yida-report` 技能(`openyida create-report`)
|
|
224
|
+
- 用户选择方案 B → 读取 `skills/yida-chart/SKILL.md`,使用 `yida-chart` 技能
|
|
196
225
|
|
|
197
226
|
---
|
|
198
227
|
|
|
199
|
-
##
|
|
228
|
+
## 表单字段类型速查
|
|
229
|
+
|
|
230
|
+
| 类型 | 说明 | 特殊属性 |
|
|
231
|
+
|------|------|---------|
|
|
232
|
+
| `TextField` | 单行文本 | — |
|
|
233
|
+
| `TextareaField` | 多行文本 | — |
|
|
234
|
+
| `NumberField` | 数字 | `precision`(小数位)、`innerAfter`(单位) |
|
|
235
|
+
| `RadioField` | 单选 | `options` |
|
|
236
|
+
| `CheckboxField` | 多选 | `options` |
|
|
237
|
+
| `SelectField` | 下拉单选 | `options` |
|
|
238
|
+
| `MultiSelectField` | 下拉多选 | `options` |
|
|
239
|
+
| `DateField` | 日期 | `format`(如 `"YYYY-MM-DD"`) |
|
|
240
|
+
| `CascadeDateField` | 级联日期(范围) | `format` |
|
|
241
|
+
| `EmployeeField` | 成员选择 | `multiple` |
|
|
242
|
+
| `DepartmentSelectField` | 部门选择 | `multiple` |
|
|
243
|
+
| `AddressField` | 地址 | — |
|
|
244
|
+
| `AttachmentField` | 附件上传 | — |
|
|
245
|
+
| `ImageField` | 图片上传 | — |
|
|
246
|
+
| `TableField` | 子表格 | `children`(子字段列表) |
|
|
247
|
+
| `AssociationFormField` | 关联表单 | `associationForm` |
|
|
248
|
+
| `SerialNumberField` | 流水号 | `serialNumberRule` |
|
|
249
|
+
| `RateField` | 评分 | `count`(星级数) |
|
|
250
|
+
| `CountrySelectField` | 国家选择 | `multiple` |
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## 宜搭应用 URL 规则
|
|
200
255
|
|
|
201
256
|
| 页面类型 | URL 格式 |
|
|
202
257
|
|---------|---------|
|
|
203
258
|
| 应用首页 | `{base_url}/{appType}/workbench` |
|
|
204
259
|
| 表单提交页 | `{base_url}/{appType}/submission/{formUuid}` |
|
|
205
260
|
| 自定义页面 | `{base_url}/{appType}/custom/{formUuid}` |
|
|
261
|
+
| 自定义页面(隐藏导航) | `{base_url}/{appType}/custom/{formUuid}?isRenderNav=false` |
|
|
206
262
|
| 表单详情页 | `{base_url}/{appType}/formDetail/{formUuid}?formInstId={formInstId}` |
|
|
263
|
+
| 表单详情页(编辑模式) | `{base_url}/{appType}/formDetail/{formUuid}?formInstId={formInstId}&mode=edit` |
|
|
207
264
|
|
|
208
|
-
>
|
|
265
|
+
> 所有地址拼接 `&corpid={corpId}` 可自动切换到对应组织。
|
|
209
266
|
|
|
210
267
|
---
|
|
211
268
|
|
|
212
269
|
## 常见问题
|
|
213
|
-
|
|
214
270
|
**Q:发布时提示登录失效?**
|
|
215
|
-
|
|
271
|
+
|
|
272
|
+
重新登录后再发布:
|
|
273
|
+
```bash
|
|
274
|
+
openyida login
|
|
275
|
+
openyida publish <源文件路径> <appType> <formUuid>
|
|
276
|
+
```
|
|
216
277
|
|
|
217
278
|
**Q:如何查看已有表单的字段 ID?**
|
|
218
|
-
|
|
279
|
+
|
|
280
|
+
使用 `yida-get-schema` 技能获取表单 Schema,从中读取各字段的 `fieldId`:
|
|
281
|
+
```bash
|
|
282
|
+
openyida get-schema <appType> <formUuid>
|
|
283
|
+
```
|
|
219
284
|
|
|
220
285
|
**Q:如何更新已有表单字段?**
|
|
221
|
-
|
|
286
|
+
|
|
287
|
+
使用 `yida-create-form-page` 的 update 模式,详见 `skills/yida-create-form-page/SKILL.md`:
|
|
222
288
|
```bash
|
|
223
289
|
openyida create-form update <appType> <formUuid> '[{"action":"add","field":{"type":"TextField","label":"新字段"}}]'
|
|
224
290
|
```
|
|
225
291
|
|
|
226
292
|
**Q:发布时提示 corpId 不匹配?**
|
|
227
|
-
|
|
293
|
+
|
|
294
|
+
询问用户是否在当前组织创建新应用发布,或重新登录到正确组织:
|
|
228
295
|
```bash
|
|
229
296
|
openyida logout
|
|
230
297
|
openyida login
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
**Q:如何在表单/页面中调用外部接口?**
|
|
234
|
-
参考 `references/connector-datasource.md`,通过 `--datasource` 参数注入连接器数据源,在 JS 中通过 `this.dataSourceMap.<名称>.load()` 调用。
|
|
298
|
+
```
|