ソース情報
- リポジトリ
- openyida/openyida
- ソースの最終更新活動
- 2026年8月29日 08:28
- 検出された SKILL.md の言語
- 中国語
- スター
- 208
- フォーク
- 48
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/openyida/openyida --skill yida-data-managementコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SKILL.md を表示中
| name | yida-data-management |
| description | 宜搭数据管理。表单实例/子表/流程实例/任务中心的查询、新增、更新。表单走 /v1/form/,流程走 /v1/process/,不能混用。 |
涉及新增记录、生成测试数据、批量导入或发起流程时,必须连续完成下面 5 步;任一步断开都不算完成。
appType/formUuid;执行 openyida get-schema <appType> <formUuid> --field-map-json 获取真实 fieldId,必要时先 openyida data query ... 确认目标表单/流程可读。openyida data create form <appType> <formUuid> ...;流程表单用 openyida data create process <appType> <formUuid> --process-code <processCode> ...。表单接口和流程接口不能互相替代。--data-json '<json>';长 JSON 或批量造数先用结构化文件写入工具创建到 .cache/openyida/<项目名或任务名>/data-import/<name>.json,创建后必须立刻调用对应 openyida data create ... --data-file <path>。openyida data create form/process 每次只创建一条实例;多条记录按单次不超过 30 条循环/分批逐条调用。不要把多条实例数组塞进一个 --data-file,除非该数组是某个子表字段的字段值。openyida data query form|process <appType> <formUuid> ... 抽查至少 1 条新记录,确认 formData 非空且包含本次写入字段值;流程记录可再用返回的 processInstanceId 执行 get process 复核。yida-app 从零生成完整应用时,表单创建完成后默认加载本技能,为核心业务普通表单写入 1-3 条业务化示例记录,再让自定义页面读取这些真实表单记录。
执行规则:
dataBinding.mode=form 依赖的核心普通表单默认写入;配置字典表、权限表、敏感个人数据表、纯附件表或用户明确说不要造数时跳过,并在 final 说明原因。openyida get-schema <appType> <formUuid> --field-map-json 获取真实 fieldId;保存数据使用真实 fieldId 或 --resolve-aliases 可解析别名,禁止猜测字段 ID。openyida data create form;不要把 1-3 条记录作为顶层数组塞进一个 --data-file。openyida data query form 抽查至少 1 条,并把写入数量和抽查结果交给 yida-app 页面阶段使用。yida-create-form-pagetextField_eftt1aa5m),无法预测,必须通过 openyida get-schema 获取cat/echo/printf/tee 或重定向生成 --data-file、--search-file、CSV 或一次性脚本openyida data create form/process 的批量实例导入;顶层数组只适用于子表字段值等字段内部结构openyida data create ...openyida get-schema 获取真实字段 ID,并将字段 ID 映射记录到 .cache/<项目名>-schema.jsonDateField / CascadeDateField 必须使用 13 位毫秒时间戳(如 1719705600000),不要传 YYYY-MM-DD、YYYY-MM-DD HH:mm:ss 或 ISO 字符串openyida data query 抽查至少 1 条记录,确认 formData 中字段有实际值(非空),否则说明字段 ID 有误,需重新排查openyida data query subform 或 listTableDataByFormInstIdAndTableId 分页查询完整子表;不要把 searchFormDatas.currentPage 当作子表分页<projectRoot>/.cache/openyida/<项目名或任务名>/ 下,并复用真实查询到的 appType/formUuid/fieldId/formInstId.cache/ 顶层生成导入用的 *.json、*.js、*.py、*.csv 临时文件;推荐使用 <projectRoot>/.cache/openyida/<项目名或任务名>/data-import/ 存放数据文件,<projectRoot>/.cache/openyida/<项目名或任务名>/scripts/ 存放一次性执行脚本mkdir 或只创建 .cache/openyida/.../*.json.json、.js、.py 或 CSV 脚本/数据文件,但未执行 openyida data create ...openyida auth status、openyida login --check-only、openyida agent-capabilities 或 openyida get-schemaopenyida data create ... 报错、无返回,或未对每条实例执行 createopenyida data query ... 抽查,或抽查结果的 formData 为空appType、formUuid;流程表单已确认 processCodefieldId--data-file,文件位于 .cache/openyida/<项目名或任务名>/data-import/,且创建后已立即调用 openyida data create ... --data-file ...openyida data create form/process,且命令返回无报错openyida data query form|process ... 抽查至少 1 条,确认 formData 非空且字段值正确用户需要"查询数据"、"新增记录"、"更新数据"、"查看表单实例"、"发起流程"时使用。
关键区分:
yida-create-form-pageyida-data-source-connectors/v1/form/)vs 流程接口(/v1/process/)不能混用正向触发:
⚠️ 表单接口(
/v1/form/)和流程接口(/v1/process/)不能混用。
删除数据记录为不可逆操作,执行前必须:
表单与流程是两套独立接口,主键、参数、返回结构都不同,不能混用。
openyida data query form <appType> <formUuid> [--page 1 --size 20] [--search-json '<json>'|--search-file .cache/openyida/<项目名或任务名>/data-import/search.json] [--dynamic-order '{"fieldId":"+"}'] [--resolve-aliases]
openyida data get form <appType> --inst-id <formInstId>
openyida data create form <appType> <formUuid> --data-json '<json>' [--resolve-aliases]
openyida data create form <appType> <formUuid> --data-file .cache/openyida/<项目名或任务名>/data-import/record.json [--resolve-aliases]
> `create form` 会自动探测表单类型;当目标表单为流程表单时,会改用 `/v1/process/startInstance.json` 发起流程。若已知 `processCode`,仍推荐显式使用 `create process`。
openyida data update form <appType> --inst-id <formInstId> --form-uuid <formUuid> --data-json '<json>' [--resolve-aliases]
openyida data update form <appType> --inst-id <formInstId> --form-uuid <formUuid> --data-file .cache/openyida/<项目名或任务名>/data-import/patch.json [--resolve-aliases]
openyida data query subform <appType> <formUuid> --inst-id <formInstId> --table-field-id <fieldId|alias> [--page 1 --size 100] [--resolve-aliases]
--data-file/--search-file指向的文件先用 create_file / Write / file edit tool 创建。上方路径默认从 OpenYida project 工作目录执行;从 workspace 根执行命令时路径加project/前缀。
当 JSON 使用宜搭组件别名作为 key 时,追加 --resolve-aliases,OpenYida 会先读取表单 Schema 中的 componentAlias.items,再将别名转换为真实 fieldId 后调用数据接口。更新类命令若要解析别名,必须额外传 --form-uuid <formUuid>。
当 searchFormDatas 或 getFormDataById 返回的 formData.tableField_xxx 刚好是 50 行时,优先判断为详情接口对子表内嵌数据做了截断,不要直接下结论为"没有更多数据"。
正确处理流程:
formInstId 和子表真实 tableFieldId;如果只有别名,先执行 openyida get-schema 或给 query subform 追加 --resolve-aliases。openyida data query subform <appType> <formUuid> --inst-id <formInstId> --table-field-id <tableFieldId> --page 1 --size 100 查询子表第一页。totalCount 大于 data.length,继续按 currentPage/pageSize 翻页,或在脚本中复用 listTableDataByFormInstIdAndTableId 拉全量。注意:searchFormDatas.currentPage 分页的是主表实例列表,不是某条实例里的子表行。把 currentPage 改为 2 后返回空,只能说明主表第二页没有记录,不能证明子表不支持分页。
不要把"创建自定义数据源"作为解决宜搭表单/子表 50 行截断的首选方案;只有在确实需要调用 HTTP 连接器、第三方接口或外部系统数据时,才切换到 yida-data-source-connectors。
openyida data query process <appType> <formUuid> [--instance-status RUNNING] [--search-file .cache/openyida/<项目名或任务名>/data-import/process-search.json] [--resolve-aliases]
openyida data get process <appType> --process-inst-id <processInstanceId>
openyida data create process <appType> <formUuid> --process-code <processCode> --data-json '<json>' [--resolve-aliases]
openyida data create process <appType> <formUuid> --process-code <processCode> --data-file .cache/openyida/<项目名或任务名>/data-import/process-record.json [--resolve-aliases]
openyida data update process <appType> --process-inst-id <processInstanceId> --form-uuid <formUuid> --data-json '<json>' [--resolve-aliases]
openyida data update process <appType> --process-inst-id <processInstanceId> --form-uuid <formUuid> --data-file .cache/openyida/<项目名或任务名>/data-import/process-patch.json [--resolve-aliases]
openyida data query operation-records <appType> --process-inst-id <processInstanceId>
openyida data execute task <appType> --task-id <taskId> --process-inst-id <processInstanceId> --out-result AGREE --remark '同意' [--data-file .cache/openyida/<项目名或任务名>/data-import/task-data.json] [--form-uuid <formUuid>] [--resolve-aliases]
openyida data query tasks <appType> --type todo|done|submitted|cc [--page 1 --size 20]
| 接口 | 方法 | 说明 |
|---|---|---|
searchFormDatas | GET | 查询列表 |
searchFormDataIds | GET | 查询 ID 列表 |
getFormDataById | GET | 查询详情 |
saveFormData | POST | 新增 |
updateFormData | POST | 更新 |
listTableDataByFormInstIdAndTableId | GET | 查询子表数据 |
| 接口 | 方法 | 说明 |
|---|---|---|
startProcessInstance | POST | 发起流程 |
getInstanceIds | GET | 查询 ID 列表 |
getInstances | GET | 查询列表 |
getInstanceById | GET | 查询详情 |
updateInstance | POST | 更新 |
getOperationRecords | GET | 审批记录 |
executeTask | POST | 执行任务 |
| 接口 | 说明 |
|---|---|
getTodoTasksInApp | 待办 |
getDoneTasksInApp | 已完成 |
getMySubmitInApp | 已提交 |
getNotifyMeTasksInApp | 抄送 |
searchFieldJson必须传字符串:
[{"key":"textField_xxx","value":"测试","type":"TEXT","operator":"eq","componentName":"TextField"}]
{"textField_xxx":"文本","numberField_xxx":10,"dateField_xxx":1719705600000,"employeeField_xxx":["userId"]}
当 JSON 较长或用于批量导入时,使用结构化文件写入工具写入 <projectRoot>/.cache/openyida/<项目名或任务名>/data-import/<name>.json,再使用 --data-file 或 --search-file;不要为了拼接命令在仓库根目录、系统临时目录或 .cache/ 顶层生成临时脚本。openyida data create form/process 单次只提交一个实例 JSON,多条实例必须逐条/分批调用;不要把实例数组作为一个 --data-file 提交。
| 组件类型 | 查询格式 | 保存格式 |
|---|---|---|
| 文本 | "文本" | "文本" |
| 数字 | ["1","10"] 或单值 | 1 |
| 单选 | "选项一" | "选项一" |
| 多选 | ["选项一"] | ["选项一","选项二"] |
| 日期 | [开始毫秒时间戳,结束毫秒时间戳] | 13 位毫秒时间戳 |
| 成员 | ["userId"] | ["userId"] |
| 部门 | ["deptId"] | ["deptId"] |
| 子表 | "模糊搜索" | [{"textField_xxx":"值"}] |
| 关联表单 | 不支持直接查询 | [{"appType":"xxx","formUuid":"xxx","instanceId":"xxx"}] |
DateField 保存/更新值必须是 13 位毫秒时间戳,例如 1719705600000。CascadeDateField 保存/更新值必须是毫秒时间戳数组,例如 [1719705600000,1722384000000]。new Date('2024-06-30T00:00:00+08:00').getTime() 或等价方式转换,不要直接写 "2024-06-30"。openyida data create form APP_xxx FORM-xxx --data-json '{
"textField_xxx": "测试记录",
"dateField_xxx": 1719705600000,
"cascadeDateField_xxx": [1719705600000,1722384000000]
}'
关联表单字段保存时必须使用数组对象格式,包含三个必填字段:
# 示例:创建带关联客户的商机
openyida data create form APP_xxx FORM-商机表 --data-json '{
"textField_xxx": "商机名称",
"associationFormField_xxx": [{"appType":"APP_xxx","formUuid":"FORM-客户表","instanceId":"FINST-xxx"}]
}'
注意:字段名是
instanceId(不是 formInstId),三个字段缺一不可
按字段设计结果创建结构化表单配置,再执行表单创建、更新或数据写入命令。字段 ID 和关联记录 ID 都来自真实 Schema 或查询结果。
pageSize 最大 100,QPS 限制约 40 次/秒searchFieldJson 和 dynamicOrder 必须传字符串--dynamic-order '{"fieldId":"+"}'(升序)或 --dynamic-order '{"fieldId":"-"}'(降序);未传时不得依赖默认返回顺序openyida get-schema 获取,不要手写猜测subprocess 调用 openyida data ...,也可以用 JS 复用 Node 工具;脚本必须由结构化文件写入工具创建到 <projectRoot>/.cache/openyida/<项目名或任务名>/scripts/,导入数据放在 <projectRoot>/.cache/openyida/<项目名或任务名>/data-import/| 异常场景 | 处理方式 |
|---|---|
| 查询返回空结果 | 确认 formUuid 正确,检查查询条件是否过于严格 |
| 子表只返回 50 行 | 不要翻 searchFormDatas.currentPage;使用 query subform / listTableDataByFormInstIdAndTableId 按 formInstId + tableFieldId 分页查询 |
| 新增数据后字段值为空 | 字段 ID 有误,先执行 openyida get-schema 获取真实 fieldId |
| 更新失败(formInstId 不存在) | 先用 query 命令确认记录存在,不要猜测 formInstId |
| 接口返回 401/未登录 | 执行 openyida login 重新登录 |
| QPS 超限(429) | 降低请求频率,批量操作单次不超过 30 条 |
| 删除操作误删 | 删除前必须展示操作摘要并获得用户明确确认,不可逆操作 |
| 流程接口用了表单接口路径 | 检查接口路径:表单用 /v1/form/,流程用 /v1/process/ |
当 Agent 执行本技能遇到错误时,必须遵循以下默认行为:
| 错误类型 | 默认处理策略 |
|---|---|
| 命令执行失败 | 停止执行,向用户展示错误信息,询问是否重试或调整参数 |
| 参数缺失(appType/formUuid/fieldId 等) | 主动询问用户补充,或引导用户使用 yida-get-schema 获取 |
| 权限不足 / 登录态失效 | 停止执行,提示用户执行 openyida login 重新登录 |
| 字段 ID 无效 | 停止执行,引导用户执行 openyida get-schema 获取真实字段 ID |
| 删除操作前 | 必须先展示操作摘要(数量 + 关键字段),等待用户明确确认 |
| QPS 超限 | 降低请求频率,单次批量操作不超过 30 条,间隔 1 秒重试 |
| 表单/流程接口混用 | 停止执行,提示用户检查接口类型(表单用 /v1/form/,流程用 /v1/process/) |
| 网络超时 | 重试 1 次,仍失败则停止并提示用户检查网络 |
| 未知错误 | 停止执行,完整展示错误信息,建议用户反馈问题 |