完整简历 JSON
resumeData 是编辑器的输入和输出。输入发生在创建会话时;每次草稿自动保存成功后,父页面会通过 saved 事件收到完整输出。平台不规定接入方如何保存。
完整 resumeData
下面是一份完整示例。新简历传 {} 时,编辑器会按此结构补齐空字段;自动保存后,父页面收到的也是同一套结构。
{
"setData": {
"skin": "#1575bf",
"tplId": 1013,
"coverId": "",
"coverShow": 0,
"mm": 20,
"pp": 30,
"font": 1,
"fontSize": 13,
"lineHeight": 1.7,
"title": "",
"slogan": "",
"visitType": 1,
"visitPass": "",
"language": "cn",
"zpType": 0,
"moduleSort": []
},
"coverData": {
"name": "",
"job": "",
"school": "",
"mobile": "",
"email": ""
},
"zijianData": {
"visible": 0,
"content": ""
},
"basicInfo": {
"name": "张三",
"sex": 1,
"birthday": "1998-06",
"isAge": 1,
"email": "zhangsan@example.com",
"mobile": "13800000000",
"workYears": 3,
"photo": "https://www.qmjianli.com/api_open/v1/id-photo-files/OP...",
"photoShow": 1,
"minzu": "",
"zhengzhi": "共青团员",
"jiguan": "浙江杭州",
"hunyin": 0,
"height": "",
"weight": "",
"make": [
{
"keyName": "weixin",
"keyValue": "微信",
"value": "zhangsan",
"def": "微信"
}
]
},
"moduleData": [
{
"moduleName": "yixiang",
"moduleValue": "求职意向",
"visible": true,
"data": {
"job": "前端开发工程师",
"city": "杭州",
"money": "15-20K",
"joinTime": "随时到岗"
}
},
{
"moduleName": "jiaoyu",
"moduleValue": "教育背景",
"visible": true,
"data": [
{
"timeStart": "2016-09",
"timeEnd": "2020-06",
"today": false,
"name": "浙江大学",
"major": "计算机科学与技术",
"xueli": "本科",
"content": "<p>主修课程:数据结构、操作系统、计算机网络。</p>"
}
]
},
{
"moduleName": "work",
"moduleValue": "工作经历",
"visible": true,
"data": [
{
"timeStart": "2020-07",
"timeEnd": "2024-06",
"today": true,
"name": "某某科技有限公司",
"job": "前端开发工程师",
"content": "<p>负责公司官网和后台管理系统的前端开发。</p>"
}
]
},
{
"moduleName": "project",
"moduleValue": "项目经验",
"visible": true,
"data": [
{
"timeStart": "2023-01",
"timeEnd": "2023-08",
"today": false,
"name": "简历编辑器",
"job": "前端负责人",
"content": "<p>基于 Vue 实现在线简历编辑与 PDF 导出。</p>"
}
]
},
{
"moduleName": "shixi",
"moduleValue": "实习经历",
"visible": false,
"data": [
{
"timeStart": "",
"timeEnd": "",
"today": false,
"name": "",
"job": "",
"content": ""
}
]
},
{
"moduleName": "xiaoyuan",
"moduleValue": "校园经历",
"visible": false,
"data": [
{
"timeStart": "",
"timeEnd": "",
"today": false,
"name": "",
"job": "",
"content": ""
}
]
},
{
"moduleName": "jineng",
"moduleValue": "技能特长",
"visible": true,
"content": "",
"data": [
{
"name": "JavaScript",
"value": 90,
"showDegree": false
},
{
"name": "Vue",
"value": 85,
"showDegree": false
}
]
},
{
"moduleName": "zhengshu",
"moduleValue": "荣誉证书",
"visible": false,
"content": "",
"data": []
},
{
"moduleName": "pingjia",
"moduleValue": "自我评价",
"visible": true,
"content": "<p>具备扎实的前端基础,熟悉组件化开发和工程化流程。</p>"
},
{
"moduleName": "aihao",
"moduleValue": "兴趣爱好",
"visible": false,
"content": "",
"data": []
},
{
"moduleName": "make",
"moduleValue": "自定义模块",
"visible": false,
"content": ""
}
]
}顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
| setData | Object | 模板、主题色、字号等排版设置 |
| basicInfo | Object | 姓名、联系方式、照片等基本信息 |
| coverData | Object | 封面信息;开放编辑器当前不编辑封面,保留字段即可 |
| zijianData | Object | 自荐信;visible 为 0 时不展示 |
| moduleData | Array | 简历模块列表,顺序即展示顺序 |
content 字段是富文本 HTML,不是纯文本。setData 排版
| 字段 | 类型 | 说明 |
|---|---|---|
| tplId | Number | 模板 ID,与模板列表接口的 templateId 相同,例如 1013。创建会话和生成 PDF 时以该字段指定模板;不传则默认 1013。 |
| skin | String | 主题色,例如 #1575bf |
| mm | Number | 模块间距 |
| pp | Number | 页面边距 |
| fontSize | Number | 正文字号 |
| lineHeight | Number | 行高 |
| font | Number | 字体编号 |
| language | String | cn / en |
| coverId / coverShow | String / Number | 封面模板;开放编辑器当前固定为空 / 0 |
| moduleSort | Array | 模块顺序;空数组表示使用 moduleData 原顺序 |
basicInfo 基本信息
| 字段 | 类型 | 说明 |
|---|---|---|
| name | String | 姓名 |
| sex | Number | 性别:0 不填,1 男,2 女 |
| birthday | String | yyyy-MM |
| isAge | Number | 1 显示年龄,0 显示出生年月 |
| mobile / email | String | 手机号、邮箱 |
| workYears | Number | 工作年限,-1 表示不填 |
| photo | String | 照片 URL。用户在编辑器上传后,这里是平台临时地址,需接入方转存后替换 |
| photoShow | Number | 是否展示照片,1 展示,0 不展示 |
| minzu / zhengzhi / jiguan | String | 民族、政治面貌、籍贯 |
| hunyin | Number | 婚姻状况选项值,0 表示不填 |
| height / weight | String | 身高 cm、体重 kg |
| make | Array | 自定义基本信息项,每项含 keyName、keyValue、value |
照片临时地址
用户在编辑器里上传的简历照片,会写入 basicInfo.photo,地址形如:
https://www.qmjianli.com/api_open/v1/id-photo-files/OP...该地址只在当前编辑会话期间可用,过期后不保证能打开。平台不替接入方永久保存照片。
父页面通过
saved 收到平台临时照片地址后,应及时下载并转存到自己的对象存储,再把 basicInfo.photo 替换成自己的照片 URL 入库。下次创建会话时不要继续使用平台临时地址。moduleData 模块
| moduleName | 含义 | 数据形式 |
|---|---|---|
| yixiang | 求职意向 | 对象:job、city、money、joinTime |
| jiaoyu | 教育背景 | 经历数组,含 major、xueli |
| work | 工作经历 | 经历数组 |
| project | 项目经验 | 经历数组 |
| shixi | 实习经历 | 经历数组 |
| xiaoyuan | 校园经历 | 经历数组 |
| jineng | 技能特长 | content 或 data 数组:name、value、showDegree |
| zhengshu | 荣誉证书 | content 或 data 标签数组 |
| pingjia | 自我评价 | content |
| aihao | 兴趣爱好 | content 或 data 标签数组 |
| make | 自定义模块 | content |
每个模块都有 moduleValue(展示标题)和 visible(是否显示)。
经历条目
{
"timeStart": "2020-09",
"timeEnd": "2024-06",
"today": false,
"name": "学校或公司",
"job": "职位",
"major": "专业",
"xueli": "学历",
"content": "<p>经历描述 HTML</p>"
}最小输入
新简历直接传 {}。若已有少量字段,也可以只传:
{
"setData": { "tplId": 1013 },
"basicInfo": {
"name": "李四",
"mobile": "13900000000",
"email": "lisi@example.com"
}
}编辑器会补齐缺失的默认字段。
输出怎么处理
父页面收到的 message.resumeData 就是完整输出。接入方可以:
- 提交到自己的后端并保存;
- 只提取需要的字段;
- 放入前端状态管理继续使用;
- 直接忽略。
若接入方希望下次继续编辑,应实时保留 saved 输出(其中照片须已换成自己的 URL),并在下次创建会话时作为 resumeData 传回。