秒客来AI 开放平台文档

秒客来AI 开放平台面向企业三方系统提供标准 HTTP API,支持员工、绑定关系、项目、目标与目标复盘、任务、通知、便签、标签、贡献点和附件上传能力。 所有接口默认只作用于当前 API Key 所属企业,权限由后端统一控制并在请求时强校验。

显示全部接口

工作汇报接口

工作汇报接口查询需要 reports.read 权限、写操作需要 reports.write 权限,依赖企业套餐工作汇报模块。查询范围始终限定在企业内,并叠加当前操作人的汇报查看权限(本人 / 本部门 / 本部门及下级 / 全企业)。汇报类型统一使用字符串枚举 reportType:all 全部、day 日汇报、week 周报、month 月报;模板维护只接受 day/week/month。

必填请求头:本模块全部接口(含查询)都必须提供 X-Employee-Virtual-Id,未传或不属于当前企业时返回 403,错误信息为“请通过 X-Employee-Virtual-Id 指定当前操作人”。
汇报类型枚举:reportType 由网关统一映射为源站数值(all=0、day=1、week=2、month=3),调用方只需传字符串;传入枚举外的值返回 400,错误信息为“reportType 必须为 all、day、week 或 month”。
列表状态枚举:status 是汇报列表唯一的数据范围开关,由网关统一映射为源站数值(pending=1、received=2、sent=3、archived=4、all=5)。工作台侧的历史汇总、待办等待操作在开放平台统一收敛为同一个列表接口,用 status 区分即可;传入枚举外的值返回 400,错误信息为“status 必须为 pending、received、sent、archived 或 all”。
写操作口径:发送、撤回与考核评分通过汇报消息队列处理;确认、申诉、驳回申诉、修改原因说明同步处理。发送成功回执仅代表已受理,但 data.id 会返回预分配且稳定的汇报 Id;异步落库完成前详情可能暂不可读,最终发送结果必须查询汇报详情确认。调用前必须把汇报内容、考核分值等完整展示给用户并取得明确确认。
分页口径:分页响应统一为 data.total、data.page、data.pageSize、data.items;page 从 1 开始,pageSize 默认 20、最大 100,超出上限按 100 处理。
GET /api/openplatform/reports

分页查询汇报列表。status 决定数据范围:pending 待我操作、received 我收到且未完成、sent 我发送且未完成、archived 已归档(我参与的历史汇报)、all 与我关联的全部(本人发送的、发给本人的、抄送本人的)。其余参数一律作为附加筛选条件叠加。

参数类型必填说明
statusstring否列表状态,字符串枚举 pending(默认)/received/sent/archived/all。
reportTypestring否汇报类型,字符串枚举 all(默认)/day/week/month。
departmentIdint否部门 Id,只查询该部门的汇报;不传表示不限部门。
startAtdatetime否汇报时间范围起(含),ISO 8601 带时区。
endAtdatetime否汇报时间范围止(含),ISO 8601 带时区。
keywordstring否关键词,按汇报名称模糊匹配。
pageint否页码,默认 1。
pageSizeint否每页条数,默认 20,最大 100。
{
  "statusCode": 100,
  "msg": "获取成功",
  "data": {
    "total": 36,
    "page": 1,
    "pageSize": 20,
    "items": [
      {
        "id": "5f1c2a3b-4d5e-4f60-8a71-9b2c3d4e5f60",
        "reportTitle": "9 月第 2 周工作汇报",
        "reportType": 2,
        "reportDate": "2026-09-14T00:00:00+08:00",
        "startAt": "9/8",
        "endAt": "9/14",
        "employeeVirtualId": "emp_T7dQ2mYk8rLp4cN1sVx3bH9wAe6fJuKz",
        "checkerVirtualId": "emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a",
        "sender": { "virtualId": "emp_T7dQ2mYk8rLp4cN1sVx3bH9wAe6fJuKz", "name": "张三", "phone": "133****5537" },
        "checker": { "virtualId": "emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a", "name": "李四", "phone": "130****8888" },
        "status": 0,
        "statusStr": "待确认",
        "summaryData": { "complete": 8, "noComplete": 1, "over": 0, "getScore": 12, "noGetScore": 0, "taskScore": 0 },
        "reviewerNumber": 1,
        "executeCount": 8,
        "checkCount": 3,
        "tomorrowWorkCount": 2,
        "createdAt": "2026-09-14T18:12:00+08:00",
        "templateId": "3c9d2f21-8a4b-4c3d-9e2f-1a2b3c4d5e6f",
        "ccVirtualIds": [],
        "operateBtns": [
          { "name": "querenhuibao", "label": "确认汇报", "color": "primary", "icon": "check" }
        ]
      }
    ]
  }
}

汇报列表行字段(全部状态共用)

字段类型说明
idguid汇报 Id,后续详情、确认、申诉、撤回、考核等操作都用该值。
reportTitlestring汇报标题。
reportTypeint汇报类型:1 日汇报、2 周报、3 月报。
reportDatedatetime汇报归属日期。
startAt / endAtstring汇报周期的起止日期(M/d 文本形式)。
employeeVirtualIdstring汇报人在本 API Key 下的 virtualId。
checkerobject审核人的成员对象(含 virtualId、name 与掩码 phone),由 checkerVirtualId 改写而来。
senderobject汇报人的成员对象,含 virtualId、name、掩码 phone、positionName、designName、depName、userTypeStr;头像与登录账号不下发。
statusint汇报状态:-1 被申诉、0 新增、1 已考核、2 已确认。
statusStrstring状态文案。
summaryDataobject任务汇总,周报与月报填充:complete 完成数、noComplete 未完成数、over 超期数、getScore 已获得贡献、noGetScore 未获得贡献、taskScore 扣除贡献,贡献单位均为点。
totalScore / scoreStrdecimal | string周期累计得分与得分文案,绩效考核口径单位为“分”;archived 与 all 状态返回。
reviewerNumberint审核人数量。
executeCount / checkCount / tomorrowWorkCountint执行工作 / 检查工作 / 明日计划的任务数量。
confirmedAtdatetime确认时间;未确认时为零值时间。
checkedAtdatetime考核时间;未考核时为零值时间。
createdAtdatetime汇报创建时间。
serialNumint序号。
scoredecimal汇报得分,绩效考核口径单位为“分”。
workResult / workJudgestring评定结果(优/良/中/差)与工作评定评语。
reviewersobject[]审核人成员对象数组(每项含 virtualId、name 与掩码 phone)。
ccobject[]抄送人成员对象数组(每项含 virtualId、name 与掩码 phone)。
templateIdguid本次汇报使用的模板 Id。
customItemListobject[]自定义内容填写值,archived 与 all 状态返回;字段同详情接口的同名字段。
operateBtnsobject[]当前操作人对该汇报可用的操作按钮:name 英文标识、label 中文文案、color、icon。按钮集合是权限与状态的唯一真源,调用方直接渲染即可。
排序与可见范围:pending 按创建时间升序,其余状态按创建时间或汇报时间倒序;所有状态的可见范围都由当前操作人的汇报查看权限(本人 / 本部门 / 本部门及下级 / 全企业)叠加企业边界决定,无法查看的汇报不会出现在结果中。
GET /api/openplatform/reports/{id}

查询单个汇报详情,包含执行工作、检查工作、明日/下周/下月计划三类任务明细,以及自定义内容、考核附件与申诉驳回信息。只能查看本企业内且当前操作人有权限查看的汇报,否则返回 101,错误信息为“该工作汇报不存在或无权查看”。

{
  "statusCode": 100,
  "msg": "获取成功",
  "data": {
    "id": "5f1c2a3b-4d5e-4f60-8a71-9b2c3d4e5f60",
    "reportTitle": "9 月第 2 周工作汇报",
    "reportType": 2,
    "status": 1,
    "statusStr": "已考核",
    "executeWork": [],
    "checkWork": [],
    "workPlan": [],
    "ccUser": [],
    "rebutInfo": { "reason": "部分任务缺少进展说明", "attachmentUrls": [] },
    "complainInfo": null,
    "judgeAttachment": [],
    "attachmentList": [],
    "customItemList": [
      { "id": "9a1b2c3d-4e5f-4a6b-8c7d-6e5f4a3b2c1d", "name": "本周收获", "type": 2, "value": "完成结算模块联调" }
    ],
    "customScoreList": [],
    "scoreList": [12, 5, 0, 88]
  }
}

详情字段

字段类型说明
共用的列表行字段—详情在汇报列表行字段基础上扩展下述字段。
executeWork / checkWork / workPlanobject[]执行工作 / 检查工作 / 明日(下周、下月)计划的任务明细,元素字段见下方“任务明细行字段”。
ccUserobject[]抄送人列表,元素为员工对象(含 virtualId、name 与掩码 phone)。
rebutInfo / complainInfoobject驳回理由 / 申诉理由,含 reason 与 attachmentUrls;不存在时为 null。
judgeAttachmentobject[]考核时上传的附件,元素含 virtualId、fileName、fileSize、url、thumbnail、isImage。
attachmentListobject[]发送汇报时上传的附件,字段同上。
customItemListobject[]模板自定义内容的填写值:id 模板项 Id、name 标题、type 控件类型(1 单行文本、2 多行文本、3 数字、4 单选、5 多选、6 附件、7 手机号)、value 文本值、data 选项值、attachmentUrls 附件。
customScoreListobject[]自定义评分项:score 分值、isShowReason 是否展示理由、label 档位文案。
scoreListdecimal[]得分明细数组,依次为任务贡献、基础贡献、申请贡献、汇报得分。

任务明细行字段(executeWork / checkWork / workPlan 与汇总明细共用)

字段类型说明
id / reportIdguid明细 Id 与所属汇报 Id。
workTypeint明细类型,与工作台汇总弹窗分类同源。
taskTitlestring任务名称。
taskType / taskStatus / status / statusStrint | string任务类型与状态,以及状态文案。
taskProgress / taskProgressChangeint任务进度与本次汇报的进度变化。
taskScoredecimal任务贡献点,单位点。
assigneeobject任务执行人的成员对象(含 virtualId、name 与掩码 phone)。
creatorobject任务创建人的成员对象(含 virtualId、name 与掩码 phone)。
dueAt / taskClosingTimedatetime任务截止时间。
createdAt / taskAddTimedatetime任务创建时间。
judgeTime / taskJudgeTimedatetime任务考核时间。
overTime / isOverTimedatetime | bool超期时间与是否超期。
priorityint任务优先级。
isFloatbool是否为浮动任务。
scoreobject任务贡献构成:score 本任务贡献、isDecomposed 是否分解、decomposedScore 分解贡献、floatScore 浮动贡献、remainScore 剩余贡献,单位点。
GET /api/openplatform/reports/count

查询当前操作人的汇报统计数量。

{
  "statusCode": 100,
  "msg": "获取成功",
  "data": {
    "send": 12,
    "receive": 3,
    "pending": 0
  }
}

响应字段

字段类型说明
sendint我发送的汇报数。
receiveint我收到的尚未确认的汇报数。
pendingint待操作数量;源站已停用该统计,恒为 0。
GET /api/openplatform/reports/config

查询当前操作人的工作汇报配置,用于渲染考核评分档位与判定模板管理权限。

{
  "statusCode": 100,
  "msg": "获取成功",
  "data": {
    "permission": { "templateManager": true },
    "defaultDayScore": [ { "score": 5, "isShowReason": false, "label": "优秀" } ],
    "defaultWeekScore": [ { "score": 11, "isShowReason": false, "label": "优秀" } ],
    "defaultMonthScore": [ { "score": 22, "isShowReason": false, "label": "优秀" } ],
    "judgeLevelLabels": [ { "id": 1, "name": "优" } ]
  }
}

响应字段

字段类型说明
permission.templateManagerbool当前操作人是否为汇报模板管理员;为 false 时模板增删改会返回“抱歉,您没有权限编辑模板!”。
defaultDayScoreobject[]日汇报默认评分档位,固定 5 档(1/2/3/4/5 分)。
defaultWeekScoreobject[]周报默认评分档位,固定 5 档(3/5/7/9/11 分)。
defaultMonthScoreobject[]月报默认评分档位,固定 5 档(6/10/14/18/22 分)。
judgeLevelLabelsobject[]评定等级标签:id 等级值、name 中文名。
评分档位元素:三组默认评分均由 score(分值)、isShowReason(是否需要填写评语)、label(档位文案)构成;这里返回的 isShowReason 恒为 false,是否需要评语以考核初始化接口为准。
GET /api/openplatform/reports/templates/{templateId}/actions/send/metadata

查询发送汇报初始化数据:拿到指定模板的自定义填写项定义、审核人预览与提交约束,据此构造发送汇报的 setContent。

{
  "statusCode": 100,
  "msg": "获取成功",
  "data": {
    "id": "3c9d2f21-8a4b-4c3d-9e2f-1a2b3c4d5e6f",
    "reportType": 2,
    "reportTitle": "每周例会汇报",
    "isMustSelectTomorrowWork": true,
    "onlySubmitChangeWork": false,
    "customContentList": [
      { "id": "9a1b2c3d-4e5f-4a6b-8c7d-6e5f4a3b2c1d", "name": "本周收获", "type": 2, "required": true, "maxLength": 500, "displayOrder": 1 }
    ],
    "reviewerList": [ { "virtualId": "emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a", "name": "李四", "phone": "130****8888" } ]
  }
}

响应字段与发送请求的对应关系

字段类型说明
idguid模板 Id,直接作为发送汇报的 templateId。
reportTypeint模板的汇报类型:1 日汇报、2 周报、3 月报,决定 taskIds、executeTaskIds、checkTaskIds 的语义。
reportTitlestring汇报标题(展示用)。
isMustSelectTomorrowWorkbool为 true 时发送汇报必须携带 taskIds(明日/下周/下月计划),否则返回“必须选择明日工作计划”。
onlySubmitChangeWorkbool为 true 时需用 executeTaskIds 限定本次提交的执行任务。
customContentListobject[]模板自定义填写项定义,逐项转换为发送请求的 setContent 元素,见下方说明。
reviewerListobject[]审核人预览(只读),元素为标准成员对象 {virtualId, name, phone 掩码}。

自定义填写项字段

字段类型说明
idguid模板项 Id,回填到 setContent[].id,服务端按该值匹配模板项,必须一致。
namestring填写项标题。
typeint控件类型:1 单行文本、2 多行文本、3 数字、4 单选、5 多选、6 附件、7 手机号。
requiredbool是否必填;为 true 且未填时返回“{标题}值不能为空!”。
maxLength / minNumber / maxNumber / lengthLimit / numberLimitint | bool文本长度、数字区间的上限下限与是否启用对应限制。
placeholder / displayOrderstring | int输入提示与展示顺序。
dataListobject[]单选/多选的可选项:text、value。
常见失败:模板不存在返回 101“使用的模板不存在!”、模板已停用返回 102“使用的模板已被暂停使用!”、不在使用范围返回 103“你没有使用该模板的权限!”。
GET /api/openplatform/reports/{id}/actions/assess/metadata

查询汇报考核初始化数据:拿到可选评分档、行为标准列表与已有考核结果,据此构造考核评分请求。汇报不存在时返回 101,错误信息为“未找到该工作汇报”。

{
  "statusCode": 100,
  "msg": "获取成功",
  "data": {
    "reportTitle": "9 月第 2 周工作汇报",
    "status": 0,
    "statusStr": "待考核",
    "score": 0,
    "workJudge": "",
    "customScoreList": [ { "score": 11, "isShowReason": false, "label": "优秀" } ],
    "standardList": [ { "id": "1b2c3d4e-5f60-4a71-8b92-3c4d5e6f7081", "minScore": 1, "maxScore": 5, "isFixed": false } ],
    "relationStandardCC": [],
    "attachmentUrls": []
  }
}

响应字段与考核请求的对应关系

字段类型说明
reportTitlestring汇报标题(展示用)。
status / statusStrint | string汇报状态与文案;仅状态为已考核(1)或被申诉(-1)时才会填充已有考核结果。
score / workJudgedecimal | string已有考核分值与评语(绩效考核口径单位为“分”)。
customScoreListobject[]可选评分档:score 分值、isShowReason 是否需要填写评语(为 true 且 judge 为空时返回“评语不可为空”)、label 档位文案。
standardListobject[]关联的行为标准项,元素含 id、minScore/maxScore 贡献点区间、isFixed 是否固定分值;回填到考核请求的 standardItems,服务端只消费其中的 id 与 score。
relationStandardCCobject[]关联行为标准的抄送人;开放平台的考核请求体没有对应字段,无法回写。
attachmentUrlsobject[]已有的考核附件,元素含 virtualId、fileName、url。
GET /api/openplatform/reports/{id}/summary

查询周报或月报的任务汇总数据:完成、未完成、超期任务数与贡献点增减情况。汇报不存在时返回 101,错误信息为“不存在此汇报”。

参数类型必填说明
reportTypestring否汇报类型,字符串枚举 day(默认)/week/month;传其它值返回 400,错误信息为“reportType 必须为 day、week 或 month”。
{
  "statusCode": 100,
  "msg": "获取成功",
  "data": {
    "name": "9 月第 2 周工作汇报",
    "startAt": "2026-09-08T00:00:00+08:00",
    "endAt": "2026-09-14T23:59:59+08:00",
    "summaryData": { "complete": 8, "noComplete": 1, "over": 0, "getScore": 12, "noGetScore": 0, "taskScore": 0 }
  }
}

响应字段

字段类型说明
namestring汇总标题(“{月}月第{n}周工作汇报”/“{月}月工作汇报”)。
startAt / endAtstring统计区间起止时间。
summaryDataobject任务汇总:complete 完成数、noComplete 未完成数、over 超期数、getScore 已获得贡献、noGetScore 未获得贡献、taskScore 扣除贡献,贡献单位均为点。
GET /api/openplatform/reports/{id}/summaryDetail

分页查询汇总明细任务列表:按汇总分类返回对应的任务行,行结构同汇报详情中的任务明细行。

参数类型必填说明
reportTypestring否汇报类型,字符串枚举 day(默认)/week/month。
summaryTypestring否汇总分类,字符串枚举:completed 已完成任务(默认)、uncompleted 未完成任务、overdue 超期任务、scoreGained 已获得贡献、scoreNotGained 未获得贡献、scoreDeducted 扣除贡献。传其它值返回 400,错误信息为“summaryType 必须为 completed、uncompleted、overdue、scoreGained、scoreNotGained 或 scoreDeducted”。
pageint否页码,默认 1。
pageSizeint否每页条数,默认 20,最大 100。

响应字段

字段类型说明
data.totallong该分类下的任务总数。
data.itemsobject[]任务明细行,字段同汇报详情中的任务明细行字段;贡献类分类(scoreGained、scoreDeducted)用 taskTitle 承载得分说明文案。
POST /api/openplatform/reports

发送工作汇报。请求体结构以发送初始化接口返回为准;入队受理后立即返回 data.id,该 Id 是预分配的稳定汇报 Id,可用于后续详情查询,但异步落库完成前详情可能暂不可读。

字段类型必填说明
templateIdguid是使用的汇报模板 Id,取自发送初始化接口返回的 id。模板不存在返回 102“抱歉,您使用的模板不存在!”,已停用返回 103“抱歉,您使用的模板已停用!”,不在使用范围返回 103“抱歉,您没有使用该模板的权限!”。
setContentobject[]否模板自定义内容填写项,结构以发送初始化返回的 customContentList 为准。元素字段:id 模板项 Id(必须与初始化返回一致)、value 文本值、type 控件类型、attachmentUrls 附件、name 标题。
ccVirtualIdsstring[]否抄送人 virtualId 列表。
attachmentUrlsstring[]否汇报附件地址列表,最多 9 个;地址需先通过附件接口上传获得。
taskIdsguid[]否关联的明日/下周/下月计划任务 Id 列表;模板要求勾选计划时必填,缺失返回 105“必须选择明日工作计划”。
executeTaskIdsguid[]否本次提交的执行任务 Id 列表;模板开启“仅提交有变化的任务”时启用。
checkTaskIdsguid[]否本次提交的检查任务 Id 列表。
{
  "templateId": "3c9d2f21-8a4b-4c3d-9e2f-1a2b3c4d5e6f",
  "setContent": [
    { "id": "9a1b2c3d-4e5f-4a6b-8c7d-6e5f4a3b2c1d", "value": "完成结算模块联调", "type": 2 }
  ],
  "ccVirtualIds": ["emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a"],
  "attachmentUrls": [],
  "taskIds": [],
  "executeTaskIds": [],
  "checkTaskIds": []
                    }
异步结果:返回成功表示消息已入队,不能据此判断汇报已成功发送;请用响应中的 data.id 调用详情接口确认最终状态。服务端不会返回零 Guid。
重复提交保护:同一周期已有汇报(状态不是“新增”)或距离上次创建不足 5 秒时返回 101,错误信息为“您今天已经发送过日报了”“您本周已经发送过周报了”“您本月已经发送过月报了”。
POST /api/openplatform/reports/{id}/actions/confirm

确认工作汇报(审核人对收到的汇报做确认)。重复确认或状态已为已确认时返回 103“该工作汇报已经确认过,不可重复操作”;非汇报发送人 / 审核人的无权操作返回“您无权执行该操作”。

字段类型必填说明
contentstring否确认说明。
{
  "content": "已确认"
}
POST /api/openplatform/reports/{id}/actions/appeal

对考核结果提出申诉。只有汇报发送人本人可以申诉,非本人返回 103“您无权执行该操作”。

字段类型必填说明
reasonstring是申诉原因,最长 1000 字符;为空时返回 400,错误信息为“申诉原因不能为空”。
attachmentUrlsstring[]否申诉附件地址列表,最多 9 个。
{
  "reason": "任务已按期完成,考核未计入超期。",
  "attachmentUrls": []
}
POST /api/openplatform/reports/{id}/actions/rejectWork

驳回工作汇报的申诉。只有该汇报的审核人可以驳回,否则返回 103“您没有权限执行该操作”。

字段类型必填说明
reasonstring是驳回原因,最长 1000 字符;为空时返回 400,错误信息为“驳回原因不能为空”。
attachmentUrlsstring[]否驳回附件地址列表,最多 9 个。
{
  "reason": "任务截止时间晚于考核周期,维持原考核结果。",
  "attachmentUrls": []
}
POST /api/openplatform/reports/{id}/actions/cancel

撤回工作汇报,无请求体。只能撤回本人发送的汇报,否则返回 104“用户只可撤回自己的工作汇报”;状态已为已确认时返回 102“工作汇报已确认,不可撤回”。

POST /api/openplatform/reports/5f1c2a3b-4d5e-4f60-8a71-9b2c3d4e5f60/actions/cancel
POST /api/openplatform/reports/{id}/actions/assess

给工作汇报考核评分。只有该汇报的审核人可以考核,否则返回 104“您没有权限审核该汇报!”;状态已确认时返回 105“该工作汇报已确认,不可考核”。

字段类型必填说明
scoredecimal是考核分值,绩效考核口径单位为“分”。
judgestring否考核评语,最长 1000 字符;所选评分档要求填写理由时不可为空,否则返回 102“评语不可为空”。
standardItemsobject[]否关联的行为标准项,结构以考核初始化返回的 standardList 为准;服务端只消费 id 与 score。校验失败会返回“选择的第N项行为标准不存在”“选择的第N项行为标准未发布”“选择的第N项行为标准贡献点不能大于X”“不能小于X”。
attachmentUrlsstring[]否考核附件地址列表,最多 9 个。
{
  "score": 88,
  "judge": "计划明确,进度记录完整。",
  "standardItems": [
    { "id": "1b2c3d4e-5f60-4a71-8b92-3c4d5e6f7081", "score": 3 }
  ],
  "attachmentUrls": []
}
评分档位:可选分值与是否需要评语以考核初始化接口的 customScoreList 与配置接口的三组默认评分档为准。
POST /api/openplatform/reports/{id}/actions/editTip

修改汇报的原因说明与附件。用于两类场景:审核人修改“汇报考核不通过”的驳回理由,或汇报人对“考核不通过”的申诉补充材料;场景由 scenario 指定,权限由服务端按场景校验。

字段类型必填说明
scenariostring否修改场景,字符串枚举 rejected(默认,汇报考核不通过的原因说明,要求当前操作人是该汇报的审核人)/appealed(考核不通过申诉的补充说明,要求当前操作人是该汇报的发送人)。传其它值返回 400,错误信息为“scenario 必须为 rejected 或 appealed”。
contentstring否原因说明内容。
attachmentUrlsstring[]否原因说明附件地址列表;地址需先通过附件接口上传获得。
{
  "scenario": "rejected",
  "content": "已补充说明附件。",
  "attachmentUrls": [
    "https://cdn.example.com/op/20260914/reason.png"
  ]
}
权限口径:场景与操作人不匹配时返回 103,错误信息为“您无权执行该操作”;汇报不存在时返回 101。该接口是同步生效,不走队列。
GET /api/openplatform/reports/templates

分页查询汇报模板列表,按启用状态、最后修改时间升序。同一路径在携带 using=true 时返回我可使用的模板列表(不分页,data 直接是数组)。

参数类型必填说明
pageint否页码,默认 1;仅在不带 using 时分页生效。
pageSizeint否每页条数,默认 20,最大 100。
{
  "statusCode": 100,
  "msg": "获取成功",
  "data": {
    "total": 4,
    "page": 1,
    "pageSize": 20,
    "items": [
      {
        "id": "3c9d2f21-8a4b-4c3d-9e2f-1a2b3c4d5e6f",
        "name": "每周例会汇报",
        "reportType": 2,
        "reportTypeStr": "周报",
        "enable": true,
        "isMustSelectTomorrowWork": true,
        "onlySubmitChangeWork": false,
        "useNumber": 12,
        "userInfo": "全体成员",
        "reviewerInfo": "部门主管",
        "createdAt": "2026-08-01T10:00:00+08:00",
        "updatedAt": "2026-09-10T09:30:00+08:00",
        "customContentList": []
      }
    ]
  }
}

模板列表字段

字段类型说明
idguid模板 Id。
namestring模板名称,企业内不可重名,最长 20 字符。
reportType / reportTypeStrint | string模板汇报类型(1 日汇报、2 周报、3 月报)与中文文案。
enablebool是否启用;停用的模板不能被发送汇报引用。
isMustSelectTomorrowWork / onlySubmitChangeWorkbool是否必须勾选明日(下周、下月)计划 / 是否只提交有变化的任务。
useNumberint模板累计被使用次数。
userInfo / reviewerInfostring使用范围与审核人的人类可读描述(如“全体成员”“部门主管”)。
createdAt / updatedAtdatetime创建时间与最后修改时间。
customContentListobject[]模板自定义填写项定义,字段同发送初始化接口的同名字段。
useTypeint仅“我可使用的模板”返回:0 直接指定我、1 指定我的角色、2 我所在部门、3 上级部门、4 全体。
GET /api/openplatform/reports/templates/{id}

查询模板详情,返回结构与模板新增、修改的请求体同构,可直接读取后修改再提交。模板不存在时返回“抱歉,查看的模板不存在!”。

响应字段

字段类型说明
idguid模板 Id。
namestring模板名称,最长 20 字符,企业内不可重名。
reportTypestring模板汇报类型:day 日汇报、week 周报、month 月报。
isMustSelectTomorrowWork / onlySubmitChangeWorkbool是否必须勾选明日计划 / 是否只提交有变化的任务。
customContentListobject[]自定义填写项定义,标题字段为 name。
customScoreListobject[]自定义评分项,必须恰好 5 项,否则提交时返回“请完善贡献评定!”。
reviewer / userobject审核人与参与人配置:personType 字符串枚举(department/role/person/directSuperior/departmentManager/previousNodeManager)+ persons 人员列表(成员项为 {virtualId, name, phone 掩码},部门/角色项为 {id, name})。返回值可直接回填新增与修改请求。
remarkstring模板说明,最长 500 字符。
POST /api/openplatform/reports/templates

新增汇报模板,需要模板管理员权限。创建成功时响应 data.id 返回新模板 Id,供查询和后续维护使用;下游未返回有效 Id 时创建按失败处理。修改模板用 PATCH /api/openplatform/reports/templates/{id},删除用 DELETE 同一路径,启用与停用用 POST .../actions/enable 与 .../actions/disable;这些写操作都是同步生效,不走队列。

字段类型必填说明
namestring是模板名称,最长 20 字符;为空返回 400“模板名称不能为空”,重名返回“已存在同名的模板!”。
reportTypestring是字符串枚举 day/week/month;传其它值返回 400,错误信息为“reportType 必须为 day、week 或 month”。
isMustSelectTomorrowWorkbool否是否必须勾选明日(下周、下月)工作计划。
onlySubmitChangeWorkbool否是否只允许提交有变化的任务。
customContentListobject[]否自定义填写项,元素要求 name 非空且 type 有效(1 单行 / 2 多行 / 3 数字 / 4 单选 / 5 多选,单选与多选必须提供 data 选项),否则返回“第N项标题不能为空!”“第N项类型错误!”“第N项数据不能为空!”。
customScoreListobject[]是贡献评定,必须恰好 5 项(不足或超出返回 400“template.customScoreList 必填且必须正好 5 项…”);每项 label 非空且不超过 20 字符、score 不小于 0、isShowReason 是否展示评分理由。
remarkstring否模板说明,最长 500 字符。
reviewerobject是审核人配置:{"personType": "…", "persons": […]}。personType 字符串枚举 department/role/person/directSuperior/departmentManager/previousNodeManager;person 类型的 persons 项传 {virtualId, name}(成员虚拟标识,网关解码),department/role/departmentManager 传 {id, name}(部门或角色 Id),directSuperior/previousNodeManager 无需 persons。缺失返回 400“template.reviewer 必填…”。
userobject否模板使用人配置,结构同 reviewer;不传默认全体成员可用。
{
  "name": "每周例会汇报",
  "reportType": "week",
  "isMustSelectTomorrowWork": true,
  "onlySubmitChangeWork": false,
  "customContentList": [
    { "name": "本周收获", "type": 2, "required": true, "maxLength": 500 }
  ],
  "customScoreList": [
    { "score": 3, "label": "待改进", "isShowReason": false },
    { "score": 5, "label": "合格", "isShowReason": false },
    { "score": 7, "label": "良好", "isShowReason": false },
    { "score": 9, "label": "优秀", "isShowReason": false },
    { "score": 11, "label": "卓越", "isShowReason": false }
  ],
  "reviewer": {
    "personType": "person",
    "persons": [ { "virtualId": "emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a", "name": "李四" } ]
  },
  "remark": "每周五 18:00 前提交"
}
权限与存在性:非模板管理员返回“抱歉,您没有权限编辑模板!”;修改不存在的模板返回“编辑的模板不存在!”;删除不存在的模板返回“抱歉,删除的模板不存在!”,无权限删除返回“抱歉,您没有权限删除!”。
MCP 工具 report_query

工作汇报查询工具,需要 reports.read 权限,覆盖上述全部 GET 查询能力。queryType 取值:list 汇报列表(分页,用 status 区分待操作/我收到/我发送/已归档/全部)、detail 汇报详情、count 汇报统计数量、config 工作汇报配置、sendInit 发送初始化、assessInit 考核初始化、summaryData 周报月报汇总数据、summaryDetail 汇总明细(分页)、templates 模板列表(分页)、templateDetail 模板详情。

{
  "queryType": "list",
  "status": "sent",
  "reportType": "week",
  "page": 1,
  "pageSize": 20
}
参数映射:status 与 REST 的 status 同枚举(pending/received/sent/archived/all,仅 list 使用,默认 pending);汇报列表与详情用 reportId 对应 REST 的 {id};发送初始化与模板详情用 templateId;reportType 与 REST 同枚举(all/day/week/month);departmentId 对应 REST 的 departmentId;summaryType 仅 summaryDetail 使用。缺失目标 Id 时分别提示“查询类型 detail 必须提供 reportId”“查询类型 sendInit 必须提供 templateId”。
调用建议:本工具一次返回完整汇报正文与任务明细,属于企业内部敏感数据,输出给用户前请确认接收方可查看范围,不要跨企业或跨部门转发。
MCP 工具 report_action

工作汇报写操作工具,需要 reports.write 权限。action 取值:send 发送汇报、confirm 确认汇报、appeal 申诉汇报、rejectWork 驳回申诉、cancel 撤回汇报、assess 考核评分、editTip 修改原因附件说明、templateAdd 新增模板、templateEdit 修改模板、templateDelete 删除模板、templateEnable 启用模板、templateDisable 停用模板。send 与 templateAdd 成功返回 id;汇报 Id 在入队时预分配,可立刻查询详情。未返回有效 Id 时按失败处理,禁止使用零 Guid 占位符。

{
  "action": "assess",
  "reportId": "5f1c2a3b-4d5e-4f60-8a71-9b2c3d4e5f60",
  "score": 88,
  "judge": "计划明确,进度记录完整。"
}
参数说明:reportId 用于 confirm/appeal/rejectWork/cancel/assess/editTip;templateId 用于 send/templateEdit/templateDelete/templateEnable/templateDisable;content 用于 confirm/editTip;reason 用于 appeal/rejectWork;scenario 用于 editTip(rejected 默认 / appealed),attachmentUrls 用于 appeal/rejectWork/assess/editTip;setContent、ccVirtualIds 用于 send;模板维护整体放在 template 对象中(全量提交,结构以 templateDetail 返回为准):必填 name、reportType(day/week/month)、customScoreList(正好 5 项贡献评定)与 reviewer(personType 字符串枚举 + persons,成员项用 virtualId 回填),可选 customContentList、user、remark;缺项时返回带字段路径的 400 提示。
调用约束:发送、确认、考核评分等会改变他人可见的汇报与考核结果,调用前必须把汇报正文、考核分值与评语完整展示给用户并取得明确确认;发送回执代表已受理且返回稳定汇报 Id,最终发送结果仍必须通过汇报详情确认。