You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

10415 lines
272 KiB

{
"openapi": "3.1.0",
"info": {
"title": "职来 API",
"version": "v1"
},
"servers": [
{
"url": "http://localhost",
"description": "Generated server url"
}
],
"tags": [
{
"name": "岗位收藏",
"description": "学生收藏/取消收藏岗位,查看收藏列表"
},
{
"name": "API",
"description": "API 信息入口"
},
{
"name": "评分运营看板",
"description": "企业评分运营看板、评分排名与评分趋势"
},
{
"name": "认证",
"description": "登录、验证码、用户信息"
},
{
"name": "通知",
"description": "站内通知查询、已读管理"
},
{
"name": "双向匹配沟通",
"description": "匹配成功后创建或获取直聊会话(幂等)"
},
{
"name": "企业认证",
"description": "企业认证提交、审核管理"
},
{
"name": "求职者评分体系",
"description": "8 维候选人生成评分、综合分、趋势与企业只读评分卡"
},
{
"name": "投递",
"description": "学生投递、撤回、查询;企业查看和审核投递;时间线"
},
{
"name": "Offer",
"description": "企业录用邀请:创建、发送、接受/拒绝/洽谈、到期失效、提醒与时间线"
},
{
"name": "岗位",
"description": "岗位创建、管理、查询"
},
{
"name": "评价审核",
"description": "评价审核与防刷:待审列表、审核决策、审核历史(仅 ADMIN)"
},
{
"name": "简历版本",
"description": "学生简历版本管理、默认简历、导出任务"
},
{
"name": "双向匹配阈值",
"description": "企业与求职者的匹配阈值配置"
},
{
"name": "消息",
"description": "会话创建、消息发送、已读管理"
},
{
"name": "评分治理",
"description": "求职者评分申诉、审核、回滚与审计"
},
{
"name": "候选人反馈",
"description": "企业对已投递候选人的评价反馈"
},
{
"name": "求职者评分卡",
"description": "求职者评价聚合与评分卡"
},
{
"name": "双向匹配",
"description": "求职者意愿分、企业 HR 适配分、匹配状态"
},
{
"name": "系统",
"description": "健康检查、应用信息"
},
{
"name": "个人资料",
"description": "学生个人资料查询、更新与简历管理"
},
{
"name": "岗位匹配",
"description": "学生查看岗位匹配诊断(确定性规则)"
},
{
"name": "面试",
"description": "面试创建、查看、响应、取消、完成"
},
{
"name": "结构化面试评分",
"description": "企业为已完成面试填写/提交结构化评分,学生查看已提交评分与历史"
},
{
"name": "求职偏好",
"description": "学生求职偏好查询与保存"
},
{
"name": "岗位评价",
"description": "学生对已发布岗位进行评价"
},
{
"name": "企业",
"description": "企业资料创建、查询与更新"
}
],
"paths": {
"/": {
"get": {
"tags": [
"API"
],
"summary": "API 信息",
"description": "返回 API v0.1 基本信息",
"operationId": "index",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/admin/candidate-scoring/appeals": {
"get": {
"tags": [
"评分治理"
],
"summary": "全部申诉列表",
"description": "仅 ADMIN",
"operationId": "listAllAppeals",
"parameters": [
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/admin/candidate-scoring/appeals/{appealId}/decision": {
"post": {
"tags": [
"评分治理"
],
"summary": "审核决定",
"description": "仅 ADMIN;APPROVE/REJECT,REJECT 必须填 reason",
"operationId": "decideAppeal",
"parameters": [
{
"name": "appealId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AppealDecisionRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAppealResponse"
}
}
}
}
}
}
},
"/admin/candidate-scoring/appeals/{appealId}/history": {
"get": {
"tags": [
"评分治理"
],
"summary": "申诉历史",
"description": "本人(脱敏,无 actorUserId)或 ADMIN(全量);此路径的本人放行先于 ADMIN 通用规则",
"operationId": "getAppealHistory",
"parameters": [
{
"name": "appealId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListAppealHistoryItem"
}
}
}
}
}
}
},
"/admin/candidate-scoring/appeals/{appealId}/rollback": {
"post": {
"tags": [
"评分治理"
],
"summary": "执行回滚",
"description": "仅 ADMIN;记录前态+确定性重算+新版本;年 3 次上限",
"operationId": "rollbackAppeal",
"parameters": [
{
"name": "appealId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAppealResponse"
}
}
}
}
}
}
},
"/admin/candidate-scoring/snapshots/{candidateUserId}/{dimension}/{period}/history": {
"get": {
"tags": [
"评分治理"
],
"summary": "快照变更审计",
"description": "仅 ADMIN;按学生+维度+周期查看回滚前后完整变化",
"operationId": "getSnapshotHistory",
"parameters": [
{
"name": "candidateUserId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "dimension",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "period",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListSnapshotHistoryItem"
}
}
}
}
}
}
},
"/admin/companies/verifications": {
"get": {
"tags": [
"企业认证"
],
"summary": "待审核认证列表",
"description": "管理员查看认证申请列表,支持 status/from/to 筛选和分页",
"operationId": "listVerifications",
"parameters": [
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "from",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "to",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/admin/companies/verifications/history": {
"get": {
"tags": [
"企业认证"
],
"summary": "认证审核历史",
"description": "管理员查看某个认证申请的审核历史",
"operationId": "listHistory",
"parameters": [
{
"name": "verificationId",
"in": "query",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
}
},
"/admin/companies/verifications/{id}": {
"get": {
"tags": [
"企业认证"
],
"summary": "认证详情",
"description": "管理员查看认证申请详情",
"operationId": "getDetail",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/admin/companies/verifications/{id}/decision": {
"post": {
"tags": [
"企业认证"
],
"summary": "审核决定",
"description": "管理员通过或拒绝认证申请,拒绝时必须填写原因",
"operationId": "decide_1",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerificationDecisionRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/admin/reviews/history": {
"get": {
"tags": [
"评价审核"
],
"summary": "审核历史",
"description": "仅 ADMIN;分页返回审核结果、审核人、时间与原因",
"operationId": "history",
"parameters": [
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/admin/reviews/pending": {
"get": {
"tags": [
"评价审核"
],
"summary": "待审评价列表",
"description": "仅 ADMIN;分页 + jobId/riskLevel/createdFrom/createdTo 筛选;不返回明文 IP/UA",
"operationId": "pending",
"parameters": [
{
"name": "jobId",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "riskLevel",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "createdFrom",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "createdTo",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/admin/reviews/{reviewId}/decision": {
"post": {
"tags": [
"评价审核"
],
"summary": "评价审核决策",
"description": "仅 ADMIN;仅 PENDING 可审,重复提交 409;决策写入历史与 audit_logs",
"operationId": "decide",
"parameters": [
{
"name": "reviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReviewDecisionRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/admin/scoring/dashboard/overview": {
"get": {
"tags": [
"评分运营看板"
],
"summary": "全局运营概览",
"description": "仅 ADMIN",
"operationId": "getAdminOverview",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAdminDashboardOverviewResponse"
}
}
}
}
}
}
},
"/applications": {
"post": {
"tags": [
"投递"
],
"summary": "投递岗位",
"description": "只能投递 PUBLISHED 状态的岗位,不可重复投递",
"operationId": "apply",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/me": {
"get": {
"tags": [
"投递"
],
"summary": "我的投递列表",
"description": "查看当前学生自己的投递记录,支持 status 筛选和分页",
"operationId": "listMyApplications",
"parameters": [
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{applicationId}/feedback": {
"get": {
"tags": [
"候选人反馈"
],
"summary": "查询候选人反馈",
"description": "该投递的企业或学生可查看",
"operationId": "get_4",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateFeedbackResponse"
}
}
}
}
}
},
"put": {
"tags": [
"候选人反馈"
],
"summary": "修改候选人反馈",
"description": "仅岗位所属企业",
"operationId": "update_4",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CandidateFeedbackRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateFeedbackResponse"
}
}
}
}
}
},
"post": {
"tags": [
"候选人反馈"
],
"summary": "创建候选人反馈",
"description": "仅岗位所属企业;同一投递只能反馈一次",
"operationId": "create",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CandidateFeedbackRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateFeedbackResponse"
}
}
}
}
}
},
"delete": {
"tags": [
"候选人反馈"
],
"summary": "删除候选人反馈",
"description": "仅岗位所属企业",
"operationId": "delete_2",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{applicationId}/interviews": {
"get": {
"tags": [
"面试"
],
"summary": "查询投递的面试列表",
"description": "学生本人或岗位所属企业可查看",
"operationId": "listByApplication",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"面试"
],
"summary": "创建面试邀请",
"description": "企业为投递记录创建面试邀请",
"operationId": "create_4",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InterviewCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{id}": {
"get": {
"tags": [
"投递"
],
"summary": "投递详情",
"description": "查看自己的投递记录详情",
"operationId": "getApplication",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{id}/candidate-interest-score": {
"put": {
"tags": [
"双向匹配"
],
"summary": "提交求职者岗位意愿分",
"description": "仅投递本人(STUDENT);0-100;MATCHED/CLOSED 后不可修改",
"operationId": "submitCandidateInterestScore",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScoreRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{id}/conversation": {
"post": {
"tags": [
"双向匹配沟通"
],
"summary": "创建/获取匹配会话",
"description": "仅 MATCHED 双方可调用;重复调用返回同一会话",
"operationId": "createOrGetConversation",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{id}/hr-suitability-score": {
"put": {
"tags": [
"双向匹配"
],
"summary": "提交企业 HR 适配分",
"description": "仅岗位所属企业;0-100;MATCHED/CLOSED 后不可修改",
"operationId": "submitHrSuitabilityScore",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScoreRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{id}/match": {
"get": {
"tags": [
"双向匹配"
],
"summary": "查询投递匹配状态",
"description": "仅投递求职者或岗位所属企业;不暴露内部路径/事件 ID",
"operationId": "getMatch",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{id}/status": {
"patch": {
"tags": [
"投递"
],
"summary": "更新投递状态(企业)",
"description": "SUBMITTED→VIEWED→INTERVIEW→REJECTED/HIRED",
"operationId": "updateStatus_1",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationStatusRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/applications/{id}/timeline": {
"get": {
"tags": [
"投递"
],
"summary": "投递状态时间线",
"description": "学生本人或岗位所属企业可查看状态变更历史",
"operationId": "timeline_2",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
}
},
"/applications/{id}/withdraw": {
"post": {
"tags": [
"投递"
],
"summary": "撤回投递",
"description": "仅 SUBMITTED/VIEWED 状态可撤回,撤回后不可逆",
"operationId": "withdraw",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/auth/login": {
"post": {
"tags": [
"认证"
],
"summary": "Mock 登录",
"description": "使用手机号+验证码登录,返回 JWT token",
"operationId": "mockLogin",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoginRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/auth/me": {
"get": {
"tags": [
"认证"
],
"summary": "当前用户信息",
"description": "需要 JWT 认证",
"operationId": "me",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/auth/sms/send": {
"post": {
"tags": [
"认证"
],
"summary": "发送短信验证码(Mock)",
"description": "开发环境 Mock:验证码会打印到日志",
"operationId": "sendSmsCode",
"parameters": [
{
"name": "phone",
"in": "query",
"required": true,
"schema": {
"type": "string",
"minLength": 1,
"pattern": "[0-9]{11}"
}
},
{
"name": "purpose",
"in": "query",
"required": false,
"schema": {
"type": "string",
"default": "login"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringString"
}
}
}
}
}
}
},
"/companies/me": {
"get": {
"tags": [
"企业"
],
"summary": "查询当前企业资料",
"description": "返回当前登录用户绑定的企业资料,未绑定企业返回 404",
"operationId": "getMyCompany",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"企业"
],
"summary": "更新企业资料",
"description": "仅更新传入的非 null 字段;未绑定企业时返回 404",
"operationId": "updateMyCompany",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompanyUpdateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"企业"
],
"summary": "创建企业资料",
"description": "仅 COMPANY 角色可调用;已存在时返回 409",
"operationId": "createMyCompany",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompanyCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/companies/me/match-rule": {
"get": {
"tags": [
"双向匹配阈值"
],
"summary": "查询企业匹配阈值",
"description": "未配置返回默认 60",
"operationId": "getCompanyRule",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"双向匹配阈值"
],
"summary": "更新企业匹配阈值",
"description": "requiredCandidateScore 0-100;首次更新创建配置",
"operationId": "updateCompanyRule",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompanyMatchRuleRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/companies/me/verification": {
"get": {
"tags": [
"企业认证"
],
"summary": "查询企业认证状态",
"description": "企业查询自己的认证状态和历史",
"operationId": "getMyVerification",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"企业认证"
],
"summary": "提交企业认证",
"description": "企业提交认证材料(营业执照等),只能提交自己的认证",
"operationId": "submit",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerificationSubmitRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/companies/{companyId}": {
"get": {
"tags": [
"企业"
],
"summary": "查询企业公开详情",
"description": "匿名可访问,仅返回 6 个公开字段",
"operationId": "getPublicCompany",
"parameters": [
{
"name": "companyId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCompanyPublicView"
}
}
}
}
}
}
},
"/companies/{companyId}/jobs": {
"get": {
"tags": [
"企业"
],
"summary": "查询企业公开岗位列表",
"description": "匿名可访问,仅返回 PUBLISHED 岗位",
"operationId": "getCompanyJobs",
"parameters": [
{
"name": "companyId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
},
{
"name": "sort",
"in": "query",
"required": false,
"schema": {
"type": "string",
"default": "latest"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/company/applications": {
"get": {
"tags": [
"投递"
],
"summary": "查看岗位投递列表(企业)",
"description": "企业查看自己发布的某个岗位收到的投递,支持 status 筛选和分页",
"operationId": "listCompanyApplications",
"parameters": [
{
"name": "jobId",
"in": "query",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/company/candidates": {
"get": {
"tags": [
"投递"
],
"summary": "企业候选人列表",
"description": "跨岗位查询本企业所有候选人投递,支持按岗位、状态、关键词筛选,支持分页和排序",
"operationId": "listCompanyCandidates",
"parameters": [
{
"name": "jobId",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "keyword",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "sort",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "order",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateListResponse"
}
}
}
}
}
}
},
"/company/candidates/{applicationId}": {
"get": {
"tags": [
"投递"
],
"summary": "企业候选人详情",
"description": "查看投递详情及候选人公开资料,只能查看本企业岗位下的投递",
"operationId": "getCompanyCandidateDetail",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateDetailView"
}
}
}
}
}
}
},
"/company/candidates/{applicationId}/scoring": {
"get": {
"tags": [
"求职者评分体系"
],
"summary": "企业候选人评分卡",
"description": "仅岗位所属企业;只读,仅返回 applicationId/overallScore/status/dimensions/generatedAt/rulesVersion,不泄露候选人敏感信息",
"operationId": "getCompanyScoring",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCompanyCandidateScoringResponse"
}
}
}
}
}
}
},
"/company/scoring/dashboard/candidate-rankings": {
"get": {
"tags": [
"评分运营看板"
],
"summary": "候选人评分排名",
"description": "仅 COMPANY;按学生去重;overallScore DESC, applicationId DESC",
"operationId": "getCandidateRankings",
"parameters": [
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateRankingListResponse"
}
}
}
}
}
}
},
"/company/scoring/dashboard/candidate-rankings/{applicationId}": {
"get": {
"tags": [
"评分运营看板"
],
"summary": "单候选人评分排名明细",
"description": "仅 COMPANY;跨企业 403/8004",
"operationId": "getCandidateRanking",
"parameters": [
{
"name": "applicationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateRankingDetailResponse"
}
}
}
}
}
}
},
"/company/scoring/dashboard/job-rankings": {
"get": {
"tags": [
"评分运营看板"
],
"summary": "岗位评分排名",
"description": "仅 COMPANY;avgRating DESC, jobId DESC;审核通过评价",
"operationId": "getJobRankings",
"parameters": [
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseJobRankingListResponse"
}
}
}
}
}
}
},
"/company/scoring/dashboard/job-rankings/{jobId}": {
"get": {
"tags": [
"评分运营看板"
],
"summary": "单岗位评分排名",
"description": "仅 COMPANY;跨企业 403/8004",
"operationId": "getJobRanking",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseJobRankingItem"
}
}
}
}
}
}
},
"/company/scoring/dashboard/overview": {
"get": {
"tags": [
"评分运营看板"
],
"summary": "企业评分运营概览",
"description": "仅 COMPANY;只返回本企业数据",
"operationId": "getOverview_1",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseDashboardOverviewResponse"
}
}
}
}
}
}
},
"/company/scoring/dashboard/trend": {
"get": {
"tags": [
"评分运营看板"
],
"summary": "企业评分趋势",
"description": "仅 COMPANY;months 1–24",
"operationId": "getTrend_2",
"parameters": [
{
"name": "months",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 6
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseScoreTrendResponse"
}
}
}
}
}
}
},
"/conversations": {
"get": {
"tags": [
"消息"
],
"summary": "会话列表",
"description": "当前用户参与的所有会话",
"operationId": "listConversations",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"消息"
],
"summary": "创建/获取会话",
"description": "创建或返回与另一用户的 DIRECT 会话",
"operationId": "createConversation",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateConversationRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/conversations/messages": {
"post": {
"tags": [
"消息"
],
"summary": "发送消息",
"description": "在会话中发送消息,仅成员可发送",
"operationId": "sendMessage",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SendMessageRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/conversations/{id}": {
"get": {
"tags": [
"消息"
],
"summary": "会话详情",
"description": "查看会话信息和未读数",
"operationId": "getConversation",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/conversations/{id}/messages": {
"get": {
"tags": [
"消息"
],
"summary": "消息列表",
"description": "分页查询会话消息,倒序;仅成员可查看",
"operationId": "listMessages",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/conversations/{id}/read": {
"post": {
"tags": [
"消息"
],
"summary": "标记已读",
"description": "将当前会话所有消息标记为已读",
"operationId": "markRead_1",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/health": {
"get": {
"tags": [
"系统"
],
"summary": "应用健康检查",
"description": "返回应用及依赖服务状态",
"operationId": "health",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/health/details": {
"get": {
"tags": [
"health-controller"
],
"operationId": "healthDetails",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/info": {
"get": {
"tags": [
"系统"
],
"summary": "应用信息",
"description": "返回应用版本、运行时信息",
"operationId": "info",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/interviews/me": {
"get": {
"tags": [
"面试"
],
"summary": "我的面试列表",
"description": "查看当前用户相关的面试,支持 status/from/to 筛选和分页",
"operationId": "listMyInterviews",
"parameters": [
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "from",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "to",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/interviews/{interviewId}": {
"get": {
"tags": [
"面试"
],
"summary": "面试详情",
"description": "学生本人或企业可查看面试详情",
"operationId": "get_3",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"面试"
],
"summary": "修改面试",
"description": "企业修改面试时间、地点等信息,仅 SCHEDULED/CONFIRMED 状态可修改",
"operationId": "update_3",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InterviewUpdateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/interviews/{interviewId}/cancel": {
"post": {
"tags": [
"面试"
],
"summary": "取消面试",
"description": "企业取消已安排的面试",
"operationId": "cancel",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InterviewCancelRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/interviews/{interviewId}/complete": {
"post": {
"tags": [
"面试"
],
"summary": "完成面试",
"description": "企业在面试时间结束后将面试标记为完成",
"operationId": "complete",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/interviews/{interviewId}/respond": {
"post": {
"tags": [
"面试"
],
"summary": "响应面试邀请",
"description": "学生接受、拒绝或申请改期",
"operationId": "respond",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InterviewRespondRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/interviews/{interviewId}/timeline": {
"get": {
"tags": [
"面试"
],
"summary": "面试状态时间线",
"description": "查看面试状态变更历史",
"operationId": "timeline_1",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
}
},
"/jobs": {
"get": {
"tags": [
"岗位"
],
"summary": "查询已发布岗位列表",
"description": "仅返回 PUBLISHED 岗位,支持关键词、城市、用工类型、薪资筛选和分页",
"operationId": "listJobs",
"parameters": [
{
"name": "keyword",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "city",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "employmentType",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "salaryMin",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "salaryMax",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"岗位"
],
"summary": "创建岗位",
"description": "仅企业账号可调用,新岗位默认 DRAFT 状态",
"operationId": "createJob",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JobCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/compare": {
"get": {
"tags": [
"岗位评价"
],
"summary": "岗位对比",
"description": "公开访问;ids 为 2-3 个公开岗位;返回公开岗位字段与公开评分",
"operationId": "compare_1",
"parameters": [
{
"name": "ids",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
}
},
"/jobs/favorites": {
"get": {
"tags": [
"岗位收藏"
],
"summary": "我的收藏列表",
"description": "仅 STUDENT;分页,按收藏时间倒序",
"operationId": "listFavorites",
"parameters": [
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/filters": {
"get": {
"tags": [
"岗位"
],
"summary": "岗位筛选选项",
"description": "返回当前 PUBLISHED 岗位可用的城市、用工类型和薪资范围",
"operationId": "getFilters",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/public/{jobId}": {
"get": {
"tags": [
"岗位"
],
"summary": "查询岗位详情(公开)",
"description": "仅返回 PUBLISHED 岗位详情;CLOSED 也可查看详情",
"operationId": "getPublicJob",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/search": {
"get": {
"tags": [
"岗位"
],
"summary": "岗位高级搜索",
"description": "仅返回 PUBLISHED 岗位,支持关键词、城市、用工类型、薪资、公司筛选、排序和分页",
"operationId": "searchJobs",
"parameters": [
{
"name": "keyword",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "city",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "employmentType",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "salaryMin",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "salaryMax",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "companyId",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "sort",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/{jobId}": {
"get": {
"tags": [
"岗位"
],
"summary": "查询岗位详情",
"description": "企业可查看自己管理的岗位详情",
"operationId": "getJob",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"岗位"
],
"summary": "更新岗位",
"description": "仅岗位所属企业可修改",
"operationId": "updateJob",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JobUpdateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/{jobId}/favorite": {
"post": {
"tags": [
"岗位收藏"
],
"summary": "收藏岗位",
"description": "仅 STUDENT;仅 PUBLISHED;幂等",
"operationId": "favorite",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"delete": {
"tags": [
"岗位收藏"
],
"summary": "取消收藏",
"description": "仅 STUDENT;幂等,未收藏也返回 200",
"operationId": "unfavorite",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/{jobId}/match": {
"get": {
"tags": [
"岗位匹配"
],
"summary": "岗位匹配诊断",
"description": "仅 STUDENT;返回匹配分、硬性条件、缺口和说明",
"operationId": "diagnose",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/{jobId}/personalized-review-score": {
"get": {
"tags": [
"student-review-weight-controller"
],
"operationId": "getPersonalizedScore",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponsePersonalizedScoreResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/jobs/{jobId}/competition-ranking": {
"get": {
"tags": [
"同岗位竞争力排名"
],
"summary": "同岗位竞争力排名",
"description": "仅 STUDENT 且已投递该(PUBLISHED)岗位的学生可查看。返回本人排名/综合分/百分位/维度/缺口及匿名 Top 5。COMPANY/ADMIN 或未投递学生返回 403;岗位不存在或非 PUBLISHED 返回 404。身份仅取自 JWT,不接收 userId/studentUserId/candidateId 参数。topCandidates 每项仅含 rank 与 overallScore,不含任何身份字段(studentUserId/candidateId/name/school/phone/email/resumeUrl/applicationId)。cohort 排除 WITHDRAWN/REJECTED 投递。",
"operationId": "getCompetitionRanking",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"400": {
"description": "jobId 为空或 <=0",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色或学生未投递该岗位",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"404": {
"description": "岗位不存在或岗位状态非 PUBLISHED",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
},
"security": [
{
"bearerAuth": []
}
]
}
},
"/jobs/{jobId}/reviews": {
"get": {
"tags": [
"岗位评价"
],
"summary": "查询岗位评价列表",
"description": "公开访问;仅返回 PUBLISHED 评价,分页;每条含八维评分",
"operationId": "list_2",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"岗位评价"
],
"summary": "创建岗位评价",
"description": "仅 STUDENT;同一学生对同一岗位只能评价一次",
"operationId": "create_3",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JobReviewCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/{jobId}/reviews/summary": {
"get": {
"tags": [
"岗位评价"
],
"summary": "评分汇总",
"description": "公开访问;统计 PUBLISHED 评价的平均分、分布和热门标签",
"operationId": "summary",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/{jobId}/reviews/{reviewId}": {
"get": {
"tags": [
"岗位评价"
],
"summary": "岗位评价详情",
"description": "公开访问;返回单条 PUBLISHED 评价与八维评分",
"operationId": "get_2",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "reviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"岗位评价"
],
"summary": "修改评价",
"description": "仅评价本人可以修改",
"operationId": "update_2",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "reviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JobReviewUpdateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"delete": {
"tags": [
"岗位评价"
],
"summary": "删除评价",
"description": "仅评价本人可以删除",
"operationId": "delete_1",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "reviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/jobs/{jobId}/status": {
"patch": {
"tags": [
"岗位"
],
"summary": "发布/关闭岗位",
"description": "DRAFT→PUBLISHED,PUBLISHED→CLOSED;禁止非法回退",
"operationId": "updateStatus",
"parameters": [
{
"name": "jobId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JobStatusRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/notifications": {
"get": {
"tags": [
"通知"
],
"summary": "通知列表",
"description": "当前用户的通知,分页,按时间倒序",
"operationId": "list_3",
"parameters": [
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/notifications/read-all": {
"post": {
"tags": [
"通知"
],
"summary": "全部已读",
"description": "标记当前用户全部通知已读(幂等)",
"operationId": "markAllRead",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/notifications/unread-count": {
"get": {
"tags": [
"通知"
],
"summary": "未读数",
"description": "当前用户未读通知数",
"operationId": "unreadCount",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/notifications/{id}/read": {
"post": {
"tags": [
"通知"
],
"summary": "标记已读",
"description": "标记单条通知已读(幂等)",
"operationId": "markRead",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers": {
"get": {
"tags": [
"Offer"
],
"summary": "Offer 列表",
"description": "候选人查看收到的、企业查看发出的 Offer;支持 status、applicationId 筛选与分页",
"operationId": "list_1",
"parameters": [
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "applicationId",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"Offer"
],
"summary": "创建 Offer",
"description": "仅企业账号;投递存在、岗位属于本企业、投递状态可发、无有效 Offer;默认 DRAFT",
"operationId": "create_2",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OfferCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers/compare": {
"get": {
"tags": [
"Offer"
],
"summary": "Offer 比较",
"description": "仅候选人本人;比较 2-5 个非 DRAFT 的 Offer",
"operationId": "compare",
"parameters": [
{
"name": "ids",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
}
},
"/offers/statistics": {
"get": {
"tags": [
"Offer"
],
"summary": "Offer 统计",
"description": "仅企业;统计本企业 Offer 状态分布、接受率、平均响应时间",
"operationId": "statistics",
"parameters": [
{
"name": "months",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 6
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers/{id}": {
"get": {
"tags": [
"Offer"
],
"summary": "Offer 详情",
"description": "仅目标候选人、所属企业可访问;其他账号返回无权限错误",
"operationId": "get_1",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"Offer"
],
"summary": "修改 Offer",
"description": "仅所属企业、仅 DRAFT 状态可修改;其余状态返回业务错误",
"operationId": "update_1",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OfferUpdateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers/{id}/counter-offers": {
"get": {
"tags": [
"Offer"
],
"summary": "还价列表",
"description": "候选人查看本人 Offer 的还价、企业查看本企业 Offer 的还价",
"operationId": "listCounterOffers",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"Offer"
],
"summary": "发起还价",
"description": "仅候选人本人;仅 SENT/NEGOTIATING 可发起;SENT 时自动进入 NEGOTIATING",
"operationId": "createCounterOffer",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CounterOfferCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers/{id}/counter-offers/{coId}/accept": {
"patch": {
"tags": [
"Offer"
],
"summary": "接受还价",
"description": "仅所属企业;接受后更新 Offer 薪资/入职日期并变为 ACCEPTED",
"operationId": "acceptCounterOffer",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "coId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers/{id}/counter-offers/{coId}/reject": {
"patch": {
"tags": [
"Offer"
],
"summary": "拒绝还价",
"description": "仅所属企业;拒绝后 Offer 保持 NEGOTIATING",
"operationId": "rejectCounterOffer",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "coId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers/{id}/remind": {
"post": {
"tags": [
"Offer"
],
"summary": "手动提醒",
"description": "仅所属企业;仅 SENT/NEGOTIATING 可提醒;相同提醒不重复创建",
"operationId": "remind",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers/{id}/status": {
"patch": {
"tags": [
"Offer"
],
"summary": "Offer 状态变更",
"description": "DRAFT→SENT 企业;SENT/NEGOTIATING→ACCEPTED/REJECTED/NEGOTIATING 候选人;重复提交幂等",
"operationId": "changeStatus",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OfferStatusRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/offers/{id}/timeline": {
"get": {
"tags": [
"Offer"
],
"summary": "Offer 状态时间线",
"description": "完整状态变更历史,含操作者、原因与请求 ID",
"operationId": "timeline",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
}
},
"/profile/me": {
"get": {
"tags": [
"个人资料"
],
"summary": "查询当前学生资料",
"description": "查询当前登录学生(仅 STUDENT 角色)自己的学生资料。身份仅从 JWT/SecurityContext 获取,不接受 userId、studentUserId 等请求参数;本接口无 Path、Query、Body 参数。若尚未创建个人资料:HTTP 200,data 为空对象 {}(非 null),且不会自动创建数据库记录。当前未设置接口级限流。",
"operationId": "getMyProfile",
"responses": {
"200": {
"description": "成功;有资料返回资料对象,无资料返回空对象 {};message=ok",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponseStudentProfileResponse"
},
"examples": {
"success-with-data": {
"summary": "有资料",
"description": "success-with-data",
"value": {
"code": 200,
"message": "ok",
"data": {
"id": 1,
"userId": 2,
"realName": "张三",
"education": "本科",
"school": "某某大学",
"graduationYear": 2026,
"resumeUrl": "/uploads/resumes/2/resume.pdf",
"skills": "[Java, Spring Boot]",
"createdAt": "2026-08-24T10:00:00"
},
"timestamp": "2026-08-24T10:00:00Z"
}
}
}
}
}
},
"401": {
"description": "未登录、Token 缺失/非法/过期;运行时实际返回 code=401、message=not authenticated",
"content": {
"application/json": {
"examples": {
"unauthorized": {
"description": "unauthorized",
"value": {
"code": 401,
"message": "not authenticated",
"timestamp": "2026-08-24T10:00:00Z"
}
}
}
}
}
},
"403": {
"description": "已登录但不是 STUDENT 角色(COMPANY/ADMIN);code=2002、message=forbidden",
"content": {
"application/json": {
"examples": {
"forbidden": {
"description": "forbidden",
"value": {
"code": 2002,
"message": "forbidden",
"data": null,
"timestamp": "2026-08-24T10:00:00Z"
}
}
}
}
}
}
},
"security": [
{
"bearerAuth": []
}
]
},
"put": {
"tags": [
"个人资料"
],
"summary": "更新学生资料",
"description": "仅更新传入的非 null 字段;不存在则自动创建",
"operationId": "updateMyProfile",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StudentProfileUpdateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/profile/me/candidate-percentile": {
"get": {
"tags": [
"求职者评分卡"
],
"summary": "查询百分位",
"description": "仅 STUDENT;返回自己在候选人中的评分百分位",
"operationId": "getPercentile",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidatePercentileResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/profile/me/candidate-score-card": {
"get": {
"tags": [
"求职者评分卡"
],
"summary": "查询求职者评分卡",
"description": "仅 STUDENT;返回自己的评价聚合卡",
"operationId": "getScoreCard",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateScoreCardResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/profile/me/candidate-score-trend": {
"get": {
"tags": [
"求职者评分卡"
],
"summary": "查询评分趋势",
"description": "仅 STUDENT;返回最近月份的反馈趋势",
"operationId": "getTrend_1",
"parameters": [
{
"name": "months",
"in": "query",
"description": "统计月数,默认 6,范围 1-24",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 6
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateScoreTrendResponse"
}
}
}
},
"400": {
"description": "参数不合法",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateScoreTrendResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/profile/me/candidate-scoring": {
"get": {
"tags": [
"求职者评分体系"
],
"summary": "综合评分卡",
"description": "仅 STUDENT;返回本人 8 维评分、综合分、权重与状态",
"operationId": "getOverview",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateScoringOverviewResponse"
}
}
}
}
}
}
},
"/profile/me/candidate-scoring/appeals": {
"get": {
"tags": [
"评分治理"
],
"summary": "我的申诉列表",
"description": "仅 STUDENT 本人",
"operationId": "listMyAppeals",
"parameters": [
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "size",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"评分治理"
],
"summary": "提交评分申诉",
"description": "仅 STUDENT 本人;同一学生+维度+周期 PENDING/APPROVED 唯一",
"operationId": "createAppeal",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateAppealRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAppealResponse"
}
}
}
}
}
}
},
"/profile/me/candidate-scoring/appeals/{appealId}": {
"get": {
"tags": [
"评分治理"
],
"summary": "申诉详情",
"description": "本人或 ADMIN",
"operationId": "getAppeal",
"parameters": [
{
"name": "appealId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAppealResponse"
}
}
}
}
}
}
},
"/profile/me/candidate-scoring/appeals/{appealId}/cancel": {
"post": {
"tags": [
"评分治理"
],
"summary": "撤销申诉",
"description": "仅本人;仅 PENDING 可撤销",
"operationId": "cancelAppeal",
"parameters": [
{
"name": "appealId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAppealResponse"
}
}
}
}
}
}
},
"/profile/me/candidate-scoring/dimensions/{dimension}": {
"get": {
"tags": [
"求职者评分体系"
],
"summary": "单维度明细",
"description": "仅 STUDENT;返回某维度分项、归因与数据源;非法 dimension 返回 400",
"operationId": "getDimensionDetail",
"parameters": [
{
"name": "dimension",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseDimensionScoreDetailResponse"
}
}
}
}
}
}
},
"/profile/me/candidate-scoring/trend": {
"get": {
"tags": [
"求职者评分体系"
],
"summary": "评分趋势",
"description": "仅 STUDENT;基于快照按月返回综合分与维度分(months 1-24)",
"operationId": "getTrend",
"parameters": [
{
"name": "months",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"default": 6
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseCandidateScoringTrendResponse"
}
}
}
}
}
}
},
"/profile/me/career-progress": {
"get": {
"tags": [
"求职进度"
],
"summary": "统一求职进度聚合",
"description": "只读学生端接口:汇总当前学生的投递分页、岗位摘要、下一场面试、最近已提交结构化面试评分、可展示 Offer、同岗位竞争力排名,以及待办/通知计数(仅计数,不含通知标题/正文/详情)。仅 STUDENT 可访问,身份仅从 JWT/SecurityContext 获取,不接受 userId/studentUserId/candidateId 参数;COMPANY/ADMIN 返回 403/2002,未登录返回 401,参数非法返回 400/1001。通知详情仍由既有 /notifications 提供。",
"operationId": "getCareerProgress",
"parameters": [
{
"name": "page",
"in": "query",
"required": false,
"schema": { "type": "integer", "format": "int32", "default": 0 }
},
{
"name": "size",
"in": "query",
"required": false,
"schema": { "type": "integer", "format": "int32", "default": 20 }
},
{
"name": "status",
"in": "query",
"required": false,
"schema": {
"type": "string",
"enum": ["SUBMITTED", "VIEWED", "INTERVIEW", "HIRED", "REJECTED", "WITHDRAWN"]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponseCareerProgressResponse" } } }
},
"400": {
"description": "page/size/status 参数非法",
"content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } }
},
"401": {
"description": "未登录",
"content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } }
},
"403": {
"description": "非 STUDENT 角色",
"content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } }
}
},
"security": [
{ "bearerAuth": [] }
]
}
},
"/profile/me/deletion": {
"get": {
"tags": [
"account-deletion-controller"
],
"operationId": "getStatus",
"parameters": [],
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAccountDeletionResponse"
}
}
}
},
"401": {
"description": "error",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
},
"post": {
"tags": [
"account-deletion-controller"
],
"operationId": "initiate",
"parameters": [],
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAccountDeletionResponse"
}
}
}
},
"401": {
"description": "error",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "error",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"409": {
"description": "error",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/profile/me/deletion/cancel": {
"post": {
"tags": [
"account-deletion-controller"
],
"operationId": "cancel",
"parameters": [],
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseAccountDeletionResponse"
}
}
}
},
"401": {
"description": "error",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "error",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"409": {
"description": "error",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/profile/me/data-export-tasks": {
"get": {
"tags": [
"personal-data-export-controller"
],
"summary": "查询个人数据导出任务列表",
"description": "仅本人;按创建时间倒序分页;status 可选:PENDING/PROCESSING/COMPLETED/FAILED/EXPIRED/CANCELLED",
"operationId": "listDataExportTasks",
"parameters": [
{ "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } },
{ "name": "size", "in": "query", "required": false, "schema": { "type": "integer", "default": 20 } },
{ "name": "status", "in": "query", "required": false, "schema": { "type": "string" } }
],
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": { "$ref": "#/components/schemas/ApiResponsePageResponseDataExportTaskResponse" }
}
}
},
"401": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"409": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
},
"post": {
"tags": [
"personal-data-export-controller"
],
"summary": "创建个人数据导出任务",
"description": "异步生成 ZIP;同 idempotencyKey 重放返回原任务;注销 PENDING/COMPLETED 禁止创建",
"operationId": "createDataExportTask",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": { "$ref": "#/components/schemas/CreateDataExportRequest" }
}
},
"required": false
},
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": { "$ref": "#/components/schemas/ApiResponseDataExportTaskResponse" }
}
}
},
"401": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"409": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/profile/me/data-export-tasks/{taskId}": {
"get": {
"tags": [
"personal-data-export-controller"
],
"summary": "查询个人数据导出任务详情",
"description": "仅本人;不暴露 storageKey 与内部字段",
"operationId": "getDataExportTask",
"parameters": [
{ "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }
],
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": { "$ref": "#/components/schemas/ApiResponseDataExportTaskResponse" }
}
}
},
"401": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"404": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/profile/me/data-export-tasks/{taskId}/download": {
"get": {
"tags": [
"personal-data-export-controller"
],
"summary": "下载个人数据导出 ZIP",
"description": "仅本人且 COMPLETED 未过期;attachment;需 JWT",
"operationId": "downloadDataExportTask",
"parameters": [
{ "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }
],
"responses": {
"200": {
"description": "success",
"content": {
"application/zip": {
"schema": { "type": "string", "format": "binary" }
}
}
},
"401": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"409": { "description": "error", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/profile/me/match-rule": {
"get": {
"tags": [
"双向匹配阈值"
],
"summary": "查询学生匹配阈值",
"description": "未配置返回默认 60",
"operationId": "getStudentRule",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"双向匹配阈值"
],
"summary": "更新学生匹配阈值",
"description": "requiredHrScore 0-100;首次更新创建配置",
"operationId": "updateStudentRule",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StudentMatchRuleRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/profile/me/preferences": {
"get": {
"tags": [
"求职偏好"
],
"summary": "查询求职偏好",
"description": "仅 STUDENT;无记录时返回空偏好对象",
"operationId": "getPreferences",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"求职偏好"
],
"summary": "保存求职偏好",
"description": "仅 STUDENT;upsert,完全替换传入字段",
"operationId": "savePreferences",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StudentPreferenceRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/profile/me/privacy": {
"get": {
"tags": [
"privacy-settings-controller"
],
"operationId": "getMyPrivacySettings",
"parameters": [],
"responses": {
"200": {
"description": "成功;无记录时返回默认对象(PRIVATE/contactVisible=false/version=0)",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponsePrivacySettingsResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
},
"put": {
"tags": [
"privacy-settings-controller"
],
"operationId": "updateMyPrivacySettings",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivacySettingsUpdateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "成功;返回更新后的隐私设置对象",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponsePrivacySettingsResponse"
}
}
}
},
"400": {
"description": "请求体校验失败(缺少必填字段或非法枚举)",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"409": {
"description": "乐观锁版本冲突(9201)",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/profile/me/resume": {
"get": {
"tags": [
"个人资料"
],
"summary": "下载简历",
"description": "下载当前学生上传的简历文件,仅 STUDENT 角色",
"operationId": "downloadResume",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"type": "string",
"format": "byte"
}
}
}
}
}
},
"post": {
"tags": [
"个人资料"
],
"summary": "上传简历",
"description": "仅 STUDENT 角色;PDF/DOC/DOCX,≤10MB;上传新简历时替换旧文件",
"operationId": "uploadResume",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary"
}
},
"required": [
"file"
]
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"delete": {
"tags": [
"个人资料"
],
"summary": "删除简历",
"description": "删除当前学生的简历文件并清空 resumeUrl,仅 STUDENT 角色",
"operationId": "deleteResume",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/profile/me/resume-versions": {
"get": {
"tags": [
"简历版本"
],
"summary": "简历版本列表",
"description": "本人 ACTIVE 版本,version_no 倒序",
"operationId": "list",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListMapStringObject"
}
}
}
}
}
},
"post": {
"tags": [
"简历版本"
],
"summary": "创建简历版本",
"description": "仅本人(STUDENT);PDF/DOC/DOCX ≤10MB;可附版本名",
"operationId": "create_1",
"parameters": [
{
"name": "name",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary"
}
},
"required": [
"file"
]
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/profile/me/resume-versions/{id}": {
"get": {
"tags": [
"简历版本"
],
"summary": "简历版本详情",
"description": "仅本人可查看;他人 403,不存在 404",
"operationId": "get",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"put": {
"tags": [
"简历版本"
],
"summary": "修改简历版本",
"description": "本人;可选重命名 + 可选替换文件(替换时删除旧文件)",
"operationId": "update",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "name",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
},
"delete": {
"tags": [
"简历版本"
],
"summary": "删除简历版本",
"description": "默认版本需先设其他默认;导出进行中不可删;删除文件并移除记录",
"operationId": "delete",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/profile/me/resume-versions/{id}/default": {
"post": {
"tags": [
"简历版本"
],
"summary": "设为默认简历",
"description": "同用户最多一个默认;已默认幂等;并发冲突 409",
"operationId": "setDefault",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/profile/me/resume-versions/{id}/export": {
"post": {
"tags": [
"简历版本"
],
"summary": "创建简历导出任务",
"description": "异步复制该版本文件到导出目录;返回任务状态",
"operationId": "createExportTask",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/profile/me/review-weights": {
"get": {
"tags": [
"student-review-weight-controller"
],
"operationId": "getMyWeights",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseReviewWeightResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
},
"put": {
"tags": [
"student-review-weight-controller"
],
"operationId": "saveWeights",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SaveWeightRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseReviewWeightResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非 STUDENT 角色",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/resume-export-tasks/{taskId}": {
"get": {
"tags": [
"简历版本"
],
"summary": "导出任务状态",
"description": "仅本人可查询;SUCCESS 含输出文件,FAILED 含失败原因",
"operationId": "getExportTask",
"parameters": [
{
"name": "taskId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseMapStringObject"
}
}
}
}
}
}
},
"/resume-export-tasks/{taskId}/download": {
"get": {
"tags": [
"简历版本"
],
"summary": "下载导出产物",
"description": "仅本人且任务 SUCCESS 可下载;attachment;不暴露内部路径",
"operationId": "downloadExportTask",
"parameters": [
{
"name": "taskId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"type": "string",
"format": "byte"
}
}
}
}
}
}
},
"/review-weight-templates": {
"get": {
"tags": [
"student-review-weight-controller"
],
"operationId": "getTemplates",
"responses": {
"200": {
"description": "OK",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListWeightTemplateResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/interviews/{interviewId}/score": {
"put": {
"tags": [
"结构化面试评分"
],
"summary": "保存评分草稿",
"description": "企业 owner 为已完成的面试保存/更新草稿;草稿阶段五个维度可为空;overallScore 由服务端计算;SUBMITTED 后再次 PUT 返回 409/9503",
"operationId": "saveInterviewScore",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InterviewScoreSaveRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseInterviewScoreResponse"
}
}
}
},
"400": {
"description": "非法维度或推荐值",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非企业/跨企业/非岗位 owner",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"404": {
"description": "面试不存在 8401",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"409": {
"description": "未完成 9502 / 已提交 9503 / 并发冲突 9501",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
},
"get": {
"tags": [
"结构化面试评分"
],
"summary": "查看评分",
"description": "企业 owner 可看 DRAFT/SUBMITTED;目标学生仅可看 SUBMITTED;无评分返回 404/9504",
"operationId": "getInterviewScore",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseInterviewScoreResponse"
}
}
}
},
"400": {
"description": "请求体校验失败",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非目标学生 / 跨企业 / 非岗位 owner / ADMIN",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"404": {
"description": "无评分 9504 / 面试不存在 8401",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"409": {
"description": "未完成 9502",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/interviews/{interviewId}/score/submit": {
"post": {
"tags": [
"结构化面试评分"
],
"summary": "提交评分",
"description": "将 DRAFT 提交为 SUBMITTED,提交后不可逆;并发冲突 409;重复提交幂等返回原评分",
"operationId": "submitInterviewScore",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseInterviewScoreResponse"
}
}
}
},
"400": {
"description": "缺维度 1001",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非企业/跨企业/非岗位 owner",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"404": {
"description": "面试不存在 8401",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"409": {
"description": "未完成 9502 / 并发冲突 9501",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/interviews/{interviewId}/score/history": {
"get": {
"tags": [
"结构化面试评分"
],
"summary": "评分历史",
"description": "企业 owner 可查看全部历史;目标学生仅在 SUBMITTED 后可见;无历史返回 200 空数组;不返回内部用户标识",
"operationId": "getInterviewScoreHistory",
"parameters": [
{
"name": "interviewId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "success",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponseListInterviewScoreHistoryItem"
}
}
}
},
"401": {
"description": "未登录",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"403": {
"description": "非目标学生 / 跨企业 / 非岗位 owner / ADMIN",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"404": {
"description": "面试不存在 8401",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"409": {
"description": "未完成 9502",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/reports": {
"post": {
"tags": ["举报与屏蔽"],
"summary": "提交举报",
"description": "targetType=USER 必填 targetUserId;MESSAGE 必填 messageId;reportedUserId 由服务端推导。同 reporter+idempotencyKey+相同请求体返回原举报 200;不同请求体 409/9606;同目标同分类已有 PENDING 409/9603。限流:每用户每小时 10 次,超限 429/9609。",
"operationId": "createReport",
"security": [{ "bearerAuth": [] }],
"requestBody": {
"content": {
"application/json": {
"schema": { "$ref": "#/components/schemas/CreateReportRequest" }
}
},
"required": true
},
"responses": {
"200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponseReportResponse" } } } },
"400": { "description": "BAD_REQUEST(1001)/举报自己 9602/理由缺失 9607", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "无权访问消息(2002,不泄露消息是否存在)", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"409": { "description": "重复举报 9603 / 幂等冲突 9606", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"429": { "description": "频率超限 9609", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/reports/me": {
"get": {
"tags": ["举报与屏蔽"],
"summary": "我的举报列表",
"description": "仅返回当前用户创建的举报;身份来自 JWT;不返回举报人内部信息/phone/email/passwordHash/resumeUrl/消息全文;支持 status/page/size。",
"operationId": "listMyReports",
"security": [{ "bearerAuth": [] }],
"parameters": [
{ "name": "status", "in": "query", "required": false, "schema": { "type": "string" } },
{ "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } },
{ "name": "size", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 20 } }
],
"responses": {
"200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponsePageResponseReportResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/reports/{id}": {
"get": {
"tags": ["举报与屏蔽"],
"summary": "举报详情(本人/ADMIN)",
"description": "当前举报人本人或 ADMIN 可查看;其他 403/2002;非 ADMIN 不显示举报人内部 ID/手机号/邮箱;MESSAGE 仅返回脱敏 messagePreview。",
"operationId": "getReportDetail",
"security": [{ "bearerAuth": [] }],
"parameters": [
{ "name": "id", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }
],
"responses": {
"200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponseReportResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "非本人非 ADMIN(2002)", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"404": { "description": "举报不存在(9601)", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/blocks/{blockedUserId}": {
"put": {
"tags": ["举报与屏蔽"],
"summary": "屏蔽用户",
"description": "屏蔽自己 400/9608;目标不存在复用用户不存在错误码;已存在返回 200 不新增;不影响系统通知/投递/Offer/面试/评分/评价。",
"operationId": "blockUser",
"security": [{ "bearerAuth": [] }],
"parameters": [
{ "name": "blockedUserId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }
],
"responses": {
"200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponseBlockRelationResponse" } } } },
"400": { "description": "屏蔽自己 9608", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
},
"delete": {
"tags": ["举报与屏蔽"],
"summary": "解除屏蔽",
"description": "幂等:不存在时返回 200 不报错。",
"operationId": "unblockUser",
"security": [{ "bearerAuth": [] }],
"parameters": [
{ "name": "blockedUserId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }
],
"responses": {
"200": { "description": "OK(幂等)", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/blocks/me": {
"get": {
"tags": ["举报与屏蔽"],
"summary": "我的屏蔽列表",
"description": "仅返回当前用户主动屏蔽的用户;不返回对方手机号/邮箱/密码/简历地址;支持 page/size。",
"operationId": "listMyBlocks",
"security": [{ "bearerAuth": [] }],
"parameters": [
{ "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } },
{ "name": "size", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 20 } }
],
"responses": {
"200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponsePageResponseBlockRelationResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/admin/reports": {
"get": {
"tags": ["举报管理"],
"summary": "举报列表(ADMIN)",
"description": "仅 ADMIN;COMPANY/STUDENT/未登录分别 403/403/401;支持 status/targetType/category/page/size;响应脱敏。",
"operationId": "adminListReports",
"security": [{ "bearerAuth": [] }],
"parameters": [
{ "name": "status", "in": "query", "required": false, "schema": { "type": "string" } },
{ "name": "targetType", "in": "query", "required": false, "schema": { "type": "string" } },
{ "name": "category", "in": "query", "required": false, "schema": { "type": "string" } },
{ "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } },
{ "name": "size", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 20 } }
],
"responses": {
"200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponsePageResponseReportResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "非 ADMIN", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/admin/reports/{id}": {
"get": {
"tags": ["举报管理"],
"summary": "举报详情(ADMIN)",
"description": "仅 ADMIN;可见类型/分类/理由/脱敏证据 URL/MESSAGE 脱敏内容/会话最小信息/处理历史;不返回密码/JWT/手机号/邮箱/resumeUrl。",
"operationId": "adminGetReport",
"security": [{ "bearerAuth": [] }],
"parameters": [
{ "name": "id", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }
],
"responses": {
"200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponseReportResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "非 ADMIN", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"404": { "description": "举报不存在(9601)", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/admin/reports/{id}/decision": {
"post": {
"tags": ["举报管理"],
"summary": "举报处理决定(ADMIN)",
"description": "仅 ADMIN;decision 仅 RESOLVED/REJECTED;REJECTED 必填 note;仅 PENDING 可处理,重复 409/9604,非法流转 409/9605;处理后发送一条 REPORT_DECISION 通知。",
"operationId": "decideReport",
"security": [{ "bearerAuth": [] }],
"parameters": [
{ "name": "id", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }
],
"requestBody": {
"content": {
"application/json": {
"schema": { "$ref": "#/components/schemas/ReportDecisionRequest" }
}
},
"required": true
},
"responses": {
"200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponseReportResponse" } } } },
"400": { "description": "参数错误(REJECTED 缺 note)", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"401": { "description": "未登录", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"403": { "description": "非 ADMIN", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"404": { "description": "举报不存在(9601)", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } },
"409": { "description": "重复决定 9604 / 非法流转 9605", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ApiResponse" } } } }
}
}
},
"/skills/word-cloud": {
"get": {
"tags": [
"行业技能词云"
],
"summary": "查询行业技能词云",
"description": "返回筛选范围内的全部技能,按 heat DESC, nameZh ASC, skillId ASC 排序,heat=null 最后;前端取前十条作为 TOP10。仅 STUDENT 可访问。",
"operationId": "getWordCloud",
"security": [
{
"bearerAuth": []
}
],
"parameters": [
{
"name": "industryId",
"in": "query",
"required": true,
"description": "行业 ID,必填正整数",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 1
}
},
{
"name": "occupationId",
"in": "query",
"required": true,
"description": "职位 ID,必填正整数;必须属于该行业",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 2
}
},
{
"name": "categoryId",
"in": "query",
"required": false,
"description": "技能分类 ID,可选正整数;省略时返回该职位下全部分类",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 101
}
}
],
"responses": {
"200": {
"description": "成功返回筛选范围内的完整技能列表",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponseSkillCloudResponse"
},
"example": {
"code": 200,
"message": "ok",
"data": {
"industry": {
"id": 1,
"code": "INTERNET",
"name": "互联网"
},
"occupation": {
"id": 1,
"code": "FRONTEND_DEVELOPER",
"name": "前端开发工程师"
},
"category": null,
"total": 1,
"items": [
{
"rank": 1,
"skillId": 26,
"skillCode": "REACT",
"nameZh": "React",
"nameEn": "React",
"sourceType": "O*NET",
"sourceCode": "15-1254.00|React|2.E.7.h",
"categoryId": 103,
"categoryName": "前端框架",
"heat": 4.38,
"heatSourceCode": "15-1254.00",
"heatElementId": "2.E.7.h",
"heatProxy": true
}
]
},
"requestId": "req-word-cloud",
"timestamp": "2026-09-15T10:00:00Z"
}
}
}
},
"400": {
"description": "筛选参数缺失、非正整数或节点关系非法",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
},
"example": {
"code": 1001,
"message": "bad request",
"data": null,
"requestId": "req-1001",
"timestamp": "2026-09-15T10:03:00Z"
}
}
}
},
"401": {
"description": "未登录或令牌无效,由全局 Security 入口返回裸 JSON",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnauthorizedResponse"
},
"example": {
"code": 401,
"message": "not authenticated",
"timestamp": ""
}
}
}
},
"403": {
"description": "已登录但不是 STUDENT 角色",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
},
"example": {
"code": 2002,
"message": "forbidden",
"data": null,
"requestId": "req-2002",
"timestamp": "2026-09-15T10:03:00Z"
}
}
}
}
}
}
},
"/skills/match": {
"get": {
"tags": [
"行业技能词云"
],
"summary": "查询个人技能匹配度",
"description": "使用 JWT 对应学生的 skills_json,与当前筛选结果 TOP10 比对;matchScore=round(matchedCount*100/min(10,total))。仅 STUDENT 可访问。",
"operationId": "getSkillMatch",
"security": [
{
"bearerAuth": []
}
],
"parameters": [
{
"name": "industryId",
"in": "query",
"required": true,
"description": "行业 ID,必填正整数",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 1
}
},
{
"name": "occupationId",
"in": "query",
"required": true,
"description": "职位 ID,必填正整数;必须属于该行业",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 2
}
},
{
"name": "categoryId",
"in": "query",
"required": false,
"description": "技能分类 ID,可选正整数;省略时使用该职位下全部技能",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 101
}
}
],
"responses": {
"200": {
"description": "成功返回个人技能匹配结果",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponseSkillMatchResponse"
},
"example": {
"code": 200,
"message": "ok",
"data": {
"matchScore": 50,
"matchedCount": 1,
"totalCount": 2,
"matchedSkills": [
{
"rank": 1,
"skillId": 26,
"skillCode": "REACT",
"nameZh": "React",
"nameEn": "React",
"sourceType": "O*NET",
"sourceCode": "15-1254.00|React|2.E.7.h",
"categoryId": 103,
"categoryName": "前端框架",
"heat": 4.38,
"heatSourceCode": "15-1254.00",
"heatElementId": "2.E.7.h",
"heatProxy": true
}
],
"missingSkills": [
{
"rank": 2,
"skillId": 31,
"skillCode": "DOCKER",
"nameZh": "Docker",
"nameEn": "Docker",
"sourceType": "O*NET",
"sourceCode": "15-1299.08|Docker|2.E.7.h",
"categoryId": 105,
"categoryName": "工程化工具",
"heat": 4.12,
"heatSourceCode": "15-1299.08",
"heatElementId": "2.E.7.h",
"heatProxy": true
}
]
},
"requestId": "req-match",
"timestamp": "2026-09-15T10:01:00Z"
}
}
}
},
"400": {
"description": "筛选参数缺失、非正整数或节点关系非法",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
},
"example": {
"code": 1001,
"message": "bad request",
"data": null,
"requestId": "req-1001",
"timestamp": "2026-09-15T10:03:00Z"
}
}
}
},
"401": {
"description": "未登录或令牌无效,由全局 Security 入口返回裸 JSON",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnauthorizedResponse"
},
"example": {
"code": 401,
"message": "not authenticated",
"timestamp": ""
}
}
}
},
"403": {
"description": "已登录但不是 STUDENT 角色",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
},
"example": {
"code": 2002,
"message": "forbidden",
"data": null,
"requestId": "req-2002",
"timestamp": "2026-09-15T10:03:00Z"
}
}
}
}
}
}
},
"/skills/learning-path": {
"get": {
"tags": [
"行业技能词云"
],
"summary": "生成个人学习路径",
"description": "只针对个人 TOP10 中未命中的技能,沿用热度顺序返回连续 priority 和确定性通用建议;不调用 AI,不返回课程链接、时长或进度。仅 STUDENT 可访问。",
"operationId": "getLearningPath",
"security": [
{
"bearerAuth": []
}
],
"parameters": [
{
"name": "industryId",
"in": "query",
"required": true,
"description": "行业 ID,必填正整数",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 1
}
},
{
"name": "occupationId",
"in": "query",
"required": true,
"description": "职位 ID,必填正整数;必须属于该行业",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 2
}
},
{
"name": "categoryId",
"in": "query",
"required": false,
"description": "技能分类 ID,可选正整数;省略时使用该职位下全部技能",
"schema": {
"type": "integer",
"format": "int64",
"minimum": 1,
"example": 101
}
}
],
"responses": {
"200": {
"description": "成功返回缺失技能的学习路径;没有缺口时列表为空",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponseSkillLearningPathResponse"
},
"example": {
"code": 200,
"message": "ok",
"data": {
"total": 1,
"items": [
{
"priority": 1,
"skillId": 26,
"skillName": "React",
"categoryId": 103,
"categoryName": "前端框架",
"suggestion": "先理解 React 的核心概念与生命周期,再通过一个小型项目练习集成。"
}
]
},
"requestId": "req-learning-path",
"timestamp": "2026-09-15T10:02:00Z"
}
}
}
},
"400": {
"description": "筛选参数缺失、非正整数或节点关系非法",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
},
"example": {
"code": 1001,
"message": "bad request",
"data": null,
"requestId": "req-1001",
"timestamp": "2026-09-15T10:03:00Z"
}
}
}
},
"401": {
"description": "未登录或令牌无效,由全局 Security 入口返回裸 JSON",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnauthorizedResponse"
},
"example": {
"code": 401,
"message": "not authenticated",
"timestamp": ""
}
}
}
},
"403": {
"description": "已登录但不是 STUDENT 角色",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
},
"example": {
"code": 2002,
"message": "forbidden",
"data": null,
"requestId": "req-2002",
"timestamp": "2026-09-15T10:03:00Z"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"AccountDeletionResponse": {
"type": "object",
"properties": {
"userId": {
"type": "integer",
"format": "int64",
"example": 2
},
"status": {
"type": "string",
"enum": [
"NONE",
"PENDING",
"COMPLETED"
],
"example": "PENDING",
"description": "注销状态:NONE/PENDING/COMPLETED"
},
"requestedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"effectiveAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"cancelledAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"completedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"version": {
"type": "integer",
"format": "int64",
"example": 0
}
}
},
"AdminDashboardOverviewResponse": {
"type": "object",
"properties": {
"totalCompanies": {
"type": "integer",
"format": "int32"
},
"totalJobs": {
"type": "integer",
"format": "int32"
},
"totalCandidates": {
"type": "integer",
"format": "int32"
},
"avgCandidateScore": {
"type": "number"
},
"topCompanies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CompanyScoreItem"
}
}
}
},
"ApiResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"CareerProgressResponse": {
"type": "object",
"properties": {
"todo": {
"$ref": "#/components/schemas/ProgressTodoSummary"
},
"applications": {
"$ref": "#/components/schemas/PaginatedApplications"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"ProgressTodoSummary": {
"type": "object",
"properties": {
"pendingInterviewResponseCount": {
"type": "integer",
"format": "int64"
},
"upcomingConfirmedInterviewCount": {
"type": "integer",
"format": "int64"
},
"pendingOfferResponseCount": {
"type": "integer",
"format": "int64"
},
"unreadNotificationCount": {
"type": "integer",
"format": "int64"
},
"unreadReportDecisionCount": {
"type": "integer",
"format": "int64"
}
}
},
"PaginatedApplications": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CareerProgressItem"
}
},
"total": {
"type": "integer",
"format": "int64"
},
"page": {
"type": "integer",
"format": "int32"
},
"size": {
"type": "integer",
"format": "int32"
},
"totalPages": {
"type": "integer",
"format": "int32"
}
}
},
"CareerProgressItem": {
"type": "object",
"properties": {
"applicationId": {
"type": "integer",
"format": "int64"
},
"applicationStatus": {
"type": "string"
},
"appliedAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"job": {
"$ref": "#/components/schemas/JobSummary"
},
"nextInterview": {
"$ref": "#/components/schemas/InterviewSummary"
},
"latestSubmittedInterviewScore": {
"$ref": "#/components/schemas/ScoreSummary"
},
"offer": {
"$ref": "#/components/schemas/OfferSummary"
},
"competition": {
"$ref": "#/components/schemas/CompetitionSummary"
}
}
},
"JobSummary": {
"type": "object",
"properties": {
"jobId": {
"type": "integer",
"format": "int64"
},
"title": {
"type": "string"
},
"companyName": {
"type": "string"
},
"city": {
"type": "string"
},
"employmentType": {
"type": "string"
},
"jobStatus": {
"type": "string"
}
}
},
"InterviewSummary": {
"type": "object",
"properties": {
"interviewId": {
"type": "integer",
"format": "int64"
},
"roundNo": {
"type": "integer",
"format": "int32"
},
"title": {
"type": "string"
},
"interviewType": {
"type": "string"
},
"startAt": {
"type": "string",
"format": "date-time"
},
"endAt": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
}
}
},
"ScoreSummary": {
"type": "object",
"properties": {
"interviewId": {
"type": "integer",
"format": "int64"
},
"overallScore": {
"type": "number"
},
"recommendation": {
"type": "string"
},
"submittedAt": {
"type": "string",
"format": "date-time"
}
}
},
"OfferSummary": {
"type": "object",
"properties": {
"offerId": {
"type": "integer",
"format": "int64"
},
"status": {
"type": "string"
},
"title": {
"type": "string"
},
"expireAt": {
"type": "string",
"format": "date-time"
},
"onboardingDate": {
"type": "string",
"format": "date"
}
}
},
"CompetitionSummary": {
"type": "object",
"properties": {
"eligible": {
"type": "boolean"
},
"rank": {
"type": "integer",
"format": "int32"
},
"cohortSize": {
"type": "integer",
"format": "int32"
},
"overallScore": {
"type": "number"
},
"percentile": {
"type": "number"
},
"status": {
"type": "string"
},
"mySnapshotPeriod": {
"type": "string"
},
"rulesVersion": {
"type": "string"
}
}
},
"ApiResponseCareerProgressResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32",
"example": 200
},
"message": {
"type": "string",
"example": "ok"
},
"data": {
"$ref": "#/components/schemas/CareerProgressResponse"
},
"requestId": {
"type": "string",
"example": "req-1"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseAccountDeletionResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32",
"example": 200
},
"message": {
"type": "string",
"example": "ok"
},
"data": {
"$ref": "#/components/schemas/AccountDeletionResponse"
},
"requestId": {
"type": "string",
"example": "req-1"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseAdminDashboardOverviewResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/AdminDashboardOverviewResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseAppealResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/AppealResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateDetailView": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateDetailView"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateFeedbackResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateFeedbackResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateListResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateListResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidatePercentileResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidatePercentileResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateRankingDetailResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateRankingDetailResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateRankingListResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateRankingListResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateScoreCardResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateScoreCardResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateScoreTrendResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateScoreTrendResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateScoringOverviewResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateScoringOverviewResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCandidateScoringTrendResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CandidateScoringTrendResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCompanyCandidateScoringResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CompanyCandidateScoringResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseCompanyPublicView": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/CompanyPublicView"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseDashboardOverviewResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/DashboardOverviewResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseDimensionScoreDetailResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/DimensionScoreDetailResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseJobRankingItem": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/JobRankingItem"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseJobRankingListResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/JobRankingListResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseListAppealHistoryItem": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AppealHistoryItem"
}
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseListMapStringObject": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseListSnapshotHistoryItem": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SnapshotHistoryItem"
}
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseListWeightTemplateResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WeightTemplateResponse"
}
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseMapStringObject": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseMapStringString": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponsePersonalizedScoreResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/PersonalizedScoreResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponsePrivacySettingsResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32",
"example": 200
},
"message": {
"type": "string",
"example": "ok"
},
"data": {
"$ref": "#/components/schemas/PrivacySettingsResponse"
},
"requestId": {
"type": "string",
"example": "req-1"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseReviewWeightResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/ReviewWeightResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseScoreTrendResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/ScoreTrendResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"AppealDecisionRequest": {
"type": "object",
"properties": {
"decision": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string"
}
},
"required": [
"decision"
]
},
"AppealHistoryItem": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"fromStatus": {
"type": "string"
},
"toStatus": {
"type": "string"
},
"actorUserId": {
"type": "integer",
"format": "int64"
},
"actorRole": {
"type": "string"
},
"reason": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
},
"AppealResponse": {
"type": "object",
"properties": {
"appealId": {
"type": "integer",
"format": "int64"
},
"candidateId": {
"type": "integer",
"format": "int64"
},
"dimension": {
"type": "string"
},
"period": {
"type": "string"
},
"status": {
"type": "string"
},
"reason": {
"type": "string"
},
"decision": {
"type": "string"
},
"decisionReason": {
"type": "string"
},
"reviewerId": {
"type": "integer",
"format": "int64"
},
"reviewedAt": {
"type": "string",
"format": "date-time"
},
"rollbackAt": {
"type": "string",
"format": "date-time"
},
"scoreAtAppeal": {
"type": "number"
},
"snapshotVersionAtAppeal": {
"type": "integer",
"format": "int64"
},
"rulesVersion": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"ApplicationCreateRequest": {
"type": "object",
"properties": {
"jobId": {
"type": "integer",
"format": "int64"
}
},
"required": [
"jobId"
]
},
"ApplicationStatusRequest": {
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1,
"pattern": "^(VIEWED|INTERVIEW|REJECTED|HIRED)$"
}
},
"required": [
"status"
]
},
"CandidateDetailView": {
"type": "object",
"properties": {
"applicationId": {
"type": "integer",
"format": "int64"
},
"jobId": {
"type": "integer",
"format": "int64"
},
"jobTitle": {
"type": "string"
},
"jobCity": {
"type": "string"
},
"jobEmploymentType": {
"type": "string"
},
"status": {
"type": "string"
},
"coverLetter": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"candidateName": {
"type": "string"
},
"candidateAvatarUrl": {
"type": "string"
},
"candidateBio": {
"type": "string"
},
"candidateLocation": {
"type": "string"
},
"candidateSchool": {
"type": "string"
},
"candidateEducation": {
"type": "string"
},
"candidateGraduationYear": {
"type": "integer",
"format": "int32"
},
"candidateSkills": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"CandidateFeedbackRequest": {
"type": "object",
"properties": {
"rating": {
"type": "integer",
"format": "int32",
"maximum": 5,
"minimum": 1
},
"content": {
"type": "string",
"maxLength": 1000,
"minLength": 0
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 10,
"minItems": 0
}
},
"required": [
"content",
"rating"
]
},
"CandidateFeedbackResponse": {
"type": "object",
"description": "脱敏后的候选人反馈",
"properties": {
"id": {
"type": "integer",
"format": "int64",
"description": "反馈 ID",
"example": 1
},
"applicationId": {
"type": "integer",
"format": "int64",
"description": "投递 ID",
"example": 31
},
"rating": {
"type": "integer",
"format": "int32",
"description": "评分,范围 1-5",
"example": 5
},
"content": {
"type": "string",
"description": "反馈内容",
"example": "沟通良好"
},
"tags": {
"type": "array",
"description": "反馈标签",
"items": {
"type": "string"
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "创建时间",
"example": "2026-08-25T10:00:00"
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "更新时间",
"example": "2026-08-25T10:00:00"
}
}
},
"CandidateFeedbackSummary": {
"type": "object",
"properties": {
"totalCount": {
"type": "integer",
"format": "int32"
},
"averageRating": {
"type": "number"
},
"ratingDistribution": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
}
},
"tags": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TagCount"
}
}
}
},
"CandidateItemView": {
"type": "object",
"properties": {
"applicationId": {
"type": "integer",
"format": "int64"
},
"jobId": {
"type": "integer",
"format": "int64"
},
"jobTitle": {
"type": "string"
},
"status": {
"type": "string"
},
"candidateName": {
"type": "string"
},
"candidateSchool": {
"type": "string"
},
"candidateEducation": {
"type": "string"
},
"candidateGraduationYear": {
"type": "integer",
"format": "int32"
},
"candidateAvatarUrl": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"CandidateListResponse": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CandidateItemView"
}
},
"total": {
"type": "integer",
"format": "int64"
},
"page": {
"type": "integer",
"format": "int32"
},
"size": {
"type": "integer",
"format": "int32"
},
"totalPages": {
"type": "integer",
"format": "int32"
}
}
},
"CandidateMatchSignals": {
"type": "object",
"properties": {
"candidateInterestScore": {
"$ref": "#/components/schemas/MatchSignal"
},
"hrSuitabilityScore": {
"$ref": "#/components/schemas/MatchSignal"
}
}
},
"CandidatePercentileResponse": {
"type": "object",
"properties": {
"candidateId": {
"type": "integer",
"format": "int64"
},
"status": {
"type": "string"
},
"scoreType": {
"type": "string"
},
"score": {
"type": "number"
},
"percentile": {
"type": "number"
},
"cohortSize": {
"type": "integer",
"format": "int32"
},
"sampleCount": {
"type": "integer",
"format": "int32"
},
"minimumSampleCount": {
"type": "integer",
"format": "int32"
}
}
},
"CandidateRankingDetailResponse": {
"type": "object",
"properties": {
"applicationId": {
"type": "integer",
"format": "int64"
},
"jobId": {
"type": "integer",
"format": "int64"
},
"candidateName": {
"type": "string"
},
"candidateSchool": {
"type": "string"
},
"overallScore": {
"type": "number"
},
"percentile": {
"type": "number"
},
"cohortSize": {
"type": "integer",
"format": "int32"
},
"dimensionScores": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DimensionScoreItem"
}
}
}
},
"CandidateRankingItem": {
"type": "object",
"properties": {
"applicationId": {
"type": "integer",
"format": "int64"
},
"jobId": {
"type": "integer",
"format": "int64"
},
"candidateName": {
"type": "string"
},
"candidateSchool": {
"type": "string"
},
"overallScore": {
"type": "number"
},
"percentile": {
"type": "number"
},
"sampleCount": {
"type": "integer",
"format": "int32"
}
}
},
"CandidateRankingListResponse": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CandidateRankingItem"
}
},
"total": {
"type": "integer",
"format": "int64"
},
"page": {
"type": "integer",
"format": "int32"
},
"size": {
"type": "integer",
"format": "int32"
},
"totalPages": {
"type": "integer",
"format": "int32"
}
}
},
"CandidateScoreCardResponse": {
"type": "object",
"properties": {
"candidateId": {
"type": "integer",
"format": "int64"
},
"status": {
"type": "string"
},
"overallScore": {
"type": "number"
},
"sampleCount": {
"type": "integer",
"format": "int32"
},
"feedbackSummary": {
"$ref": "#/components/schemas/CandidateFeedbackSummary"
},
"matchSignals": {
"$ref": "#/components/schemas/CandidateMatchSignals"
},
"unsupportedDimensions": {
"type": "array",
"items": {
"type": "string"
}
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"CandidateScoreTrendItem": {
"type": "object",
"properties": {
"month": {
"type": "string"
},
"feedbackCount": {
"type": "integer",
"format": "int32"
},
"averageRating": {
"type": "number"
},
"ratingScore": {
"type": "number"
}
}
},
"CandidateScoreTrendResponse": {
"type": "object",
"properties": {
"candidateId": {
"type": "integer",
"format": "int64"
},
"months": {
"type": "integer",
"format": "int32"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CandidateScoreTrendItem"
}
}
}
},
"CandidateScoringOverviewResponse": {
"type": "object",
"properties": {
"candidateId": {
"type": "integer",
"format": "int64"
},
"status": {
"type": "string"
},
"overallScore": {
"type": "number"
},
"weights": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"dimensions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DimensionItem"
}
},
"rulesVersion": {
"type": "string"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"CandidateScoringTrendResponse": {
"type": "object",
"properties": {
"candidateId": {
"type": "integer",
"format": "int64"
},
"months": {
"type": "integer",
"format": "int32"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TrendItem"
}
}
}
},
"CompanyCandidateScoringResponse": {
"type": "object",
"properties": {
"applicationId": {
"type": "integer",
"format": "int64"
},
"overallScore": {
"type": "number"
},
"status": {
"type": "string"
},
"dimensions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CompanyDimensionItem"
}
},
"generatedAt": {
"type": "string",
"format": "date-time"
},
"rulesVersion": {
"type": "string"
}
}
},
"CompanyCreateRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 0
},
"logoUrl": {
"type": "string"
},
"description": {
"type": "string"
},
"industry": {
"type": "string"
},
"website": {
"type": "string"
},
"address": {
"type": "string"
}
},
"required": [
"name"
]
},
"CompanyDimensionItem": {
"type": "object",
"properties": {
"dimension": {
"type": "string"
},
"score": {
"type": "number"
},
"status": {
"type": "string"
}
}
},
"CompanyMatchRuleRequest": {
"type": "object",
"properties": {
"requiredCandidateScore": {
"type": "integer",
"format": "int32",
"maximum": 100,
"minimum": 0
}
},
"required": [
"requiredCandidateScore"
]
},
"CompanyPublicView": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"logoUrl": {
"type": "string"
},
"description": {
"type": "string"
},
"industry": {
"type": "string"
},
"verified": {
"type": "boolean"
}
}
},
"CompanyScoreItem": {
"type": "object",
"properties": {
"companyId": {
"type": "integer",
"format": "int64"
},
"companyName": {
"type": "string"
},
"avgCandidateScore": {
"type": "number"
},
"jobCount": {
"type": "integer",
"format": "int32"
}
}
},
"CompanyUpdateRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"minLength": 0
},
"logoUrl": {
"type": "string",
"maxLength": 500,
"minLength": 0
},
"description": {
"type": "string"
},
"industry": {
"type": "string",
"maxLength": 80,
"minLength": 0
},
"website": {
"type": "string",
"maxLength": 255,
"minLength": 0
},
"address": {
"type": "string",
"maxLength": 255,
"minLength": 0
}
},
"required": [
"name"
]
},
"CounterOfferCreateRequest": {
"type": "object",
"properties": {
"proposedSalaryMin": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"proposedSalaryMax": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"proposedOnboardingDate": {
"type": "string",
"format": "date"
},
"reason": {
"type": "string",
"maxLength": 2000,
"minLength": 0
}
}
},
"CreateAppealRequest": {
"type": "object",
"properties": {
"dimension": {
"type": "string",
"minLength": 1
},
"period": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string"
},
"idempotencyKey": {
"type": "string",
"maxLength": 64,
"minLength": 0
}
},
"required": [
"dimension",
"period"
]
},
"CreateConversationRequest": {
"type": "object",
"properties": {
"participantUserId": {
"type": "integer",
"format": "int64"
}
},
"required": [
"participantUserId"
]
},
"DashboardOverviewResponse": {
"type": "object",
"properties": {
"companyId": {
"type": "integer",
"format": "int64"
},
"totalJobs": {
"type": "integer",
"format": "int32"
},
"publishedJobs": {
"type": "integer",
"format": "int32"
},
"avgJobScore": {
"type": "number"
},
"totalCandidates": {
"type": "integer",
"format": "int32"
},
"avgCandidateScore": {
"type": "number"
},
"scoreDistribution": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
}
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"DataSourceItem": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"time": {
"type": "string",
"format": "date-time"
},
"note": {
"type": "string"
}
}
},
"DimensionItem": {
"type": "object",
"properties": {
"dimension": {
"type": "string"
},
"score": {
"type": "number"
},
"status": {
"type": "string"
},
"weight": {
"type": "number"
},
"summary": {
"type": "string"
}
}
},
"DimensionScoreDetailResponse": {
"type": "object",
"properties": {
"dimension": {
"type": "string"
},
"score": {
"type": "number"
},
"status": {
"type": "string"
},
"subScores": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SubScore"
}
},
"reasons": {
"type": "array",
"items": {
"type": "string"
}
},
"dataSources": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DataSourceItem"
}
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"rulesVersion": {
"type": "string"
}
}
},
"DimensionScoreItem": {
"type": "object",
"properties": {
"dimension": {
"type": "string"
},
"score": {
"type": "number"
},
"status": {
"type": "string"
}
}
},
"InterviewCancelRequest": {
"type": "object",
"properties": {
"reason": {
"type": "string"
}
}
},
"InterviewCreateRequest": {
"type": "object",
"properties": {
"roundNo": {
"type": "integer",
"format": "int32"
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 0
},
"interviewType": {
"type": "string",
"minLength": 1
},
"startAt": {
"type": "string",
"format": "date-time"
},
"endAt": {
"type": "string",
"format": "date-time"
},
"timezone": {
"type": "string"
},
"meetingUrl": {
"type": "string"
},
"address": {
"type": "string"
},
"interviewerName": {
"type": "string",
"maxLength": 100,
"minLength": 0
},
"notes": {
"type": "string"
}
},
"required": [
"endAt",
"interviewType",
"startAt",
"title"
]
},
"InterviewRespondRequest": {
"type": "object",
"properties": {
"action": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string"
}
},
"required": [
"action"
]
},
"InterviewUpdateRequest": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"startAt": {
"type": "string",
"format": "date-time"
},
"endAt": {
"type": "string",
"format": "date-time"
},
"timezone": {
"type": "string"
},
"meetingUrl": {
"type": "string"
},
"address": {
"type": "string"
},
"interviewerName": {
"type": "string"
},
"notes": {
"type": "string"
},
"timeRangeValid": {
"type": "boolean"
}
}
},
"JobCreateRequest": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"minLength": 0
},
"description": {
"type": "string",
"minLength": 1
},
"requirements": {
"type": "string"
},
"city": {
"type": "string",
"maxLength": 80,
"minLength": 0
},
"employmentType": {
"type": "string",
"maxLength": 30,
"minLength": 0
},
"salaryMin": {
"type": "integer",
"format": "int32"
},
"salaryMax": {
"type": "integer",
"format": "int32"
}
},
"required": [
"city",
"description",
"employmentType",
"title"
]
},
"JobRankingItem": {
"type": "object",
"properties": {
"jobId": {
"type": "integer",
"format": "int64"
},
"title": {
"type": "string"
},
"city": {
"type": "string"
},
"employmentType": {
"type": "string"
},
"avgRating": {
"type": "number"
},
"reviewCount": {
"type": "integer",
"format": "int32"
},
"rank": {
"type": "integer",
"format": "int32"
},
"cohortSize": {
"type": "integer",
"format": "int32"
},
"dimensionAverages": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
}
},
"JobRankingListResponse": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/JobRankingItem"
}
},
"total": {
"type": "integer",
"format": "int64"
},
"page": {
"type": "integer",
"format": "int32"
},
"size": {
"type": "integer",
"format": "int32"
},
"totalPages": {
"type": "integer",
"format": "int32"
}
}
},
"JobReviewCreateRequest": {
"type": "object",
"properties": {
"rating": {
"type": "integer",
"format": "int32",
"maximum": 5,
"minimum": 1
},
"content": {
"type": "string",
"maxLength": 1000,
"minLength": 0
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 10,
"minItems": 0
},
"dimensionScores": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
}
}
},
"required": [
"content",
"rating"
]
},
"JobReviewUpdateRequest": {
"type": "object",
"properties": {
"rating": {
"type": "integer",
"format": "int32",
"maximum": 5,
"minimum": 1
},
"content": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 10,
"minItems": 0
},
"status": {
"type": "string",
"pattern": "^(PUBLISHED|HIDDEN)$"
},
"dimensionScores": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
}
}
}
},
"JobStatusRequest": {
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1,
"pattern": "^(PUBLISHED|CLOSED)$"
}
},
"required": [
"status"
]
},
"JobUpdateRequest": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"minLength": 0
},
"description": {
"type": "string"
},
"requirements": {
"type": "string"
},
"city": {
"type": "string",
"maxLength": 80,
"minLength": 0
},
"employmentType": {
"type": "string",
"maxLength": 30,
"minLength": 0
},
"salaryMin": {
"type": "integer",
"format": "int32"
},
"salaryMax": {
"type": "integer",
"format": "int32"
}
}
},
"LoginRequest": {
"type": "object",
"properties": {
"phone": {
"type": "string",
"minLength": 1,
"pattern": "[0-9]{11}"
},
"code": {
"type": "string",
"minLength": 1,
"pattern": "[0-9]{6}"
},
"purpose": {
"type": "string"
}
},
"required": [
"code",
"phone"
]
},
"MatchSignal": {
"type": "object",
"properties": {
"average": {
"type": "number"
},
"sampleCount": {
"type": "integer",
"format": "int32"
}
}
},
"OfferCreateRequest": {
"type": "object",
"properties": {
"applicationId": {
"type": "integer",
"format": "int64"
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 0
},
"salaryMin": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"salaryMax": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"salaryCurrency": {
"type": "string",
"maxLength": 10,
"minLength": 0
},
"salaryPeriod": {
"type": "string",
"pattern": "^(MONTH|YEAR|HOUR)$"
},
"workCity": {
"type": "string",
"maxLength": 80,
"minLength": 0
},
"employmentType": {
"type": "string",
"pattern": "^(FULL_TIME|PART_TIME|INTERN|INTERNSHIP)$"
},
"probationMonths": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"benefits": {
"type": "string",
"maxLength": 2000,
"minLength": 0
},
"description": {
"type": "string",
"maxLength": 5000,
"minLength": 0
},
"expireAt": {
"type": "string",
"format": "date-time"
},
"onboardingDate": {
"type": "string",
"format": "date"
},
"baseSalary": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"housingAllowance": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"annualBonusMonths": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"otherAllowances": {
"type": "string",
"maxLength": 1000,
"minLength": 0
}
},
"required": [
"applicationId",
"description",
"expireAt",
"title",
"workCity"
]
},
"OfferStatusRequest": {
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1,
"pattern": "^(SENT|NEGOTIATING|ACCEPTED|REJECTED|EXPIRED|WITHDRAWN)$"
},
"reason": {
"type": "string",
"maxLength": 255,
"minLength": 0
}
},
"required": [
"status"
]
},
"OfferUpdateRequest": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"minLength": 0
},
"salaryMin": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"salaryMax": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"salaryCurrency": {
"type": "string",
"maxLength": 10,
"minLength": 0
},
"salaryPeriod": {
"type": "string",
"pattern": "^(MONTH|YEAR|HOUR)$"
},
"workCity": {
"type": "string",
"maxLength": 80,
"minLength": 0
},
"employmentType": {
"type": "string",
"pattern": "^(FULL_TIME|PART_TIME|INTERN|INTERNSHIP)$"
},
"probationMonths": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"benefits": {
"type": "string",
"maxLength": 2000,
"minLength": 0
},
"description": {
"type": "string",
"maxLength": 5000,
"minLength": 0
},
"expireAt": {
"type": "string",
"format": "date-time"
},
"onboardingDate": {
"type": "string",
"format": "date"
},
"baseSalary": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"housingAllowance": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"annualBonusMonths": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"otherAllowances": {
"type": "string",
"maxLength": 1000,
"minLength": 0
}
}
},
"PersonalizedScoreResponse": {
"type": "object",
"properties": {
"jobId": {
"type": "integer",
"format": "int64"
},
"score": {
"type": "number"
},
"status": {
"type": "string"
},
"source": {
"type": "string"
},
"templateCode": {
"type": "string"
},
"configuredWeights": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"effectiveWeights": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"dimensionScores": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"coveredWeight": {
"type": "number"
},
"missingDimensions": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"PrivacySettingsResponse": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64",
"example": 1,
"nullable": true
},
"studentUserId": {
"type": "integer",
"format": "int64",
"example": 2
},
"resumeVisibility": {
"$ref": "#/components/schemas/ResumeVisibility",
"description": "简历可见性(PRIVATE/APPLIED_COMPANIES/VERIFIED_COMPANIES)",
"example": "APPLIED_COMPANIES"
},
"contactVisible": {
"type": "boolean",
"example": true
},
"version": {
"type": "integer",
"format": "int64",
"example": 0
},
"createdAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"updatedAt": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
},
"PrivacySettingsUpdateRequest": {
"type": "object",
"required": [
"resumeVisibility",
"contactVisible"
],
"properties": {
"resumeVisibility": {
"$ref": "#/components/schemas/ResumeVisibility",
"description": "简历可见性(必填)",
"example": "APPLIED_COMPANIES"
},
"contactVisible": {
"type": "boolean",
"description": "联系方式是否对企业可见(必填)",
"example": true
},
"version": {
"type": "integer",
"format": "int64",
"description": "乐观锁版本号(可选)",
"example": 0
}
}
},
"ResumeVisibility": {
"type": "string",
"enum": [
"PRIVATE",
"APPLIED_COMPANIES",
"VERIFIED_COMPANIES"
],
"description": "简历可见性:PRIVATE 私有;APPLIED_COMPANIES 仅对企业有效投递可见;VERIFIED_COMPANIES 仅对认证企业可见",
"example": "PRIVATE"
},
"ReviewDecisionRequest": {
"type": "object",
"properties": {
"decision": {
"type": "string",
"minLength": 1,
"pattern": "^(APPROVED|REJECTED)$"
},
"reason": {
"type": "string",
"maxLength": 500,
"minLength": 0
}
},
"required": [
"decision"
]
},
"ReviewWeightResponse": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"templateCode": {
"type": "string"
},
"configuredWeights": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"SaveWeightRequest": {
"type": "object",
"properties": {
"templateCode": {
"type": "string"
},
"weights": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
}
},
"ScoreRequest": {
"type": "object",
"properties": {
"score": {
"type": "integer",
"format": "int32",
"maximum": 100,
"minimum": 0
}
},
"required": [
"score"
]
},
"ScoreTrendResponse": {
"type": "object",
"properties": {
"companyId": {
"type": "integer",
"format": "int64"
},
"months": {
"type": "integer",
"format": "int32"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TrendItem"
}
}
}
},
"SendMessageRequest": {
"type": "object",
"properties": {
"conversationId": {
"type": "integer",
"format": "int64"
},
"content": {
"type": "string",
"maxLength": 2000,
"minLength": 0
}
},
"required": [
"content",
"conversationId"
]
},
"SnapshotHistoryItem": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"appealId": {
"type": "integer",
"format": "int64"
},
"action": {
"type": "string"
},
"dimension": {
"type": "string"
},
"period": {
"type": "string"
},
"beforeScore": {
"type": "number"
},
"afterScore": {
"type": "number"
},
"beforeVersion": {
"type": "integer",
"format": "int64"
},
"afterVersion": {
"type": "integer",
"format": "int64"
},
"beforeRulesVersion": {
"type": "string"
},
"afterRulesVersion": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
},
"StudentMatchRuleRequest": {
"type": "object",
"properties": {
"requiredHrScore": {
"type": "integer",
"format": "int32",
"maximum": 100,
"minimum": 0
}
},
"required": [
"requiredHrScore"
]
},
"StudentPreferenceRequest": {
"type": "object",
"properties": {
"expectedSalaryMin": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"expectedSalaryMax": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"preferredCities": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 20,
"minItems": 0
},
"employmentTypes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 20,
"minItems": 0
},
"preferredIndustries": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 20,
"minItems": 0
},
"preferredJobTypes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 20,
"minItems": 0
},
"remoteAllowed": {
"type": "boolean"
},
"salaryRangeValid": {
"type": "boolean"
}
}
},
"StudentProfileUpdateRequest": {
"type": "object",
"properties": {
"realName": {
"type": "string",
"maxLength": 50,
"minLength": 0
},
"bio": {
"type": "string"
},
"location": {
"type": "string",
"maxLength": 100,
"minLength": 0
},
"education": {
"type": "string",
"maxLength": 100,
"minLength": 0
},
"school": {
"type": "string",
"maxLength": 150,
"minLength": 0
},
"graduationYear": {
"type": "integer",
"format": "int32"
},
"resumeUrl": {
"type": "string",
"maxLength": 500,
"minLength": 0
},
"skills": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"SubScore": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"score": {
"type": "number"
},
"weight": {
"type": "number"
},
"description": {
"type": "string"
}
}
},
"TagCount": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"count": {
"type": "integer",
"format": "int32"
}
}
},
"TrendItem": {
"type": "object",
"properties": {
"period": {
"type": "string"
},
"overallScore": {
"type": "number"
},
"rulesVersion": {
"type": "string"
},
"dimensions": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
}
},
"VerificationDecisionRequest": {
"type": "object",
"properties": {
"decision": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string"
}
},
"required": [
"decision"
]
},
"VerificationSubmitRequest": {
"type": "object",
"properties": {
"materialsJson": {
"type": "string",
"minLength": 1
}
},
"required": [
"materialsJson"
]
},
"WeightTemplateResponse": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"weights": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
}
},
"InterviewScoreSaveRequest": {
"type": "object",
"properties": {
"technicalScore": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"nullable": true
},
"communicationScore": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"nullable": true
},
"problemSolvingScore": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"nullable": true
},
"roleFitScore": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"nullable": true
},
"professionalismScore": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"nullable": true
},
"recommendation": {
"type": "string",
"enum": [
"STRONG_HIRE",
"HIRE",
"NEUTRAL",
"NO_HIRE"
],
"nullable": true,
"description": "企业手动选择,不根据 overallScore 自动推导"
},
"comment": {
"type": "string",
"nullable": true
}
},
"description": "评分草稿保存请求;overallScore 由服务端计算,客户端不得传入"
},
"InterviewScoreResponse": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"interviewId": {
"type": "integer",
"format": "int64"
},
"applicationId": {
"type": "integer",
"format": "int64"
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"SUBMITTED"
]
},
"technicalScore": {
"type": "integer",
"nullable": true
},
"communicationScore": {
"type": "integer",
"nullable": true
},
"problemSolvingScore": {
"type": "integer",
"nullable": true
},
"roleFitScore": {
"type": "integer",
"nullable": true
},
"professionalismScore": {
"type": "integer",
"nullable": true
},
"overallScore": {
"type": "number",
"format": "decimal",
"nullable": true,
"description": "由服务端 BigDecimal 计算:(t+c+ps+rf+p)/5,保留两位小数 HALF_UP"
},
"recommendation": {
"type": "string",
"enum": [
"STRONG_HIRE",
"HIRE",
"NEUTRAL",
"NO_HIRE"
],
"nullable": true
},
"comment": {
"type": "string",
"nullable": true
},
"submittedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"version": {
"type": "integer",
"format": "int64"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"description": "面试评分响应(脱敏:不返回 companyUserId/studentUserId/evaluatorUserId/手机号/邮箱)"
},
"ApiResponseInterviewScoreResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/InterviewScoreResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"InterviewScoreHistoryItem": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"scoreId": {
"type": "integer",
"format": "int64"
},
"interviewId": {
"type": "integer",
"format": "int64"
},
"fromStatus": {
"type": "string",
"enum": [
"DRAFT",
"SUBMITTED"
],
"nullable": true
},
"toStatus": {
"type": "string",
"enum": [
"DRAFT",
"SUBMITTED"
]
},
"actorRole": {
"type": "string",
"example": "COMPANY"
},
"snapshot": {
"type": "object",
"additionalProperties": {}
},
"createdAt": {
"type": "string",
"format": "date-time"
}
},
"description": "评分历史条目(脱敏:不返回 actorUserId/手机号/邮箱)"
},
"ApiResponseListInterviewScoreHistoryItem": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InterviewScoreHistoryItem"
}
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"CreateReportRequest": {
"type": "object",
"properties": {
"targetType": { "type": "string", "enum": ["USER", "MESSAGE"], "description": "举报目标类型;USER 必填 targetUserId,MESSAGE 必填 messageId" },
"targetUserId": { "type": "integer", "format": "int64", "description": "targetType=USER 时必填" },
"messageId": { "type": "integer", "format": "int64", "description": "targetType=MESSAGE 时必填" },
"category": { "type": "string", "maxLength": 40, "description": "举报分类,如 HARASSMENT" },
"reason": { "type": "string", "minLength": 1, "maxLength": 1000 },
"evidenceUrls": { "type": "array", "items": { "type": "string", "maxLength": 500 }, "description": "最多 5 个,仅 http/https,最多 500 字符" },
"idempotencyKey": { "type": "string", "maxLength": 64, "description": "幂等键(可选)" }
}
},
"ReportDecisionRequest": {
"type": "object",
"properties": {
"decision": { "type": "string", "enum": ["RESOLVED", "REJECTED"] },
"note": { "type": "string", "maxLength": 1000, "description": "REJECTED 必填" }
}
},
"ReportResponse": {
"type": "object",
"properties": {
"id": { "type": "integer", "format": "int64" },
"targetType": { "type": "string", "enum": ["USER", "MESSAGE"] },
"targetUserId": { "type": "integer", "format": "int64" },
"messageId": { "type": "integer", "format": "int64" },
"reportedUserId": { "type": "integer", "format": "int64" },
"category": { "type": "string" },
"reason": { "type": "string" },
"evidenceUrls": { "type": "array", "items": { "type": "string" } },
"status": { "type": "string", "enum": ["PENDING", "RESOLVED", "REJECTED"] },
"decision": { "type": "string", "enum": ["RESOLVED", "REJECTED"] },
"decisionNote": { "type": "string" },
"decidedAt": { "type": "string", "format": "date-time" },
"createdAt": { "type": "string", "format": "date-time" },
"updatedAt": { "type": "string", "format": "date-time" },
"messagePreview": { "type": "string", "description": "MESSAGE 举报的脱敏消息预览,不返回会话其他敏感内容" },
"reportedUser": { "$ref": "#/components/schemas/ReportResponseReportedUser" },
"history": { "type": "array", "items": { "$ref": "#/components/schemas/ReportResponseDecisionHistoryItem" } }
}
},
"ReportResponseReportedUser": {
"type": "object",
"properties": {
"userId": { "type": "integer", "format": "int64" },
"nickname": { "type": "string" },
"role": { "type": "string" }
}
},
"ReportResponseDecisionHistoryItem": {
"type": "object",
"properties": {
"id": { "type": "integer", "format": "int64" },
"fromStatus": { "type": "string" },
"toStatus": { "type": "string" },
"actorUserId": { "type": "integer", "format": "int64" },
"actorRole": { "type": "string" },
"note": { "type": "string" },
"createdAt": { "type": "string", "format": "date-time" }
}
},
"BlockRelationResponse": {
"type": "object",
"properties": {
"id": { "type": "integer", "format": "int64" },
"blockedUserId": { "type": "integer", "format": "int64" },
"nickname": { "type": "string" },
"createdAt": { "type": "string", "format": "date-time" }
}
},
"ApiResponseReportResponse": {
"type": "object",
"properties": {
"code": { "type": "integer", "format": "int32" },
"message": { "type": "string" },
"data": { "$ref": "#/components/schemas/ReportResponse" },
"requestId": { "type": "string" },
"timestamp": { "type": "string", "format": "date-time" }
}
},
"ApiResponsePageResponseReportResponse": {
"type": "object",
"properties": {
"code": { "type": "integer", "format": "int32" },
"message": { "type": "string" },
"data": {
"type": "object",
"properties": {
"items": { "type": "array", "items": { "$ref": "#/components/schemas/ReportResponse" } },
"totalElements": { "type": "integer", "format": "int64" },
"page": { "type": "integer", "format": "int32" },
"size": { "type": "integer", "format": "int32" }
}
},
"requestId": { "type": "string" },
"timestamp": { "type": "string", "format": "date-time" }
}
},
"ApiResponseBlockRelationResponse": {
"type": "object",
"properties": {
"code": { "type": "integer", "format": "int32" },
"message": { "type": "string" },
"data": { "$ref": "#/components/schemas/BlockRelationResponse" },
"requestId": { "type": "string" },
"timestamp": { "type": "string", "format": "date-time" }
}
},
"ApiResponsePageResponseBlockRelationResponse": {
"type": "object",
"properties": {
"code": { "type": "integer", "format": "int32" },
"message": { "type": "string" },
"data": {
"type": "object",
"properties": {
"items": { "type": "array", "items": { "$ref": "#/components/schemas/BlockRelationResponse" } },
"totalElements": { "type": "integer", "format": "int64" },
"page": { "type": "integer", "format": "int32" },
"size": { "type": "integer", "format": "int32" }
}
},
"requestId": { "type": "string" },
"timestamp": { "type": "string", "format": "date-time" }
}
},
"SkillCloudNode": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"code": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"SkillCloudItem": {
"type": "object",
"properties": {
"rank": {
"type": "integer",
"format": "int32",
"minimum": 1,
"description": "当前筛选范围内的稳定排名,从 1 开始。"
},
"skillId": {
"type": "integer",
"format": "int64"
},
"skillCode": {
"type": "string"
},
"nameZh": {
"type": "string"
},
"nameEn": {
"type": "string",
"nullable": true
},
"sourceType": {
"type": "string",
"enum": [
"ESCO",
"O*NET"
],
"description": "技能身份主来源。"
},
"sourceCode": {
"type": "string",
"description": "ESCO URI 或 O*NET 三元组标识。"
},
"categoryId": {
"type": "integer",
"format": "int64"
},
"categoryName": {
"type": "string"
},
"heat": {
"type": "number",
"nullable": true,
"description": "O*NET Importance;无映射为 null,且排在非空热度之后。"
},
"heatSourceCode": {
"type": "string",
"nullable": true,
"description": "热度来源 SOC。"
},
"heatElementId": {
"type": "string",
"nullable": true,
"description": "热度来源 O*NET Element ID。"
},
"heatProxy": {
"type": "boolean",
"description": "热度是否为代理映射。"
}
}
},
"SkillCloudResponse": {
"type": "object",
"properties": {
"industry": {
"$ref": "#/components/schemas/SkillCloudNode"
},
"occupation": {
"$ref": "#/components/schemas/SkillCloudNode"
},
"category": {
"$ref": "#/components/schemas/SkillCloudNode",
"nullable": true
},
"total": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SkillCloudItem"
}
}
}
},
"SkillMatchResponse": {
"type": "object",
"properties": {
"matchScore": {
"type": "integer",
"format": "int32",
"minimum": 0,
"maximum": 100,
"description": "round(matchedCount*100/min(10,total));total=0 时为 0。"
},
"matchedCount": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"totalCount": {
"type": "integer",
"format": "int32",
"minimum": 0,
"description": "实际匹配集合大小 min(10,total)。"
},
"matchedSkills": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SkillCloudItem"
}
},
"missingSkills": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SkillCloudItem"
}
}
}
},
"SkillLearningPathItem": {
"type": "object",
"properties": {
"priority": {
"type": "integer",
"format": "int32",
"minimum": 1
},
"skillId": {
"type": "integer",
"format": "int64"
},
"skillName": {
"type": "string"
},
"categoryId": {
"type": "integer",
"format": "int64"
},
"categoryName": {
"type": "string"
},
"suggestion": {
"type": "string",
"description": "按技能分类生成的通用建议,不含课程、AI、链接、时长或进度。"
}
}
},
"SkillLearningPathResponse": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SkillLearningPathItem"
}
}
}
},
"ApiResponseSkillCloudResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/SkillCloudResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseSkillMatchResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/SkillMatchResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResponseSkillLearningPathResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/SkillLearningPathResponse"
},
"requestId": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"UnauthorizedResponse": {
"type": "object",
"additionalProperties": false,
"required": [
"code",
"message",
"timestamp"
],
"properties": {
"code": {
"type": "integer",
"format": "int32",
"enum": [
401
]
},
"message": {
"type": "string",
"enum": [
"not authenticated"
]
},
"timestamp": {
"type": "string",
"enum": [
""
]
}
}
}
},
"securitySchemes": {
"bearerAuth": {
"type": "http",
"description": "通过 /auth/login 获取的 Access Token,请求头格式:Authorization: Bearer &lt;token&gt;",
"scheme": "bearer",
"bearerFormat": "JWT"
}
}
}
}