{"openapi": "3.1.0", "info": {"title": "OpenAPI definition", "version": "v0"}, "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": "学生投递、撤回、查询;企业查看和审核投递;时间线"}, {"name": "双向匹配", "description": "求职者意愿分、企业 HR 适配分、匹配状态"}, {"name": "系统", "description": "健康检查、应用信息"}, {"name": "Offer", "description": "企业录用邀请:创建、发送、接受/拒绝/洽谈、到期失效、提醒与时间线"}, {"name": "岗位", "description": "岗位创建、管理、查询"}, {"name": "个人资料", "description": "学生个人资料查询、更新与简历管理"}, {"name": "评价审核", "description": "评价审核与防刷:待审列表、审核决策、审核历史(仅 ADMIN)"}, {"name": "简历版本", "description": "学生简历版本管理、默认简历、导出任务"}, {"name": "双向匹配阈值", "description": "企业与求职者的匹配阈值配置"}, {"name": "岗位匹配", "description": "学生查看岗位匹配诊断(确定性规则)"}, {"name": "面试", "description": "面试创建、查看、响应、取消、完成"}, {"name": "求职偏好", "description": "学生求职偏好查询与保存"}, {"name": "消息", "description": "会话创建、消息发送、已读管理"}, {"name": "岗位评价", "description": "学生对已发布岗位进行评价"}, {"name": "企业", "description": "企业资料创建、查询与更新"}, {"name": "求职者评分卡", "description": "求职者评价聚合与评分卡"}], "paths": {"/profile/me": {"get": {"tags": ["个人资料"], "summary": "查询当前学生资料", "description": "未创建资料时返回 200 空对象,不自动创建", "operationId": "getMyProfile", "responses": {"200": {"description": "OK", "content": {"*/*": {"schema": {"$ref": "#/components/schemas/ApiResponseMapStringObject"}}}}}}, "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/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"}}}}}}}, "/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/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/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"}}}}}}}, "/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"}}}}}}}, "/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}/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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}/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/{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/ApiResponseMapStringObject"}}}}}}, "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/ApiResponseMapStringObject"}}}}}}, "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/ApiResponseMapStringObject"}}}}}}, "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"}}}}}}}, "/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}/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/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"}}}}}}}, "/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/{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"}}}}}}}, "/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"}}}}}}}, "/notifications/read-all": {"post": {"tags": ["通知"], "summary": "全部已读", "description": "标记当前用户全部通知已读(幂等)", "operationId": "markAllRead", "responses": {"200": {"description": "OK", "content": {"*/*": {"schema": {"$ref": "#/components/schemas/ApiResponseMapStringObject"}}}}}}}, "/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/{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}/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"}}}}}}}, "/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}/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}/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"}}}}}}}, "/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/{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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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/{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"}}}}}}}, "/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/{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"}}}}}}}, "/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/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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/unread-count": {"get": {"tags": ["通知"], "summary": "未读数", "description": "当前用户未读通知数", "operationId": "unreadCount", "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}/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}/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/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/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/filters": {"get": {"tags": ["岗位"], "summary": "岗位筛选选项", "description": "返回当前 PUBLISHED 岗位可用的城市、用工类型和薪资范围", "operationId": "getFilters", "responses": {"200": {"description": "OK", "content": {"*/*": {"schema": {"$ref": "#/components/schemas/ApiResponseMapStringObject"}}}}}}}, "/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/compare": {"get": {"tags": ["岗位评价"], "summary": "岗位对比", "description": "公开访问;ids 为 2-3 个公开岗位;返回公开岗位字段与公开评分", "operationId": "compare", "parameters": [{"name": "ids", "in": "query", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "OK", "content": {"*/*": {"schema": {"$ref": "#/components/schemas/ApiResponseListMapStringObject"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/info": {"get": {"tags": ["系统"], "summary": "应用信息", "description": "返回应用版本、运行时信息", "operationId": "info", "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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/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"}}}}}}}, "/auth/me": {"get": {"tags": ["认证"], "summary": "当前用户信息", "description": "需要 JWT 认证", "operationId": "me", "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}/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}/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/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"}}}}}}}, "/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/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/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/{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/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"}}}}}}}, "/": {"get": {"tags": ["API"], "summary": "API 信息", "description": "返回 API v0.1 基本信息", "operationId": "index", "responses": {"200": {"description": "OK", "content": {"*/*": {"schema": {"$ref": "#/components/schemas/ApiResponseMapStringObject"}}}}}}}, "/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", "parameters": [{"name": "months", "in": "query", "required": false, "schema": {"type": "integer", "format": "int32", "default": 6}, "description": "统计月数,默认 6,范围 1-24"}], "responses": {"200": {"description": "OK", "content": {"*/*": {"schema": {"$ref": "#/components/schemas/ApiResponseCandidateScoreTrendResponse"}}}}, "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"}}}}}}}, "/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"}}}}}}}}, "components": {"schemas": {"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"}}}}, "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"}}}, "SaveWeightRequest": {"type": "object", "properties": {"templateCode": {"type": "string"}, "weights": {"type": "object", "additionalProperties": {"type": "number"}}}}, "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"}}}, "ReviewWeightResponse": {"type": "object", "properties": {"source": {"type": "string"}, "templateCode": {"type": "string"}, "configuredWeights": {"type": "object", "additionalProperties": {"type": "number"}}, "updatedAt": {"type": "string", "format": "date-time"}}}, "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"}}}, "StudentMatchRuleRequest": {"type": "object", "properties": {"requiredHrScore": {"type": "integer", "format": "int32", "maximum": 100, "minimum": 0}}, "required": ["requiredHrScore"]}, "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"}}}, "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"}}}, "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"}}}}, "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"}}}, "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"]}, "CompanyMatchRuleRequest": {"type": "object", "properties": {"requiredCandidateScore": {"type": "integer", "format": "int32", "maximum": 100, "minimum": 0}}, "required": ["requiredCandidateScore"]}, "ScoreRequest": {"type": "object", "properties": {"score": {"type": "integer", "format": "int32", "maximum": 100, "minimum": 0}}, "required": ["score"]}, "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"]}, "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"}}, "required": ["applicationId", "description", "expireAt", "title", "workCity"]}, "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"]}, "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"]}, "InterviewRespondRequest": {"type": "object", "properties": {"action": {"type": "string", "minLength": 1}, "reason": {"type": "string"}}, "required": ["action"]}, "InterviewCancelRequest": {"type": "object", "properties": {"reason": {"type": "string"}}}, "CreateConversationRequest": {"type": "object", "properties": {"participantUserId": {"type": "integer", "format": "int64"}}, "required": ["participantUserId"]}, "SendMessageRequest": {"type": "object", "properties": {"conversationId": {"type": "integer", "format": "int64"}, "content": {"type": "string", "maxLength": 2000, "minLength": 0}}, "required": ["content", "conversationId"]}, "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"]}, "VerificationSubmitRequest": {"type": "object", "properties": {"materialsJson": {"type": "string", "minLength": 1}}, "required": ["materialsJson"]}, "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"}}}, "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"]}, "ApplicationCreateRequest": {"type": "object", "properties": {"jobId": {"type": "integer", "format": "int64"}}, "required": ["jobId"]}, "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"}, "meetingUrlValid": {"type": "boolean"}, "addressValid": {"type": "boolean"}}, "required": ["endAt", "interviewType", "startAt", "title"]}, "ReviewDecisionRequest": {"type": "object", "properties": {"decision": {"type": "string", "minLength": 1, "pattern": "^(APPROVED|REJECTED)$"}, "reason": {"type": "string", "maxLength": 500, "minLength": 0}}, "required": ["decision"]}, "VerificationDecisionRequest": {"type": "object", "properties": {"decision": {"type": "string", "minLength": 1}, "reason": {"type": "string"}}, "required": ["decision"]}, "OfferStatusRequest": {"type": "object", "properties": {"status": {"type": "string", "minLength": 1, "pattern": "^(SENT|NEGOTIATING|ACCEPTED|REJECTED|EXPIRED)$"}, "reason": {"type": "string", "maxLength": 255, "minLength": 0}}, "required": ["status"]}, "JobStatusRequest": {"type": "object", "properties": {"status": {"type": "string", "minLength": 1, "pattern": "^(PUBLISHED|CLOSED)$"}}, "required": ["status"]}, "ApplicationStatusRequest": {"type": "object", "properties": {"status": {"type": "string", "minLength": 1, "pattern": "^(VIEWED|INTERVIEW|REJECTED|HIRED)$"}}, "required": ["status"]}, "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"}}}, "WeightTemplateResponse": {"type": "object", "properties": {"code": {"type": "string"}, "name": {"type": "string"}, "description": {"type": "string"}, "weights": {"type": "object", "additionalProperties": {"type": "number"}}}}, "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"}}}, "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"}}}, "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"}}}}, "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"}}}, "CompanyPublicView": {"type": "object", "properties": {"id": {"type": "integer", "format": "int64"}, "name": {"type": "string"}, "logoUrl": {"type": "string"}, "description": {"type": "string"}, "industry": {"type": "string"}, "verified": {"type": "boolean"}}}, "ApiResponse": {"type": "object", "properties": {"code": {"type": "integer", "format": "int32"}, "message": {"type": "string"}, "data": {"type": "object", "additionalProperties": {}}, "requestId": {"type": "string"}, "timestamp": {"type": "string", "format": "date-time"}}}, "CandidateScoreCardResponse": {"type": "object", "properties": {"candidateId": {"type": "integer", "format": "int64"}, "status": {"type": "string"}, "overallScore": {"type": "number", "nullable": true}, "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"}}}, "CandidateFeedbackSummary": {"type": "object", "properties": {"totalCount": {"type": "integer", "format": "int32"}, "averageRating": {"type": "number"}, "ratingDistribution": {"type": "object", "additionalProperties": {"type": "integer"}}, "tags": {"type": "array", "items": {"$ref": "#/components/schemas/TagCount"}}}}, "TagCount": {"type": "object", "properties": {"name": {"type": "string"}, "count": {"type": "integer", "format": "int32"}}}, "CandidateMatchSignals": {"type": "object", "properties": {"candidateInterestScore": {"$ref": "#/components/schemas/MatchSignal"}, "hrSuitabilityScore": {"$ref": "#/components/schemas/MatchSignal"}}}, "MatchSignal": {"type": "object", "properties": {"average": {"type": "number", "nullable": true}, "sampleCount": {"type": "integer", "format": "int32"}}}, "CandidateScoreTrendResponse": {"type": "object", "properties": {"candidateId": {"type": "integer", "format": "int64"}, "months": {"type": "integer", "format": "int32"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/CandidateScoreTrendItem"}}}}, "CandidateScoreTrendItem": {"type": "object", "properties": {"month": {"type": "string"}, "feedbackCount": {"type": "integer", "format": "int32"}, "averageRating": {"type": "number"}, "ratingScore": {"type": "number"}}}, "CandidatePercentileResponse": {"type": "object", "properties": {"candidateId": {"type": "integer", "format": "int64"}, "status": {"type": "string"}, "scoreType": {"type": "string"}, "score": {"type": "number", "nullable": true}, "percentile": {"type": "number", "nullable": true}, "cohortSize": {"type": "integer", "format": "int32"}, "sampleCount": {"type": "integer", "format": "int32"}, "minimumSampleCount": {"type": "integer", "format": "int32"}}}, "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"}}}, "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"}}}}}}