openapi: 3.0.3 info: title: 人员信息-人脸接口 API description: | 基于 `OrgPersonnel` 的人脸相关接口,包含: - **更新人员原始人像地址**:保存人脸比对基准图 URL。 - **人脸比对**:传入待比对图片 base64,服务端从人员「原始人像地址」下载并转 base64,再调用底层人脸比对能力,返回相似度。 ## 接口一览 | 接口 | 说明 | |------|------| | `POST /safetyEval/org-personnel/update-origin-face` | 更新人员原始人像地址(基准图) | | `POST /safetyEval/org-personnel/compare-face` | 人脸比对,传入图片 base64 与原始人像比对,返回相似度 | ## 错误码 | 错误码 | 说明 | |--------|------| | 01-05-004 | 原始人像地址为空(比对时人员未设置 originFaceUrl) | | 01-05-005 | 待比对图片 base64 为空 | | 01-05-006 | 人脸比对失败(底层调用异常) | **Apifox 导入**:项目设置 → 导入数据 → OpenAPI → 选择本文件。 统一前缀:`/safetyEval/org-personnel` 成功:`success=true` 且 `code="0"` version: 1.0.0 contact: name: safety-eval-service servers: - url: http://localhost:8095 description: 本地开发 - url: http://192.168.20.100:30140 description: 测试网关(100) tags: - name: 人员信息-人脸接口 description: 原始人像地址维护与人脸比对 paths: /safetyEval/org-personnel/update-origin-face: post: tags: [人员信息-人脸接口] summary: 更新人员原始人像地址 description: | 保存人员的「原始人像地址(originFaceUrl)」,作为后续人脸比对的基准图。 仅更新该字段,不影响其他人员信息。 operationId: orgPersonnelUpdateOriginFace requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OrgPersonnelUpdateOriginFaceCmd' example: id: 10001 originFaceUrl: "https://oss.example.com/face/10001.jpg" responses: '200': description: 成功(返回更新后的人员信息) content: application/json: schema: $ref: '#/components/schemas/SingleResponseOrgPersonnelCO' example: success: true code: "0" message: "success" errMessage: null data: id: 10001 userName: "张三" originFaceUrl: "https://oss.example.com/face/10001.jpg" /safetyEval/org-personnel/compare-face: post: tags: [人员信息-人脸接口] summary: 人脸比对 description: | 传入待比对图片 base64(imageBase64)与人员 ID(personnelId)。 服务端从人员「原始人像地址(originFaceUrl)」下载并转为 base64, 再调用底层人脸比对能力,返回两张人脸的相似度(0~1,越大越相似)。 operationId: orgPersonnelCompareFace requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OrgPersonnelCompareFaceCmd' example: personnelId: 10001 imageBase64: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAAA//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AfwD/2Q==" responses: '200': description: 成功(返回相似度,0~1) content: application/json: schema: $ref: '#/components/schemas/SingleResponseBigDecimal' example: success: true code: "0" message: "success" errMessage: null data: 0.92 components: schemas: SingleResponseBase: type: object properties: success: { type: boolean, example: true } code: { type: string, example: "0" } message: { type: string } errMessage: { type: string } OrgPersonnelUpdateOriginFaceCmd: type: object required: [id] properties: id: type: integer format: int64 description: 人员ID example: 10001 originFaceUrl: type: string description: 原始人像地址(人脸比对基准图) example: "https://oss.example.com/face/10001.jpg" OrgPersonnelCompareFaceCmd: type: object required: [personnelId, imageBase64] properties: personnelId: type: integer format: int64 description: 人员ID example: 10001 imageBase64: type: string description: 待比对人脸图片 base64 example: "data:image/jpeg;base64,/9j/4AAQSkZJRg..." OrgPersonnelCO: type: object properties: id: { type: integer, format: int64 } deptId: { type: integer, format: int64 } postId: { type: integer, format: int64 } userName: { type: string } account: { type: string } genderCode: { type: integer, format: int32 } genderName: { type: string } birthDate: { type: string, format: date } joinWorkDate: { type: string, format: date } idCardNo: { type: string } currentAddress: { type: string } officeAddress: { type: string } educationCode: { type: string } educationName: { type: string } graduateSchool: { type: string } major: { type: string } basicDisciplineMajorId: { type: integer, format: int64 } employmentStatusCode: { type: integer, format: int32 } employmentStatusName: { type: string } personTypeCode: { type: string } personTypeName: { type: string } qualScope: { type: string } professionalLevelCode: { type: string } professionalLevelName: { type: string } evaluatorCertNo: { type: string } educationTypeCode: { type: string } educationTypeName: { type: string } educationLevelCode: { type: string } educationLevelName: { type: string } titleCode: { type: string } registerEngineerFlag: { type: integer, format: int32 } publications: { type: string } abilityDeclaration: { type: string } workExperience: { type: string } proofMaterialUrl: { type: string } originFaceUrl: { type: string, description: 原始人像地址(人脸比对基准图) } technicalDirectorFlag: { type: boolean } processControlLeaderFlag: { type: boolean } deptName: { type: string } postName: { type: string } certNames: { type: string } changeCount: { type: integer, format: int32 } resignApplyId: { type: integer, format: int64 } resignAuditStatus: { type: integer, format: int32 } tenantId: { type: integer, format: int64 } SingleResponseOrgPersonnelCO: allOf: - $ref: '#/components/schemas/SingleResponseBase' - type: object properties: data: $ref: '#/components/schemas/OrgPersonnelCO' SingleResponseBigDecimal: allOf: - $ref: '#/components/schemas/SingleResponseBase' - type: object properties: data: type: number format: double description: 人脸相似度(0~1,越大越相似) example: 0.92