一、通用约定
1.1 基础地址
| 环境 |
Base URL |
| 生产示例 |
https://cert.example.com |
| 本地开发 |
http://127.0.0.1:8000 |
- 管理端接口前缀:
/api/admin/
- 登录/公开接口前缀:
/api/
- Agent 开放接口前缀:
/api/agent/
- 客户只读端前缀:
/api/client/
完整示例:GET https://cert.example.com/api/admin/certificate?page=1&limit=15
1.2 请求格式
| 场景 |
格式 |
| GET 查询 |
Query String |
| POST 新增/编辑 |
application/json 或 application/x-www-form-urlencoded |
| 文件上传 |
multipart/form-data |
| 批量操作 |
JSON,数组字段如 ids: [1,2,3] |
后端同时兼容 JSON 与表单。批量接口的数组参数通常写作 ids[] 或 ids,以实际页面请求为准。
1.3 响应结构
普通响应
{
"code": 0,
"msg": "ok",
"data": {}
}
分页响应
{
"code": 0,
"msg": "ok",
"data": {
"list": [],
"total": 0
}
}
错误响应
{
"code": 400,
"msg": "必填项缺失:cert_no",
"data": {}
}
判断规则:code === 0 为成功,其他均为失败。不要只判断 HTTP 200,业务错误通常也返回 HTTP 200。
1.4 鉴权
系统支持两种携带方式,任选其一:
方式 A:HttpOnly Cookie(浏览器默认)
登录成功后服务端下发 HttpOnly Cookie,浏览器自动携带。前端请求需设置:
withCredentials: true
方式 B:Bearer Token(脚本/服务端调用)
登录接口返回 data.token,后续请求携带:
Authorization: Bearer <token>
Token 默认有效期 3 小时(可在「系统管理 → 系统信息设置」调整),保存在 Redis。退出登录、改密、被管理员下线后立即失效。
code=401 表示未登录或登录已过期,需要重新登录。
1.5 权限
| 层级 |
说明 |
| 登录态 |
未登录返回 401 |
| 菜单权限 |
无菜单权限的页面路由不可访问 |
| 功能权限 |
无按钮权限的写接口返回 403 |
| 数据范围 |
全部 / 本部门及下属 / 本部门 / 本人;客户账号按关联企业隔离 |
| 客户角色 |
company 角色只能读本企业数据,写接口一律 403 |
超级管理员 admin 不受菜单、功能权限和数据范围限制。
1.6 分页
| 参数 |
默认 |
范围 |
说明 |
page |
1 |
≥ 1 |
页码 |
limit |
15 |
1–500 |
每页条数,超过 500 按 500 处理 |
示例:
GET /api/admin/certificate?page=2&limit=50
1.7 时间与金额
| 类型 |
格式 |
示例 |
| 日期 |
YYYY-MM-DD |
2026-11-10 |
| 日期时间 |
YYYY-MM-DD HH:mm:ss |
2026-11-10 09:30:00 |
| 金额 |
数字,单位元,最多两位小数 |
1200.00 |
| 布尔 |
0 / 1 |
1 |
日期字段留空请传 null 或不传,不要传空字符串 "",否则可能触发数据库严格模式错误。
1.8 错误码
| code |
HTTP |
含义 |
处理建议 |
| 0 |
200 |
成功 |
— |
| 400 |
200 |
参数错误 / 业务校验失败 |
按 msg 修正参数 |
| 401 |
200 |
未登录 / 登录过期 |
重新登录 |
| 403 |
200 |
无权限 / 数据范围外 |
联系管理员分配权限 |
| 404 |
200 |
资源不存在 |
检查 ID |
| 409 |
200 |
冲突(重复、证书占用等) |
按 data 提示确认后强制保存 |
| 422 |
200 |
文件/附件校验失败 |
检查类型、大小 |
| 500 |
200/500 |
系统错误 |
查看服务端日志 |
| 503 |
503 |
Redis 不可用 |
按提示检查 Redis |
1.9 文件上传
POST /api/admin/upload
Content-Type: multipart/form-data
返回示例:
{
"code": 0,
"msg": "ok",
"data": {
"path": "uploads/2026/11/xxxx.pdf",
"name": "证书扫描件.pdf",
"size": 123456
}
}
上传有扩展名白名单、真实 MIME 校验、随机文件名和大小限制。生产环境上限由 upload_max_filesize、post_max_size、Nginx client_max_body_size 共同决定。
1.10 下载
| 类型 |
方式 |
| 模板下载 |
GET .../template,返回 Excel 流 |
| 数据导出 |
GET .../export,返回 Excel 流 |
| 附件下载 |
GET /api/attach/download?...,返回文件流 |
导出文件名使用 RFC 5987 编码,中文名在浏览器中正常显示。
二、认证与个人中心
2.1 接口列表
| 方法 |
路径 |
说明 |
| GET |
/api/captcha |
获取登录图形验证码 |
| POST |
/api/login |
账号密码登录 |
| POST |
/api/logout |
退出登录 |
| GET |
/api/profile/info |
当前用户信息、菜单、权限 |
| POST |
/api/profile/change-password |
修改密码 |
| GET |
/api/profile/devices |
我的登录设备 |
| POST |
/api/profile/devices/revoke |
下线指定设备 |
| POST |
/api/profile/devices/revoke-all |
下线其他全部设备 |
| GET |
/api/totp/challenge |
查询二次验证会话 |
| POST |
/api/totp/verify |
提交二次验证码 |
| GET |
/api/system-info |
公开的品牌与系统信息 |
2.2 获取验证码
GET /api/captcha
返回:
{
"code": 0,
"msg": "ok",
"data": {
"key": "captcha_xxx",
"img": "data:image/png;base64,..."
}
}
验证码默认 4 位,5 分钟有效。登录时把 key 作为 captchaKey,用户输入作为 captchaCode。
2.3 登录
POST /api/login
Content-Type: application/json
| 参数 |
类型 |
必填 |
说明 |
username |
string |
是 |
账号 |
password |
string |
是 |
密码 |
captchaKey |
string |
是 |
验证码 key |
captchaCode |
string |
是 |
验证码 |
device_token |
string |
否 |
受信任设备令牌 |
device_id |
string |
否 |
设备标识 |
成功返回:
{
"code": 0,
"msg": "登录成功",
"data": {
"token": "xxxxx",
"expires_in": 10800,
"user": {
"id": 1,
"username": "admin",
"real_name": "系统管理员",
"role_code": "admin"
}
}
}
需要二次验证时,返回 need_totp 与 challenge(不返回 token):
{
"code": 0,
"msg": "ok",
"data": {
"need_totp": true,
"challenge": "totp_xxx",
"totp_bound": false,
"force": true
}
}
连续输错密码 5 次会锁定 15 分钟(可在 backend/config/security.php 调整)。
2.4 二次验证
查询会话
GET /api/totp/challenge?challenge=totp_xxx&device_token=xxx&device_id=xxx
提交验证码
POST /api/totp/verify
| 参数 |
类型 |
必填 |
说明 |
challenge |
string |
是 |
登录返回的会话 |
code |
string |
是 |
6 位动态码 |
trust_device |
int |
否 |
1 = 信任本设备 3 天 |
device_id |
string |
否 |
设备标识 |
支持腾讯身份验证器、Google Authenticator 等标准 TOTP(SHA1 / 6 位 / 30 秒)。
2.5 当前用户信息
GET /api/profile/info
返回用户、角色、菜单树、功能权限码、数据范围、可管企业等。前端据此渲染侧边栏和按钮。
2.6 修改密码
POST /api/profile/change-password
| 参数 |
说明 |
old_password |
原密码 |
new_password |
新密码,8–32 位,含字母和数字 |
修改成功后当前登录态失效,需要重新登录。
2.7 登录设备
| 方法 |
路径 |
参数 |
说明 |
| GET |
/api/profile/devices |
— |
当前账号的在线设备与信任设备 |
| POST |
/api/profile/devices/revoke |
type=session/trust,id |
下线/移除一个设备 |
| POST |
/api/profile/devices/revoke-all |
type=all |
下线其他全部 |
三、工作台、报表与查询
| 方法 |
路径 |
说明 |
| GET |
/api/admin/dashboard/stat |
首页总览:待办风险、资源调度、业务底数、近期到期、近期提醒 |
| GET |
/api/admin/report/summary |
统计报表汇总 KPI |
| GET |
/api/admin/report/overview |
统计报表明细与图表数据 |
| GET |
/api/admin/search |
一键查询中心列表 |
| GET |
/api/admin/search/detail |
查询结果详情(人员/企业/证书聚合) |
3.1 工作台
GET /api/admin/dashboard/stat
常用参数:
| 参数 |
说明 |
company_id |
按企业过滤 |
days |
近期到期窗口,默认 30 |
返回通常包含:
todo:8 类待办与风险数量;
resource:证书利用率、闲置、借调中;
base:企业数、人员数、证书数、合同数;
expiring:近期到期证书列表;
alerts:未读提醒列表。
3.2 统计报表
GET /api/admin/report/summary?period=6&company_id=0
GET /api/admin/report/overview?period=6&company_id=0
| 参数 |
说明 |
period |
统计周期:3 / 6 / 12 / 24 个月 |
company_id |
0 或空表示全部企业 |
返回覆盖:到期趋势、证书状态结构、费用收支、结算进度、企业排行、借调分布、证书类型分布、企业明细。
3.3 一键查询中心
GET /api/admin/search?keyword=张三&scope=all&page=1&limit=15
| 参数 |
说明 |
keyword |
关键字 |
scope |
all / certificate / company |
match |
like 模糊 / exact 精确 |
filters |
多条件筛选(字段、操作符、值) |
logic |
and / or |
详情:
GET /api/admin/search/detail?type=staff&id=1
type 支持 staff / company / certificate。
四、客户企业
4.1 接口列表
| 方法 |
路径 |
说明 |
| GET |
/api/admin/company |
企业列表 |
| GET |
/api/admin/company/detail |
企业详情(含资质、借调、合同、跟进、附件) |
| GET |
/api/admin/company/options |
企业下拉选项 |
| POST |
/api/admin/company/save |
新增/编辑企业 |
| POST |
/api/admin/company/status |
启用/停用 |
| POST |
/api/admin/company/delete |
删除(进回收站) |
| POST |
/api/admin/company/batch-delete |
批量删除 |
| POST |
/api/admin/company/attach-save |
保存企业附件 |
| GET |
/api/admin/company/template |
下载导入模板 |
| GET |
/api/admin/company/export |
导出企业 |
| POST |
/api/admin/company/complete-basic |
从河南平台补全企业基本信息 |
| GET |
/api/admin/company/qualifications |
企业资质/安许台账 |
| POST |
/api/admin/company/fetch-qualification |
采集资质(含验证码流程) |
| POST |
/api/admin/company/qualification-captcha |
获取资质验证码图片 |
| POST |
/api/admin/company/qualification-captcha-refresh |
换一张验证码 |
| POST |
/api/admin/company/fetch-qualification-detail |
提交人工识别的验证码并读取明细 |
| POST |
/api/admin/company/collect-xkgs |
采集承装修试许可证 |
| POST |
/api/admin/company/import-qualification |
导入资质台账 |
| POST |
/api/admin/company/delete-qualification |
删除资质 |
4.2 列表参数
GET /api/admin/company?page=1&limit=15&company_name=建筑&status=1&owner_user_id=0&mine=0
| 参数 |
说明 |
company_name |
企业名称模糊查询 |
status |
1 启用 / 0 停用 |
owner_user_id |
负责人筛选 |
mine |
1 = 只看我负责的 |
industry |
行业 |
region |
注册属地 |
4.3 保存企业
POST /api/admin/company/save
| 字段 |
类型 |
必填 |
说明 |
id |
int |
否 |
有值为编辑 |
company_name |
string |
是 |
企业全称 |
short_name |
string |
否 |
简称 |
credit_code |
string |
否 |
统一社会信用代码 |
legal_person |
string |
否 |
法定代表人 |
region_path |
string |
否 |
注册属地,如 河南省/郑州市 |
registered_capital |
string |
否 |
注册资本 |
contact |
string |
否 |
联系人 |
contact_phone |
string |
否 |
联系电话 |
address |
string |
否 |
地址 |
industry |
string |
否 |
所属行业 |
company_scale |
string |
否 |
企业规模 |
remark |
string |
否 |
备注 |
status |
int |
否 |
1 启用 / 0 停用 |
新增时负责人自动为当前用户;变更负责人请调用 CRM 移交接口,不要直接改。
4.4 平台补全
POST /api/admin/company/complete-basic
| 参数 |
说明 |
ids |
企业 ID 数组 |
overwrite |
1 = 冲突时覆盖,0 = 只补空字段 |
平台单次请求有最小间隔与 10 分钟缓存,批量时逐家返回结果。
4.5 资质采集流程
POST /api/admin/company/fetch-qualification:返回是否需要验证码;
- 如需要,
POST /api/admin/company/qualification-captcha 获取图片;
- 人工识别后,
POST /api/admin/company/fetch-qualification-detail 提交验证码;
- 识别错误可
POST /api/admin/company/qualification-captcha-refresh 换图;
- 确认后
POST /api/admin/company/import-qualification 入库。
系统不内置 OCR、不绕过平台校验,验证码由业务人员人工识别。
五、企业证书(资质 / 安许)
| 方法 |
路径 |
说明 |
| GET |
/api/admin/company-cert |
列表 |
| GET |
/api/admin/company-cert/detail |
详情 |
| GET |
/api/admin/company-cert/stat |
统计卡片 |
| POST |
/api/admin/company-cert/save |
新增/编辑 |
| POST |
/api/admin/company-cert/delete |
删除 |
| POST |
/api/admin/company-cert/attach-save |
保存附件 |
| GET |
/api/admin/company-cert/template |
导入模板 |
| GET |
/api/admin/company-cert/export |
导出 |
| POST |
/api/admin/company-cert/import |
导入 |
| POST |
/api/admin/company-cert/collect |
从河南平台采集安许/公开信息 |
| POST |
/api/admin/company-cert/collect-captcha |
获取验证码 |
| POST |
/api/admin/company-cert/collect-captcha-refresh |
换验证码 |
| POST |
/api/admin/company-cert/collect-detail |
提交验证码读取资质明细 |
| POST |
/api/admin/company-cert/collect-xkgs |
采集承装修试许可证 |
5.1 列表参数
| 参数 |
说明 |
company_id |
企业 ID |
cert_type |
safety 安许 / qualification 资质 |
keyword |
名称或编号 |
expire_status |
30 30 天内到期 / expired 已过期 / normal 正常 / long 长期 |
5.2 保存
| 字段 |
必填 |
说明 |
company_id |
是 |
所属企业 |
cert_type |
是 |
safety / qualification |
cert_name |
是 |
证书名称 |
cert_no |
否 |
证书编号(与名称至少填一项) |
level |
否 |
等级 |
scope |
否 |
许可范围 / 资质范围 |
issue_org |
否 |
发证机关 |
issue_date |
否 |
发证日期 |
expire_date |
否 |
有效期至,留空表示长期 |
remark |
否 |
备注 |
attachments |
否 |
附件数组 |
六、人员档案
6.1 接口列表
| 方法 |
路径 |
说明 |
| GET |
/api/admin/staff |
人员列表 |
| GET |
/api/admin/staff/detail |
人员详情 |
| GET |
/api/admin/staff/read |
只读详情(轻量) |
| GET |
/api/admin/staff/options |
人员下拉选项 |
| GET |
/api/admin/staff/profile |
人员全景档案(聚合证书、借调、合同、费用、冲突) |
| GET |
/api/admin/staff/utilization |
证件利用率 |
| GET |
/api/admin/staff/idle-alert |
长期闲置预警 |
| POST |
/api/admin/staff/save |
新增/编辑 |
| POST |
/api/admin/staff/delete |
删除 |
| POST |
/api/admin/staff/batch-delete |
批量删除 |
| POST |
/api/admin/staff/attach-save |
保存附件 |
| POST |
/api/admin/staff/rel-save |
保存人员-企业关联 |
| POST |
/api/admin/staff/rel-delete |
删除人员-企业关联 |
| GET |
/api/admin/staff/duplicates |
重复人员检测 |
| POST |
/api/admin/staff/merge |
合并重复人员 |
| POST |
/api/admin/staff/ocr-idcard |
身份证 OCR |
| POST |
/api/admin/staff/ocr-diploma |
毕业证 OCR |
| GET |
/api/admin/staff/template |
导入模板 |
| GET |
/api/admin/staff/export |
导出 |
6.2 列表参数
| 参数 |
说明 |
keyword |
姓名 / 电话 / 身份证 |
status |
1 在职 / 0 离职 |
social_status |
0 未知 / 1 在缴 / 2 停缴 / 3 未缴纳 |
secondment_status |
1 借调中 / 0 未借调 |
owner_user_id |
负责人 |
mine |
1 = 只看我负责的 |
company_id |
关联企业 |
6.3 保存人员
| 字段 |
必填 |
说明 |
id |
否 |
有值为编辑 |
staff_name |
是 |
姓名 |
id_card |
是 |
身份证号 |
phone |
否 |
电话 |
gender |
否 |
性别 |
nation |
否 |
民族 |
birth_date |
否 |
出生日期 |
address |
否 |
身份证住址 |
email |
否 |
邮箱 |
education |
否 |
学历 |
education_type |
否 |
全日制 / 非全日制 |
graduate_school |
否 |
毕业学校 |
graduate_cert_no |
否 |
毕业证编号 |
graduate_date |
否 |
毕业日期 |
social_status |
否 |
社保状态 |
social_company |
否 |
社保单位 |
social_start_month |
否 |
社保起缴月份 |
status |
否 |
1 在职 / 0 离职 |
remark |
否 |
备注 |
custom |
否 |
自定义字段对象 |
OCR 接口接收图片文件或图片地址,返回识别出的姓名、身份证号、住址、毕业学校、毕业证编号、毕业日期等,供表单回填。
6.4 全景档案
GET /api/admin/staff/profile?id=1
返回:
- 基本信息、证件利用率;
certificates:名下证书与占用状态;
social:社保信息;
projects:借调记录;
follows:本人 + 名下证书的跟进;
fees:合同与费用;
conflicts:合规与冲突;
attachments:附件。
七、证照台账
7.1 接口列表
| 方法 |
路径 |
说明 |
| GET |
/api/admin/certificate |
证书列表 |
| GET |
/api/admin/certificate/detail |
证书详情 |
| GET |
/api/admin/certificate/read |
只读详情 |
| POST |
/api/admin/certificate/save |
新增/编辑 |
| POST |
/api/admin/certificate/status |
变更证书状态 |
| POST |
/api/admin/certificate/delete |
删除 |
| POST |
/api/admin/certificate/batch-delete |
批量删除 |
| POST |
/api/admin/certificate/attach-save |
保存扫描件 |
| POST |
/api/admin/certificate/attach-rename |
附件改名 |
| POST |
/api/admin/certificate/person-collect |
一键采集人员证书 |
| POST |
/api/admin/certificate/person-collect-captcha-refresh |
换采集验证码 |
| GET |
/api/admin/certificate/template |
导入模板 |
| GET |
/api/admin/certificate/export |
导出 |
7.2 列表参数
| 参数 |
说明 |
keyword |
证书专业 / 类别 |
quick_kw |
企业名 / 姓名 / 身份证 / 手机号 / 证书编号 |
company_id |
当前借调企业 |
staff_id |
持证人员 |
staff_name |
持证人员姓名 |
cert_name |
证书专业 |
cert_type |
证书类型 |
category |
类别(兼容旧筛选) |
status |
0 已过期 / 1 正常 / 2 挂失 / 3 注销 |
social_status |
社保状态 |
only_free |
1 = 只看未借调 |
expire_soon |
N 天内到期 |
urgent |
1 = 只看紧急 |
owner_user_id / mine |
负责人筛选 |
sort_by |
expire_date / cert_status / cert_fee |
sort_order |
asc / desc |
7.3 保存证书
POST /api/admin/certificate/save
| 字段 |
必填 |
说明 |
id |
否 |
有值为编辑 |
staff_id |
是 |
持证人员 |
cert_name |
是 |
证书专业 |
cert_no |
新增必填 |
证书编号 |
cert_type |
否 |
证书类型(一级) |
category |
否 |
类别,后端会与 cert_type 同步 |
issue_date |
否 |
发证日期 |
expire_date |
否 |
到期日期(与 long_term 二选一) |
long_term |
否 |
1 = 长期有效,expire_date 置空 |
issue_org |
否 |
发证机关 |
register_start_date |
否 |
注册起始 |
register_end_date |
否 |
注册截止 |
cert_status |
否 |
证书状态 |
social_status |
否 |
社保状态 |
social_company |
否 |
社保单位 |
social_start_month |
否 |
社保起缴月份 |
priority |
否 |
优先级 |
enable_alert |
否 |
是否开启提醒 |
alert_rules |
否 |
提醒节点数组 |
custom_alert_days |
否 |
自定义提前天数 |
cert_fee / fee_remark |
否 |
证书费用与备注 |
attachments |
否 |
扫描件数组 |
custom |
否 |
自定义字段 |
force |
否 |
1 = 重复时强制保存 |
重复校验
新增时按「同人员 + 同证书编号」和「同人员 + 同证书专业」查重。命中返回 409:
{
"code": 409,
"msg": "证书编号与该人员名下已有证书重复,请确认是否强制保存",
"data": {
"duplicate_cert": {
"id": 12,
"cert_name": "建筑工程",
"cert_no": "豫********1234",
"expire_date": "2027-06-30",
"fields": ["cert_no"]
}
}
}
前端展示确认框,用户确认后带 force=1 重新提交。
7.4 变更状态
POST /api/admin/certificate/status
| 参数 |
说明 |
id |
证书 ID |
cert_status |
0 已过期 / 1 正常 / 2 挂失 / 3 注销 |
remark |
变更原因(建议填写) |
会写入状态变更日志与操作日志。
7.5 一键采集
POST /api/admin/certificate/person-collect
| 参数 |
说明 |
staff_id |
人员 ID |
id_card |
身份证号(可按身份证查) |
captcha |
平台验证码(如需要) |
采集受平台频控,失败会返回可读原因;验证码由人工识别。
八、证书延续与状态日志
| 方法 |
路径 |
说明 |
| GET |
/api/admin/cert-renewal |
延续记录列表 |
| POST |
/api/admin/cert-renewal/save |
新增延续(续期 / 换证) |
| GET |
/api/admin/cert-status-log |
状态变更日志 |
8.1 新增延续
| 字段 |
必填 |
说明 |
cert_id |
是 |
证书 |
old_expire_date |
否 |
原到期日(可由后端带出) |
new_expire_date |
是 |
新到期日 |
handle_date |
否 |
办理日期 |
handler |
否 |
办理人 |
remark |
否 |
备注 |
保存后会回写证书的新到期日;如果原状态为「已过期」,会恢复为「正常」,并写状态变更日志。
8.2 状态变更日志
GET /api/admin/cert-status-log?biz_type=certificate&page=1&limit=15
| 参数 |
说明 |
biz_type |
certificate 证书 / secondment 借调 |
cert_id |
证书 ID |
secondment_id |
借调 ID |
start_date / end_date |
时间范围 |
九、证书借调
9.1 接口列表
| 方法 |
路径 |
说明 |
| GET |
/api/admin/secondment |
借调列表 |
| GET |
/api/admin/secondment/detail |
借调详情 |
| GET |
/api/admin/secondment/stat |
统计卡片 |
| GET |
/api/admin/secondment/free-certs |
可借调的空闲证书 |
| POST |
/api/admin/secondment/save |
新增/编辑 |
| POST |
/api/admin/secondment/return |
归还 |
| POST |
/api/admin/secondment/renew |
续借 |
| POST |
/api/admin/secondment/delete |
删除 |
| POST |
/api/admin/secondment/batch-delete |
批量删除 |
9.2 列表参数
| 参数 |
说明 |
company_id |
借调企业 |
status |
1 借调中 / 0 已归还 / 2 已到期 |
direction |
1 借出 / 2 借入 |
keyword |
证书 / 人员 / 备注 |
expire_soon |
N 天内到期 |
no_end |
1 = 无期限 |
9.3 保存借调
| 字段 |
必填 |
说明 |
id |
否 |
有值为编辑 |
cert_id |
是 |
借调证书 |
company_id |
是 |
对方企业 |
direction |
否 |
1 借出(本公司→客户)/ 2 借入(人才→本公司) |
start_date |
否 |
借调开始 |
end_date |
否 |
借调到期 |
long_term |
否 |
1 = 长期,end_date 置空 |
fee_amount |
否 |
借调费用 |
fee_period |
否 |
计费周期 |
fee_status |
否 |
0 未结算 / 1 已结算 |
status |
否 |
1 借调中 / 0 已归还 / 2 已到期 |
remark |
否 |
备注 |
with_contract |
否 |
1 = 同时生成服务合同 |
custom |
否 |
自定义字段 |
冲突返回
保存前会做冲突检测。默认「证书占用」为阻断级,返回:
{
"code": 409,
"msg": "检测到阻断级冲突:证书已被占用",
"data": {
"conflicts": [
{
"type": "occupy",
"level": 2,
"title": "证书已被占用",
"detail": "该证书已被 XX 建筑有限公司占用,区间 2026-01-01 ~ 2026-12-31"
}
]
}
}
用户确认后带 force=1 可强制保存。
9.4 归还
POST /api/admin/secondment/return
| 参数 |
说明 |
id |
借调 ID |
return_date |
归还日期 |
remark |
备注 |
9.5 续借
POST /api/admin/secondment/renew
| 参数 |
说明 |
id |
借调 ID |
end_date |
新到期日 |
sync_contract |
1 = 同时更新关联合同期限 |
remark |
备注 |
续借会把状态恢复为「借调中」,写状态变更日志,并触发「借调续借」场景推送。
十、项目配证
| 方法 |
路径 |
说明 |
| GET |
/api/admin/project |
项目列表 |
| GET |
/api/admin/project/detail |
项目详情(需求 / 任务 / 选用记录) |
| GET |
/api/admin/project/stat |
统计 |
| GET |
/api/admin/project/options |
项目下拉 |
| POST |
/api/admin/project/save |
新增/编辑 |
| POST |
/api/admin/project/batch-status |
批量改状态 |
| POST |
/api/admin/project/batch-delete |
批量删除 |
| POST |
/api/admin/project/delete |
删除 |
| GET |
/api/admin/project/template |
导入模板 |
| GET |
/api/admin/project/export |
导出 |
10.1 列表参数
| 参数 |
说明 |
keyword |
项目名称 / 编号 |
status |
0 筹备中 / 1 进行中 / 2 已结束 / 3 已暂停 |
client_id |
客户企业 |
region |
项目属地 |
10.2 保存项目
| 字段 |
必填 |
说明 |
id |
否 |
有值为编辑 |
project_name |
是 |
项目名称 |
project_no |
否 |
项目编号 |
client_id |
是 |
客户企业 |
region_name |
否 |
项目属地 |
region_code |
否 |
属地编码,用于政策精确匹配 |
start_date |
否 |
开始日期 |
end_date |
否 |
结束日期 |
status |
否 |
0 筹备中 / 1 进行中 / 2 已结束 / 3 已暂停 |
remark |
否 |
备注 |
reqs |
否 |
证件需求数组 |
custom |
否 |
自定义字段 |
reqs 每项:
| 字段 |
说明 |
cert_type |
证书类型 |
cert_name |
证书专业 |
need_count |
需要人数 |
social_require |
0 不要求 / 1 必须 / 2 优先 |
min_expire_days |
有效期下限(天) |
remark |
备注 |
十一、配证任务
| 方法 |
路径 |
说明 |
| GET |
/api/admin/cert-task |
任务列表 |
| GET |
/api/admin/cert-task/detail |
任务详情与进度 |
| POST |
/api/admin/cert-task/save |
新增/编辑 |
| POST |
/api/admin/cert-task/publish |
发布任务 |
| POST |
/api/admin/cert-task/update-item |
更新配证进度 |
| POST |
/api/admin/cert-task/add-log |
添加任务动态 |
| POST |
/api/admin/cert-task/delete |
删除 |
| POST |
/api/admin/cert-task/batch-delete |
批量删除 |
11.1 列表参数
| 参数 |
说明 |
keyword |
任务标题 |
status |
0 草稿 / 1 进行中 / 2 已完成 / 3 已关闭 |
company_id |
需求企业 |
project_id |
关联项目 |
11.2 保存任务
| 字段 |
必填 |
说明 |
id |
否 |
有值为编辑 |
title |
是 |
任务标题 |
company_id |
是 |
需求企业 |
project_id |
否 |
关联项目 |
deadline |
否 |
截止日期 |
visible_scope |
否 |
all 全员 / dept 指定部门 / user 指定人员 / self 仅发布人 |
visible_dept_ids |
否 |
可见部门 ID 数组 |
visible_user_ids |
否 |
可见人员 ID 数组 |
remark |
否 |
任务说明 |
items |
否 |
配证明细数组(证书类型/专业、需要数量、备注) |
11.3 更新进度
POST /api/admin/cert-task/update-item
| 参数 |
说明 |
task_id |
任务 ID |
item_id |
明细 ID |
done_count |
已配数量 |
remark |
进度说明 |
十二、智能匹配
| 方法 |
路径 |
说明 |
| GET |
/api/admin/match |
匹配工作台/需求清单 |
| GET |
/api/admin/match/recommend |
推荐候选人员 |
| GET |
/api/admin/match/why |
某候选的得分明细 |
| POST |
/api/admin/match/select |
选用并登记借调 |
| POST |
/api/admin/match/give-up |
放弃候选 |
| POST |
/api/admin/match/to-manual |
转人工处理 |
| POST |
/api/admin/match/record |
保存匹配记录 |
12.1 推荐
GET /api/admin/match/recommend?project_id=1&req_id=3&limit=20
| 参数 |
说明 |
project_id |
项目 ID |
req_id |
证件需求 ID |
include_blocked |
1 = 显示被阻断的候选 |
limit |
返回数量 |
返回每人的总分与五维得分:
| 维度 |
满分 |
| 证书匹配 |
40 |
| 社保匹配 |
25 |
| 有效期 |
15 |
| 无冲突 |
15 |
| 政策 |
5 |
12.2 选用
POST /api/admin/match/select
| 参数 |
说明 |
project_id |
项目 ID |
req_id |
需求 ID |
staff_id |
人员 ID |
cert_id |
证书 ID |
company_id |
借出企业 |
start_date |
借调开始 |
end_date |
借调到期 |
fee_amount |
借调费用 |
fee_period |
计费周期 |
fee_status |
0 未结算 / 1 已结算 |
with_contract |
1 = 同时生成服务合同 |
remark |
备注 |
选用成功会自动生成借调记录并留痕。存在阻断冲突时返回 409,确认后可强制提交。
十三、冲突中心
| 方法 |
路径 |
说明 |
| GET |
/api/admin/conflict |
冲突列表 |
| GET |
/api/admin/conflict/list |
冲突明细 |
| GET |
/api/admin/conflict/scan |
立即全量体检 |
| GET |
/api/admin/conflict/scan-result |
最近一次体检结果 |
| GET |
/api/admin/conflict/check-cert |
单证书冲突检查 |
| GET |
/api/admin/conflict/check-staff |
单人员冲突检查 |
| GET |
/api/admin/conflict/rules |
冲突规则 |
| POST |
/api/admin/conflict/rules-save |
保存规则 |
13.1 冲突类型
| type |
说明 |
occupy |
证书占用冲突 |
person |
人员时间冲突 |
exclusive |
证书互斥冲突(如一级/二级建造师) |
policy |
政策合规冲突 |
13.2 规则级别
{
"occupy": { "enabled": 1, "level": 2 },
"person": { "enabled": 1, "level": 1 },
"exclusive": { "enabled": 1, "level": 1 },
"policy": { "enabled": 1, "level": 1 }
}
十四、属地政策
| 方法 |
路径 |
说明 |
| GET |
/api/admin/policy-rule |
规则列表 |
| GET |
/api/admin/policy-rule/meta |
规则类型与参数元数据 |
| GET |
/api/admin/policy-rule/evaluate |
规则试算 |
| POST |
/api/admin/policy-rule/save |
新增/编辑 |
| POST |
/api/admin/policy-rule/batch-status |
批量启用/停用 |
| POST |
/api/admin/policy-rule/batch-delete |
批量删除 |
| POST |
/api/admin/policy-rule/delete |
删除 |
| GET |
/api/admin/policy-rule/template |
导入模板 |
| GET |
/api/admin/policy-rule/export |
导出 |
14.1 规则类型
| rule_type |
说明 |
参数 |
social_match |
社保匹配 |
require_social=1 |
expiry_limit |
有效期下限 |
min_expire_days=90 |
cert_limit |
证书类型限制 |
allow=专业1,专业2 |
14.2 保存规则
| 字段 |
说明 |
region_name |
适用属地,留空表示全国通用 |
region_code |
属地编码,选填 |
rule_type |
规则类型 |
rule_expr |
参数串,如 require_social=1;min_expire_days=90 |
severity |
0 提示 / 1 警告 / 2 阻断 |
status |
1 启用 / 0 停用 |
remark |
说明 |
14.3 试算
GET /api/admin/policy-rule/evaluate?cert_id=1&project_id=2
返回命中的规则、违规级别与说明。
十五、政务网进度
| 方法 |
路径 |
说明 |
| GET |
/api/admin/gov-progress |
申报列表 |
| GET |
/api/admin/gov-progress/meta |
业务类型、企业、人员等下拉数据 |
| GET |
/api/admin/gov-progress/detail |
详情(含环节、密码掩码) |
| POST |
/api/admin/gov-progress/save |
新增/编辑 |
| POST |
/api/admin/gov-progress/sync |
同步单条 |
| POST |
/api/admin/gov-progress/sync-all |
批量同步未办结 |
| POST |
/api/admin/gov-progress/archive |
归档/取消归档 |
| POST |
/api/admin/gov-progress/repair |
修复历史环节 |
| POST |
/api/admin/gov-progress/delete |
删除 |
| POST |
/api/admin/gov-progress/batch-delete |
批量删除 |
| GET |
/api/admin/gov-progress/runs |
执行记录 |
| GET |
/api/admin/gov-progress/template |
导入模板 |
| GET |
/api/admin/gov-progress/export |
导出 |
15.1 列表参数
| 参数 |
说明 |
keyword |
申报号 / 事项 / 企业 / 人员 |
business_type |
初始注册 / 转注 / 变更 / 延期 / 重新注册 / 注销 / 其他 |
archived |
0 未归档 / 1 已归档 |
status |
unfinished 办理中 / finished 已办结 / closed 已办结或已归档 |
promise |
overdue 已逾期 / 7 7 天内 / today 今天 |
sync_status |
0 未同步 / 1 成功 / 2 失败 |
15.2 保存申报
| 字段 |
必填 |
说明 |
id |
否 |
有值为编辑 |
project_no |
是 |
申报号 |
password |
是(新增) |
申报密码,AES-256-GCM 加密存储 |
business_type |
否 |
业务类型字典值 |
company_id |
否 |
关联企业 |
staff_id |
否 |
关联人员 |
cert_type |
否 |
证书类型 |
cert_name |
否 |
证书专业 |
remark |
否 |
备注 |
status |
否 |
1 启用 / 0 停用 |
编辑时 password 留空表示不修改。
15.3 同步
POST /api/admin/gov-progress/sync
批量:
POST /api/admin/gov-progress/sync-all
同步后会:
- 解析平台
FLOWXML 环节,完整落库;
- 检测到「签发」环节完成即标记办结并自动归档;
- 状态字段变化时触发
gov_progress 场景推送;
- 写入执行记录。
15.4 归档
POST /api/admin/gov-progress/archive
| 参数 |
说明 |
id 或 ids |
单条或批量 |
archived |
1 归档 / 0 取消归档 |
15.5 查看密码
详情接口默认返回掩码。查看明文需要 gov:reveal 权限,调用:
GET /api/admin/gov-progress/detail?id=1&reveal=1
查看明文会写入操作日志,请按最小权限分配。
十六、账号密码库
| 方法 |
路径 |
说明 |
| GET |
/api/admin/credential-vault |
列表 |
| GET |
/api/admin/credential-vault/meta |
平台、企业、人员下拉 |
| GET |
/api/admin/credential-vault/detail |
详情(密码掩码) |
| GET |
/api/admin/credential-vault/reveal |
查看明文密码 |
| POST |
/api/admin/credential-vault/save |
新增/编辑 |
| POST |
/api/admin/credential-vault/quick-platform |
快捷新增平台 |
| POST |
/api/admin/credential-vault/import |
导入 |
| GET |
/api/admin/credential-vault/template |
导入模板 |
| GET |
/api/admin/credential-vault/export |
导出 |
| POST |
/api/admin/credential-vault/delete |
删除 |
| POST |
/api/admin/credential-vault/batch-delete |
批量删除 |
16.1 列表参数
| 参数 |
说明 |
keyword |
企业 / 人员 / 平台 / 网址 / 登录账号 / 备注 |
platform |
平台名称 |
account_type |
company 企业 / staff 个人 |
company_id |
关联企业 |
staff_id |
关联人员 |
16.2 保存
| 字段 |
必填 |
说明 |
id |
否 |
有值为编辑 |
platform |
是 |
平台名称 |
platform_url |
否 |
平台网址 |
account_type |
否 |
company / staff |
company_id |
否 |
关联企业 |
staff_id |
否 |
关联人员 |
account_name |
是 |
登录账号 |
password |
新增必填 |
登录密码 |
remark |
否 |
用途、密保提示等 |
status |
否 |
1 启用 / 0 停用 |
16.3 查看密码
GET /api/admin/credential-vault/reveal?id=1
密码使用 AES-256-GCM 加密存储,列表与导出均不返回明文。查看动作会写操作日志。
十七、考试报名
17.1 证书类目
| 方法 |
路径 |
说明 |
| GET |
/api/admin/exam-cert/categories |
分类列表 |
| POST |
/api/admin/exam-cert/category-save |
新增/编辑分类 |
| POST |
/api/admin/exam-cert/category-delete |
删除分类 |
| GET |
/api/admin/exam-cert/types |
证书类型列表 |
| GET |
/api/admin/exam-cert/type-options |
类型下拉 |
| POST |
/api/admin/exam-cert/type-save |
新增/编辑类型 |
| POST |
/api/admin/exam-cert/type-delete |
删除类型 |
17.2 业务配置
| 方法 |
路径 |
说明 |
| GET |
/api/admin/exam-config/configs |
业务组合(证书 × 动作) |
| GET |
/api/admin/exam-config/config-detail |
组合详情 |
| POST |
/api/admin/exam-config/config-save |
新增/编辑组合 |
| POST |
/api/admin/exam-config/config-delete |
删除组合 |
| POST |
/api/admin/exam-config/config-open |
开放/关闭办理 |
| POST |
/api/admin/exam-config/trial |
规则试算 |
| GET |
/api/admin/exam-config/actions |
业务动作列表 |
| POST |
/api/admin/exam-config/action-save |
新增/编辑动作 |
| POST |
/api/admin/exam-config/action-delete |
删除动作 |
默认业务动作:
| 编码 |
名称 |
大类 |
initial |
初次报名 |
报名 |
continue |
继续教育 |
继续教育 |
review |
复审延期 |
复审 |
change |
变更补证 |
变更补证 |
默认状态流:待提交 → 待审核 → 已审核 → 已报名 → 已排考 → 已完成。
17.3 批次与考点
| 方法 |
路径 |
说明 |
| GET |
/api/admin/exam-batch |
批次列表 |
| GET |
/api/admin/exam-batch/detail |
批次详情 |
| GET |
/api/admin/exam-batch/options |
批次下拉 |
| POST |
/api/admin/exam-batch/save |
新增/编辑批次 |
| POST |
/api/admin/exam-batch/delete |
删除批次 |
| POST |
/api/admin/exam-batch/current |
设为当前批次 |
| GET |
/api/admin/exam-batch/rooms |
考点列表 |
| GET |
/api/admin/exam-batch/room-options |
考点下拉 |
| POST |
/api/admin/exam-batch/room-save |
新增/编辑考点 |
| POST |
/api/admin/exam-batch/room-delete |
删除考点 |
17.4 报名工单
| 方法 |
路径 |
说明 |
| GET |
/api/admin/exam-signup |
工单列表 |
| GET |
/api/admin/exam-signup/meta |
表单元数据 |
| GET |
/api/admin/exam-signup/detail |
工单详情 |
| POST |
/api/admin/exam-signup/save |
新建/编辑/暂存草稿 |
| POST |
/api/admin/exam-signup/submit |
提交报名 |
| POST |
/api/admin/exam-signup/advance |
推进/退回状态 |
| POST |
/api/admin/exam-signup/audit |
审核通过/驳回 |
| POST |
/api/admin/exam-signup/material-save |
保存材料 |
| POST |
/api/admin/exam-signup/material-delete |
删除材料 |
| POST |
/api/admin/exam-signup/ocr-idcard |
身份证 OCR |
| POST |
/api/admin/exam-signup/ocr-diploma |
毕业证 OCR |
| GET |
/api/admin/exam-signup/customers |
考生列表 |
| POST |
/api/admin/exam-signup/customer-save |
新建/编辑考生 |
| GET |
/api/admin/exam-signup/reminders |
报名提醒 |
| POST |
/api/admin/exam-signup/delete |
删除工单 |
列表参数:
| 参数 |
说明 |
keyword |
单号 / 姓名 / 身份证 / 手机 |
config_id |
业务组合 |
batch_id |
批次 |
stage |
状态节点 |
is_draft |
1 草稿 / 0 正式单 |
工单保存关键字段:
| 字段 |
说明 |
config_id |
业务组合 |
batch_id |
报名批次 |
customer_id |
考生 |
cert_type_id / action_id |
证书类型 / 动作(可由组合带出) |
company_name / region |
报名单位 / 所属地市 |
force |
1 = 不符合条件仍办理(留痕) |
allow_duplicate |
1 = 允许重复报名 |
draft |
1 = 暂存草稿(不校验) |
materials |
材料数组 |
remark |
备注 |
提交时会做报名条件校验(年龄、学历、工作年限、证书有效期等),不符合会返回 400 与具体原因。
十八、学历报名
18.1 报名工单
| 方法 |
路径 |
说明 |
| GET |
/api/admin/edu-signup |
工单列表 |
| GET |
/api/admin/edu-signup/meta |
表单元数据 |
| GET |
/api/admin/edu-signup/detail |
工单详情 |
| POST |
/api/admin/edu-signup/save |
新建/编辑(含学费联动、毕业归档) |
| POST |
/api/admin/edu-signup/advance |
推进流程 / 退回上一步 |
| POST |
/api/admin/edu-signup/unarchive |
反归档 |
| POST |
/api/admin/edu-signup/attach-save |
保存附件 |
| POST |
/api/admin/edu-signup/attach-rename |
附件改名 |
| POST |
/api/admin/edu-signup/attach-delete |
删除附件 |
| POST |
/api/admin/edu-signup/delete |
删除工单 |
| GET |
/api/admin/edu-signup/staff-options |
人员档案下拉 |
| POST |
/api/admin/edu-signup/staff-save |
快捷新建人员 |
列表参数:
| 参数 |
说明 |
keyword |
单号 / 姓名 / 身份证 / 电话 / 专业 |
signup_type |
dianzhong 电中 / chengkao 成考 |
edu_level |
学历类型 |
roll_status |
enrolled 在籍 / graduated 已毕业 |
agency_id |
报名机构 |
archived |
0 在办 / 1 已归档 |
工单保存关键字段:
| 字段 |
说明 |
signup_type |
报名类型 |
edu_level / edu_nature / edu_system |
学历类型 / 性质 / 学制 |
staff_id |
关联人员档案 |
student_name / id_card / phone |
姓名 / 身份证 / 电话 |
signup_date / enroll_date / expect_graduate_time |
报名 / 入学 / 预计毕业 |
agency_id |
报名机构 |
total_fee / paid_fee / agent_fee |
总学费 / 已收 / 代收 |
roll_status |
学籍状态 |
graduate_time |
毕业时间(保存即自动归档) |
remark |
备注 |
默认流程:
- 电中(中专):待报名 → 已报名 → 已入籍 → 已毕业
- 成考:待报名 → 已报名 → 待考试 → 待录取 → 已录取
18.2 报名机构
| 方法 |
路径 |
说明 |
| GET |
/api/admin/edu-agency |
机构列表 |
| GET |
/api/admin/edu-agency/options |
机构下拉 |
| GET |
/api/admin/edu-agency/detail |
机构详情 |
| POST |
/api/admin/edu-agency/save |
新增/编辑 |
| POST |
/api/admin/edu-agency/delete |
删除 |
18.3 流程配置
| 方法 |
路径 |
说明 |
| GET |
/api/admin/edu-config/flows |
各报名类型流程 |
| GET |
/api/admin/edu-config/flow-detail |
流程详情 |
| POST |
/api/admin/edu-config/flow-save |
保存流程 |
| POST |
/api/admin/edu-config/flow-reset |
恢复默认流程 |
十九、费用、收款账户、合同
19.1 费用台账
| 方法 |
路径 |
说明 |
| GET |
/api/admin/fee |
列表 |
| GET |
/api/admin/fee/meta |
表单下拉数据 |
| GET |
/api/admin/fee/stat |
统计 |
| GET |
/api/admin/fee/summary |
汇总 |
| GET |
/api/admin/fee/receivable-payable |
应收应付 |
| GET |
/api/admin/fee/by-source |
按来源汇总 |
| POST |
/api/admin/fee/save |
新增/编辑 |
| POST |
/api/admin/fee/settle |
结算 |
| POST |
/api/admin/fee/delete |
删除 |
| POST |
/api/admin/fee/batch-delete |
批量删除 |
| GET |
/api/admin/fee/export |
导出明细 |
列表参数:
| 参数 |
说明 |
company_id |
客户企业 |
staff_id |
持证人员 |
direction |
receivable 应收 / payable 应付 |
fee_type |
income 收入 / expense 支出 |
settle_status |
0 未结算 / 1 已结算 |
source_type |
来源类型 |
keyword |
费用项目 / 备注 |
start_date / end_date |
发生日期范围 |
保存字段:
| 字段 |
必填 |
说明 |
subject_type |
是 |
company / staff |
company_id / staff_id |
二选一 |
归属对象 |
payer_name |
否 |
付款方 |
source_type / source_id |
否 |
关联来源(借调 / 合同 / 项目 / 报名等) |
fee_name |
是 |
费用项目 |
fee_type |
是 |
income / expense |
amount |
是 |
金额 |
occur_date |
否 |
发生日期 |
plan_date |
否 |
计划收付日期 |
settle_status |
否 |
0 未结算 / 1 已结算 |
settle_amount |
否 |
已收/付金额(部分结算) |
settle_date |
否 |
结算日期 |
pay_account_id |
否 |
收款账户 |
pay_method / invoice_no / handler |
否 |
支付方式 / 发票号 / 经办人 |
remark |
否 |
备注 |
结算:
POST /api/admin/fee/settle
| 参数 |
说明 |
id |
费用 ID |
amount |
本次结算金额 |
settle_date |
结算日期 |
pay_account_id |
收款账户 |
cancel |
1 = 取消结算 |
结算金额累计后:未结清 > 0 为「部分结算」,未结清 = 0 为「已结算」。
19.2 收款账户
| 方法 |
路径 |
说明 |
| GET |
/api/admin/pay-account |
列表 |
| GET |
/api/admin/pay-account/options |
下拉 |
| POST |
/api/admin/pay-account/save |
新增/编辑 |
| POST |
/api/admin/pay-account/set-default |
设为默认 |
| POST |
/api/admin/pay-account/delete |
删除 |
| POST |
/api/admin/pay-account/batch-delete |
批量删除 |
字段:account_name、account_type、bank_name、bank_branch、account_no、init_balance、currency、contact、contact_phone、is_default、sort、status、remark。
当前余额 = 初始余额 + 已收 − 已付。被费用引用的账户不允许删除。
19.3 服务合同
| 方法 |
路径 |
说明 |
| GET |
/api/admin/contract |
列表 |
| GET |
/api/admin/contract/detail |
详情(含关联借调、费用) |
| POST |
/api/admin/contract/save |
新增/编辑 |
| POST |
/api/admin/contract/delete |
删除 |
| POST |
/api/admin/contract/batch-delete |
批量删除 |
字段:company_id、contract_no、contract_name、contract_type、party_a、party_b、sign_date、start_date、end_date、amount、status、secondment_id、remark、attachments。
二十、CRM 跟进
| 方法 |
路径 |
说明 |
| GET |
/api/admin/crm/users |
可移交的账号列表 |
| POST |
/api/admin/crm/transfer |
移交负责人 |
| GET |
/api/admin/crm/follows |
某条记录的跟进列表 |
| POST |
/api/admin/crm/follow |
新增跟进 |
| POST |
/api/admin/crm/follow-delete |
删除跟进 |
| GET |
/api/admin/crm/ledger |
跟进台账 |
20.1 移交
POST /api/admin/crm/transfer
| 参数 |
说明 |
module |
company / certificate / staff |
ids |
记录 ID 数组 |
target_user_id |
目标负责人 |
remark |
移交备注 |
移交会写移交历史与操作日志;负责人不接受直接编辑。
20.2 新增跟进
POST /api/admin/crm/follow
| 参数 |
说明 |
module |
company / certificate / staff |
record_id |
业务记录 ID |
follow_type |
电话 / 微信 / 上门拜访 / 邮件 / 短信 / 会议 / 其他 |
content |
跟进内容 |
next_follow_date |
下次跟进日期 |
20.3 跟进台账
GET /api/admin/crm/ledger?page=1&limit=15
| 参数 |
说明 |
module |
company / certificate / staff |
follow_user_id |
跟进人 |
keyword |
跟进内容 |
start_date / end_date |
跟进时间范围 |
next_start / next_end |
下次跟进日期范围 |
overdue |
1 = 只看超期未跟进 |
subject_type |
person / company |
二十一、提醒与推送
21.1 提醒中心
| 方法 |
路径 |
说明 |
| GET |
/api/admin/alert |
提醒列表 |
| GET |
/api/admin/alert/unread-count |
未读数 |
| POST |
/api/admin/alert/read |
标记单条已读 |
| POST |
/api/admin/alert/read-all |
全部已读 |
| POST |
/api/admin/alert/resend |
补发提醒 |
列表参数:
| 参数 |
说明 |
company_id |
企业 |
is_read |
0 未读 / 1 已读 |
alert_type |
cert_expire 证书到期 / secondment 借调 / company_cert 企业证书 |
keyword |
人员 / 证书 |
start_date / end_date |
时间范围 |
补发:
POST /api/admin/alert/resend
21.2 推送渠道
| 方法 |
路径 |
说明 |
| GET |
/api/admin/push-channel |
列表 |
| POST |
/api/admin/push-channel/save |
新增/编辑 |
| POST |
/api/admin/push-channel/test |
测试推送 |
| POST |
/api/admin/push-channel/delete |
删除 |
渠道类型:
| 类型 |
关键配置 |
sms |
网关地址、短信签名、模板编号 |
email |
SMTP 服务器、端口、发件账号、密码、加密方式 |
wecom_bot |
Webhook 地址 |
wecom_app |
CorpID、AgentID、Secret |
mp |
公众号 AppID、AppSecret、模板消息 ID |
测试推送参数:id(渠道 ID)、target(接收目标)、content(消息内容,留空用示例)。
21.3 消息模板
| 方法 |
路径 |
说明 |
| GET |
/api/admin/msg-template |
列表 |
| POST |
/api/admin/msg-template/save |
新增/编辑 |
| POST |
/api/admin/msg-template/delete |
删除 |
字段:scene(场景)、template_type(渠道)、template_name、content、status。
场景包括:证书到期、借调临期、借调到期、借调续借、政务网进度等。
21.4 企业接收人
| 方法 |
路径 |
说明 |
| GET |
/api/admin/receiver |
列表 |
| POST |
/api/admin/receiver/save |
新增/编辑 |
| POST |
/api/admin/receiver/delete |
删除 |
| POST |
/api/admin/receiver/batch-delete |
批量删除 |
字段:company_id(0 = 全局)、receiver_name、mobile、email、wecom_userid、receiver_type、status。
21.5 推送日志
| 方法 |
路径 |
说明 |
| GET |
/api/admin/push-log |
日志列表 |
| POST |
/api/admin/push-log/clear |
清空日志 |
参数:company_id、status(0 待发送 / 1 成功 / 2 失败)、source(正式/测试)、cert_id、channel、keyword、日期范围。
21.6 推送体检与手动检测
| 方法 |
路径 |
说明 |
| GET |
/api/admin/push/diagnose |
推送体检:渠道、接收人、规则、阻断原因 |
| POST |
/api/admin/push/run-check |
立即执行到期检测 |
POST /api/admin/push/run-check
| 参数 |
说明 |
catch_up |
1 = 补发漏跑节点 |
dry_run |
1 = 只体检不写库 |
21.7 提醒规则
| 方法 |
路径 |
说明 |
| GET |
/api/admin/alert-config/list |
企业规则列表 |
| GET |
/api/admin/alert-config |
取某企业规则 |
| POST |
/api/admin/alert-config/save |
保存规则 |
| POST |
/api/admin/alert-config/batch |
批量套用 |
字段:company_id(0 = 全局)、alert_nodes(如 1year,6month,3month,2month,1month,15day,7day,3day,1day)、alert_ways(站内信/短信/邮件/企微等)、default_priority。
二十二、字典与自定义字段
22.1 字典
| 方法 |
路径 |
说明 |
| GET |
/api/admin/dict-type |
字典类型列表 |
| POST |
/api/admin/dict-type/save |
新增/编辑类型 |
| POST |
/api/admin/dict-type/delete |
删除类型 |
| GET |
/api/admin/dict-data |
字典项列表 |
| GET |
/api/admin/dict-data/by-type |
按类型取字典项 |
| POST |
/api/admin/dict-data/save |
新增/编辑字典项 |
| POST |
/api/admin/dict-data/delete |
删除字典项 |
保存类型字段:type_code、type_name、module、remark、status。
保存字典项字段:type_code、dict_value、dict_label、parent_value、sort、status、remark。
22.2 证书类型与专业
| 方法 |
路径 |
说明 |
| GET |
/api/admin/cert-dict/cascade |
类型 → 专业级联数据 |
| GET |
/api/admin/cert-dict/majors |
某类型下的专业 |
| POST |
/api/admin/cert-dict/quick-create |
快捷新增类型/专业 |
专业若已登记字典,必须归属所选类型;类型为空且专业归属唯一时自动补全。
22.3 自定义字段
| 方法 |
路径 |
说明 |
| GET |
/api/admin/custom-field |
字段列表 |
| GET |
/api/admin/custom-field/meta |
模块与字段类型元数据 |
| GET |
/api/admin/custom-field/by-module |
某模块的启用字段 |
| POST |
/api/admin/custom-field/save |
新增/编辑 |
| POST |
/api/admin/custom-field/status |
启用/停用 |
| POST |
/api/admin/custom-field/delete |
删除 |
字段:module、field_key、field_label、field_type、options、default_value、is_required、sort、status、remark。
支持模块:人员、企业、证书、合同、借调、项目、配证任务等。
二十三、组织、账号、角色、菜单
23.1 部门
| 方法 |
路径 |
说明 |
| GET |
/api/admin/org-dept |
部门树 |
| POST |
/api/admin/org-dept/save |
新增/编辑 |
| POST |
/api/admin/org-dept/delete |
删除 |
| GET |
/api/admin/org/selector |
组织选择器(部门 + 人员) |
23.2 账号
| 方法 |
路径 |
说明 |
| GET |
/api/admin/user |
账号列表 |
| GET |
/api/admin/user/depts |
部门下拉 |
| GET |
/api/admin/user/companies |
可管企业 |
| POST |
/api/admin/user/save |
新增/编辑 |
| POST |
/api/admin/user/delete |
删除 |
| POST |
/api/admin/user/unbind-wecom |
解绑企微 |
| POST |
/api/admin/user/totp-force |
开启/关闭强制二次验证 |
| POST |
/api/admin/user/totp-tip |
保存绑定提示语 |
| POST |
/api/admin/user/totp-unbind |
解绑验证器 |
保存字段:id、username、password、real_name、dept_ids、role_id、data_scope(all/dept_tree/dept/self)、company_ids、phone、email、status。
23.3 角色
| 方法 |
路径 |
说明 |
| GET |
/api/admin/role |
角色列表 |
| GET |
/api/admin/role/permissions |
权限矩阵元数据 |
| POST |
/api/admin/role/save |
新增/编辑 |
| POST |
/api/admin/role/reset |
恢复默认授权 |
| POST |
/api/admin/role/delete |
删除 |
字段:role_name、role_code、menu_ids、perms、remark、status。
23.4 菜单
| 方法 |
路径 |
说明 |
| GET |
/api/admin/menu |
菜单树 |
| GET |
/api/admin/menu/list |
扁平列表 |
| GET |
/api/admin/menu/diagnose |
菜单诊断 |
| POST |
/api/admin/menu/save |
新增/编辑 |
| POST |
/api/admin/menu/delete |
删除 |
| POST |
/api/admin/menu/reset-catalog |
重置为标准菜单架构 |
23.5 企微通讯录与审批
| 方法 |
路径 |
说明 |
| POST |
/api/admin/wecom-contact/sync |
同步通讯录 |
| GET |
/api/admin/wecom-contact/users |
成员列表 |
| GET |
/api/admin/wecom-contact/departments |
部门结构 |
| POST |
/api/admin/wecom-contact/update |
编辑成员 |
| POST |
/api/admin/wecom-contact/delete |
删除成员 |
| POST |
/api/admin/wecom-contact/bind-account |
绑定系统账号 |
| POST |
/api/admin/wecom-contact/create-account |
创建系统账号 |
| GET |
/api/admin/approval |
审批列表 |
| GET |
/api/admin/approval/meta |
审批元数据 |
| GET |
/api/admin/approval/detail |
审批详情 |
| POST |
/api/admin/approval/save |
发起审批 |
| POST |
/api/admin/approval/approve |
通过 |
| POST |
/api/admin/approval/reject |
驳回 |
| POST |
/api/admin/approval/cancel |
撤销 |
| POST |
/api/admin/approval/sync |
同步审批状态 |
二十四、系统配置、日志、回收站
24.1 系统信息
| 方法 |
路径 |
说明 |
| GET |
/api/admin/system-config |
读取系统配置(敏感项掩码) |
| POST |
/api/admin/system-config/save |
保存配置 |
| POST |
/api/admin/system-config/webdav-test |
WebDAV 测试连接 |
| POST |
/api/admin/system-config/ocr-test |
OCR 配置测试 |
| POST |
/api/admin/system-config/relay-test |
证书查询中继测试 |
| POST |
/api/admin/system/cache-clear |
清除缓存 |
| GET |
/api/admin/wecom-config |
企微登录配置 |
| POST |
/api/admin/wecom-config/save |
保存企微配置 |
| POST |
/api/admin/wecom-config/test |
测试企微连接 |
24.2 日志
| 方法 |
路径 |
说明 |
| GET |
/api/admin/operation-log |
操作日志 |
| POST |
/api/admin/operation-log/clear |
清空操作日志 |
| GET |
/api/admin/login-log |
登录日志 |
| POST |
/api/admin/login-log/clear |
清空登录日志(仅超级管理员) |
| GET |
/api/admin/login-device |
全站登录设备 |
| GET |
/api/admin/login-device/users |
设备用户列表 |
| POST |
/api/admin/login-device/revoke |
下线设备 |
| POST |
/api/admin/login-device/revoke-all |
下线用户全部会话 |
24.3 回收站
| 方法 |
路径 |
说明 |
| GET |
/api/admin/recycle-bin |
回收站列表 |
| POST |
/api/admin/recycle-bin/restore |
按原 ID 恢复 |
| POST |
/api/admin/recycle-bin/purge |
彻底删除 |
| POST |
/api/admin/recycle-bin/clear |
清空回收站 |
参数:id 或 ids、module。
24.4 在线升级
| 方法 |
路径 |
说明 |
| GET |
/api/admin/upgrade/info |
当前版本、环境能力、备份列表 |
| GET |
/api/admin/upgrade/progress |
升级进度 |
| POST |
/api/admin/upgrade/check |
检查新版本 |
| POST |
/api/admin/upgrade/backup |
立即备份 |
| POST |
/api/admin/upgrade/download |
下载升级包 |
| POST |
/api/admin/upgrade/upload |
上传升级包 |
| POST |
/api/admin/upgrade/apply |
执行升级 |
| POST |
/api/admin/upgrade/restore |
恢复备份 |
| POST |
/api/admin/upgrade/delete-backup |
删除备份 |
二十五、导入导出与附件
25.1 通用导入
| 方法 |
路径 |
说明 |
| POST |
/api/admin/import/preview |
上传并预览,返回逐行校验结果 |
| POST |
/api/admin/import/commit |
确认入库 |
| POST |
/api/admin/import/fail-export |
导出失败名单 |
| POST |
/api/admin/import/recognize-export |
导出识别记录(全量行) |
预览参数:
| 参数 |
说明 |
type |
模块类型,如 staff、company、certificate、project、policy |
file |
Excel 文件,.xlsx / .xls,≤ 10MB |
auto_create |
1 = 企业/人员不存在时自动建档(支持的模块) |
提交参数:
| 参数 |
说明 |
type |
模块类型 |
rows |
勾选要入库的行 |
token |
预览会话标识 |
预览会校验必填、日期、身份证、手机号、邮箱、信用代码格式;失败行可下载失败名单。
25.2 各模块模板与导出
| 模块 |
模板 |
导出 |
| 客户企业 |
GET /api/admin/company/template |
GET /api/admin/company/export |
| 人员档案 |
GET /api/admin/staff/template |
GET /api/admin/staff/export |
| 证照台账 |
GET /api/admin/certificate/template |
GET /api/admin/certificate/export |
| 企业证书 |
GET /api/admin/company-cert/template |
GET /api/admin/company-cert/export |
| 项目 |
GET /api/admin/project/template |
GET /api/admin/project/export |
| 属地政策 |
GET /api/admin/policy-rule/template |
GET /api/admin/policy-rule/export |
| 费用 |
— |
GET /api/admin/fee/export |
| 政务网进度 |
GET /api/admin/gov-progress/template |
GET /api/admin/gov-progress/export |
| 账号密码库 |
GET /api/admin/credential-vault/template |
GET /api/admin/credential-vault/export |
25.3 附件下载
GET /api/attach/download?path=uploads/2026/11/xxx.pdf
需要登录态;WebDAV 附件走带 HMAC 签名、1 小时有效的代理下载。
二十六、Agent 开放接口
26.1 认证
| 项 |
说明 |
| 密钥格式 |
cak_ + 48 位十六进制 |
| 传递方式 |
Authorization: Bearer <API_KEY> 或 X-API-Key: <API_KEY> |
| 作用域 |
read / read,write |
| 限流 |
120 次/分钟/密钥 |
| 数据范围 |
跟随绑定账号,脱敏规则一致 |
| 有效期 |
可选,到期后返回 403 |
密钥明文只在创建时显示一次,库内只存 SHA-256 哈希与前缀。
26.2 接口
| 方法 |
路径 |
作用域 |
说明 |
| GET |
/api/agent/ping |
read |
健康检查 |
| GET |
/api/agent/capabilities |
read |
能力清单 |
| GET |
/api/agent/overview |
read |
企业/人员/证书/合同/到期/未读提醒概览 |
| GET |
/api/agent/certificates |
read |
证书分页 |
| GET |
/api/agent/certificates/detail |
read |
证书详情 |
| GET |
/api/agent/staff |
read |
人员分页 |
| GET |
/api/agent/staff/detail |
read |
人员详情 |
| GET |
/api/agent/companies |
read |
企业分页 |
| GET |
/api/agent/companies/detail |
read |
企业详情 |
| GET |
/api/agent/contracts |
read |
合同分页 |
| GET |
/api/agent/contracts/detail |
read |
合同详情 |
| GET |
/api/agent/expiring |
read |
N 天内到期证书 |
| POST |
/api/agent/certificates/status |
write |
更新证书状态 |
| POST |
/api/agent/crm/follow |
write |
追加跟进记录 |
| POST |
/api/agent/mcp |
— |
MCP Streamable HTTP 端点 |
| GET |
/api/agent/skill |
— |
获取 SKILL.md |
| GET |
/api/agent/openapi |
— |
获取 OpenAPI 描述 |
26.3 证书列表参数
| 参数 |
说明 |
page / limit |
分页,默认 20,最大 100 |
keyword |
证书名称 / 编号 / 专业 / 类型 |
staff_id |
持证人 |
company_id |
当前借调企业 |
cert_type |
证书类型 |
cert_status |
0 已过期 / 1 正常 / 2 挂失 / 3 注销 |
social_status |
0 未知 / 1 在缴 / 2 停缴 / 3 未缴纳 |
expire_days |
N 天内到期 |
only_free |
1 = 只看未借调 |
26.4 写接口参数
更新证书状态
| 参数 |
必填 |
说明 |
id |
是 |
证书 ID |
cert_status |
是 |
0/1/2/3 |
remark |
否 |
变更说明,≤ 200 字 |
追加跟进
| 参数 |
必填 |
说明 |
module |
是 |
company / certificate / staff |
record_id |
是 |
业务记录 ID |
follow_type |
是 |
电话 / 微信 / 上门拜访 / 邮件 / 短信 / 会议 / 其他 |
content |
是 |
跟进内容,≤ 2000 字 |
next_follow_date |
否 |
下次跟进日期 |
26.5 MCP
POST /api/agent/mcp
Content-Type: application/json
Authorization: Bearer <API_KEY>
支持 MCP Streamable HTTP 协议,工具清单与 REST 能力一致。适合 Claude Desktop、Cherry Studio 等支持 MCP 的客户端。
二十七、企业微信回调
| 方法 |
路径 |
说明 |
| GET |
/api/wecom/config |
前端获取企微登录配置(公开) |
| GET |
/api/wecom/login |
企微 OAuth 回调(跳转) |
| POST |
/api/wecom/login |
企微登录(code 换登录态) |
| POST |
/api/wecom/bind |
绑定企微 |
| POST |
/api/wecom/unbind |
解绑企微 |
| GET |
/api/wecom/status |
当前账号企微绑定状态 |
| GET |
/api/wecom/aibot |
智能机器人回调校验 |
| POST |
/api/wecom/aibot |
智能机器人消息回调 |
| GET |
/api/agent |
智能机器人回调校验(兼容路径) |
| POST |
/api/agent |
智能机器人消息回调(兼容路径) |
智能机器人支持在「Agent 接入 → 企业微信机器人」中生成 Token、查看回调 URL,并配置到企业微信后台。支持查询类指令与受控写入指令。
二十八、客户企业只读端
| 方法 |
路径 |
说明 |
| GET |
/api/client/dashboard/stat |
本企业工作台统计 |
| GET |
/api/client/certificate |
本企业相关证书 |
| GET |
/api/client/alert |
本企业提醒 |
| GET |
/api/client/company |
本企业信息 |
客户角色只能读本企业数据,写操作一律 403。数据范围由 user_company_rel 决定。
二十九、附录
29.1 证书状态
| 值 |
含义 |
| 0 |
已过期 |
| 1 |
正常 |
| 2 |
挂失 |
| 3 |
注销 |
29.2 社保状态
| 值 |
含义 |
| 0 |
未知 |
| 1 |
在缴 |
| 2 |
停缴 |
| 3 |
未缴纳 |
29.3 借调状态与方向
| 字段 |
值 |
含义 |
| status |
1 |
借调中 |
| status |
0 |
已归还 |
| status |
2 |
已到期 |
| direction |
1 |
借出 |
| direction |
2 |
借入 |
29.4 项目状态
| 值 |
含义 |
| 0 |
筹备中 |
| 1 |
进行中 |
| 2 |
已结束 |
| 3 |
已暂停 |
29.5 项目社保要求
29.6 匹配状态
29.7 提醒节点
1year, 6month, 3month, 2month, 1month, 15day, 7day, 3day, 1day
支持自定义节点。
29.8 费用结算
| 场景 |
判定 |
| 未结算 |
settle_amount = 0 且 settle_status = 0 |
| 部分结算 |
0 < settle_amount < amount |
| 已结算 |
settle_amount >= amount 或 settle_status = 1 |
29.9 数据范围
| 值 |
含义 |
all |
全公司 |
dept_tree |
本部门及下属 |
dept |
本部门 |
self |
仅本人创建 |
29.10 版本与兼容
- 新增字段遵循向后兼容,旧客户端可忽略未知字段。
- 枚举值以字典管理为准,界面优先显示字典标签,字典缺失时回退内置常量。
- 接口路径如遇调整,会保留旧路径兼容或在下个版本说明中标注。