云之家表单通用解析规则

SKILL运维和基础设施
运维和基础设施 未标注权限 许可证不明确
安装这个技能

云之家(YunZhijia)表单数据解析与构建技能。用于解析云之家表单JSON结构,支持双向转换:推送数据解析和审批发起数据构建。触发场景:(1) 解析云之家审批推送数据 (2) 构建发起审批接口的表单数据 (3) 理解云之家表单widgetMap和detailMap结构 (4) 处理各类控件:文本、单选、多选、日期、人员、部门、明细表等。

一句话选型结论

按资料字段整理

云之家表单通用解析规则是运维和基础设施类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类运维和基础设施 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_e444c867/yzj-form-parser
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

运维和基础设施
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_e444c867仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791680316
正文体量8.6 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查服务与日志

按现象定位服务状态与日志线索。

写部署与巡检脚本

把重复的部署、巡检写成脚本。

故障排查

按步骤排查网络、依赖与配置。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在运维和基础设施场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
云之家表单通用解析规则当前 未标注权限 未标注 未标注 未标注 有
Azure 部署 调用外部服务 GitHub 仓库 664.2 万 Codex、Claude、Cursor 有
Azure diagnostics 问题管理 调用外部服务 GitHub 仓库 657.6 万 Codex、Claude、Cursor 有
Azure aigateway 部署 调用外部服务 GitHub 仓库 655.3 万 Codex、Claude、Cursor 有
Azure AI 搜索 调用外部服务 GitHub 仓库 651.4 万 Codex、Claude、Cursor 有
Azure Cloud migrate 部署 调用外部服务 GitHub 仓库 650.7 万 Codex、Claude、Cursor 有

SKILL.md 全文

8.6 KB
模型实际读到的说明书原文,来自技能仓库

云之家表单数据解析与构建

概述

云之家表单结构在推送数据和发起审批接口中是完全一致的,只是数据流向不同:
- 推送解析: widgetMap → 业务字段(读取数据)
- 发起审批: 业务字段 → widgetMap(写入数据)

表单整体结构

{
  "formInfo": {
    "widgetMap": { /* 主表单控件 */ },
    "detailMap": { /* 明细表控件 */ }
  },
  "basicInfo": { /* 基本信息 */ }
}

basicInfo 字段说明

字段 类型 说明
eventId String 推送事件ID,全局唯一
formInstId String 表单实例ID
flowInstId String 流程实例ID
formDefId String 表单模版ID
formCodeId String 表单模版codeId
dataType Integer 0=测试数据,1=正式数据
actionType String reach/agree/submit/delete/abandon/withdraw/disagree
title String 表单标题
eventTime Long 时间戳(毫秒)

主表单控件 (widgetMap)

widgetMap 是一个 Map,key 为控件的 codeId。

通用字段

每个控件都包含:
- codeId: 控件唯一标识
- title: 控件标题
- type: 控件类型
- value: 控件值
- extendFieldMap: 扩展配置


控件类型详解

详见 references/widget-types.md

1. 文本控件

type 说明 value类型 示例
textWidget 单行文本 String "一行文字"
textAreaWidget 多行文本 String "多行文字"

解析: 直接读取 value
构建: 直接设置 value

// 解析
String text = widget.getValue().toString();
// 构建
widget.setValue("文本内容");

2. 日期控件

type 说明 value类型
dateWidget 日期 Long (毫秒时间戳)
dateRangeWidget 日期区间 Long[] [开始,结束]

解析: 时间戳转Date
构建: Date转时间戳

// 解析
Long timestamp = (Long) widget.getValue();
Date date = new Date(timestamp);

// 构建
widget.setValue(date.getTime());

3. 数字/金额控件

type 说明 value类型
numberWidget 数字 String
moneyWidget 金额 String
arithmeticWidget 运算 String

注意: value 是字符串类型!

// 解析
BigDecimal amount = new BigDecimal(widget.getValue().toString());
// 构建
widget.setValue("100.50");

4. 单选控件 (radioWidget)

数据结构:

{
  "type": "radioWidget",
  "value": "AaBaCcDd",  // 选中的key
  "options": [
    { "key": "AaBaCcDd", "value": "选项1", "checked": true },
    { "key": "EeFfGgHh", "value": "选项2", "checked": false }
  ]
}

解析流程:

value(key) → options匹配 → value(显示文本) → 字典匹配 → 业务值

构建流程:

业务值 → 字典匹配 → 显示文本 → options匹配 → key → 设置value

5. 多选控件 (checkboxWidget)

数据结构:

{
  "type": "checkboxWidget",
  "value": ["AaBaCcDd", "EeFfGgHh"],  // 选中的key数组
  "options": [
    { "key": "AaBaCcDd", "value": "选项1", "checked": true },
    { "key": "EeFfGgHh", "value": "选项2", "checked": true }
  ]
}

解析: value 是 key 数组,遍历匹配
构建: 设置 key 数组

6. 人员选择控件 (personSelectWidget)

数据结构:

{
  "type": "personSelectWidget",
  "option": "single",  // single或multi
  "personInfo": [
    {
      "name": "张三",
      "userId": "xxx",
      "oid": "xxx",
      "image": "头像URL"
    }
  ],
  "value": ["xxx"]  // oid数组
}

解析: 从 personInfo 获取详细信息
构建: 设置 value 为 oid 数组,同时填充 personInfo

7. 部门选择控件 (departmentSelectWidget)

数据结构:

{
  "type": "departmentSelectWidget",
  "option": "single",
  "deptInfo": [
    {
      "name": "财务部",
      "orgId": "xxx",
      "longName": "公司/中心/部门"
    }
  ],
  "value": ["xxx"]  // orgId数组
}

8. 附件控件 (attachmentWidget)

详见 references/file-widget.md

数据结构:

{
  "type": "attachmentWidget",
  "maximum": 200,
  "value": [
    {
      "fileId": "69f06679d0c3b700014ec175",
      "fileName": "document.pdf",
      "fileSize": "482",
      "fileExt": "pdf",
      "fileType": "application/pdf"
    }
  ]
}

9. 图片控件 (imageWidget)

{
  "type": "imageWidget",
  "maximum": 12,
  "value": ["fileId1", "fileId2"]
}

注意: 图片控件的 value 是文件ID数组。

10. 关联审批控件 (relatedWidget)

{
  "type": "relatedWidget",
  "value": [
    {
      "flowInstId": "xxx",
      "formInstId": "xxx",
      "formDefId": "xxx",
      "formCodeId": "xxx",
      "title": "关联单据标题"
    }
  ]
}

11. 流水号控件 (serialNumWidget)

{
  "type": "serialNumWidget",
  "value": "1-20171023-002"  // 系统自动生成
}

明细表控件 (detailMap)

详见 references/detail-widget.md

数据结构:

{
  "Dd_0": {
    "codeId": "Dd_0",
    "title": "明细表名称",
    "type": "detailedWidget",
    "buttonName": "添加明细",
    "widgetVos": { /* 列定义 */ },
    "widgetValue": [ /* 行数据 */ ]
  }
}

widgetVos (列定义)

定义明细表中每列的控件结构,与主表控件结构相同:

{
  "Te_1": {
    "codeId": "Te_1",
    "type": "textWidget",
    "title": "姓名"
  }
}

widgetValue (行数据)

数组,每行是一个对象,key 为控件的 codeId:

[
  {
    "_id_": "1",          // 行ID
    "Te_1": "张三",       // 文本值
    "Ra_0": "AaBaCcDd",   // 单选key
    "Da_0": 1508688000000 // 日期时间戳
  }
]

数据解析示例

解析推送数据

// 1. 解析主表
Map<String, WidgetInfo> widgetMap = formInfo.getWidgetMap();

// 文本
String title = (String) widgetMap.get("_S_TITLE").getValue();

// 日期
Long timestamp = (Long) widgetMap.get("Da_0").getValue();
Date date = new Date(timestamp);

// 单选
WidgetInfo radio = widgetMap.get("Ra_0");
String key = (String) radio.getValue();
String label = getOptionLabel(radio.getOptions(), key);

// 人员
WidgetInfo person = widgetMap.get("Ps_0");
String name = person.getPersonInfo().get(0).getName();

// 2. 解析明细表
DetailWidget detail = detailMap.get("Dd_0");
Map<String, WidgetInfo> widgetVos = detail.getWidgetVos(); // 列定义
List<Map<String, Object>> rows = detail.getWidgetValue();  // 行数据

for (Map<String, Object> row : rows) {
    String name = (String) row.get("Te_1");
    String radioKey = (String) row.get("Ra_0");
    // 从widgetVos获取options进行匹配
}

构建发起审批数据

// 1. 构建主表
Map<String, Object> widgetMap = new HashMap<>();

// 文本
widgetMap.put("_S_TITLE", createTextWidget("标题内容"));

// 日期
widgetMap.put("Da_0", createDateWidget(System.currentTimeMillis()));

// 单选
widgetMap.put("Ra_0", createRadioWidget("AaBaCcDd", options));

// 人员
widgetMap.put("Ps_0", createPersonWidget(oid, name));

// 2. 构建明细表
List<Map<String, Object>> rows = new ArrayList<>();
for (Item item : items) {
    Map<String, Object> row = new HashMap<>();
    row.put("Te_1", item.getName());
    row.put("Ra_0", item.getRadioKey());
    rows.add(row);
}

注意事项

  1. 数字类型: numberWidget、moneyWidget 的 value 是字符串
  2. 时间戳: 日期控件的 value 是毫秒级时间戳
  3. 选项key: 单选/多选的 value 是选项的 key,不是显示文本
  4. 明细表行ID: 每行有 _id_ 字段,构建时可不设置
  5. 数组类型: 多选、人员、部门、附件的 value 都是数组

常见问题

5 问
答案由本站依据条目字段整理
云之家表单通用解析规则怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_e444c867/yzj-form-parser。安装方式为未标注。装完刷新技能列表或重开客户端。

云之家表单通用解析规则支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

云之家表单通用解析规则权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

云之家表单通用解析规则收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

云之家表单通用解析规则用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。