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.
 
 
 

2.8 KiB

V41 企业人才发现 API

V41 提供学生显式授权和企业岗位候选人发现。学生授权默认关闭;企业必须已认证,岗位必须属于当前企业、处于 PUBLISHED,并且具有 V39 enabled=true、APPROVED 的岗位画像。

接口

方法 路径 权限
GET /profile/me/talent-discovery STUDENT,仅本人
PUT /profile/me/talent-discovery STUDENT,仅本人
GET /companies/me/jobs/{jobId}/talent-recommendations 已认证 COMPANY,且岗位属于本人

统一前缀为 /api/v1。身份从 JWT subject 获取,客户端不得传 studentUserId、companyId 或 candidateId。

学生开关

无记录的 GET 返回 enabled=false、version=0,不会自动写库。PUT 请求体:

{"enabled":true,"expectedVersion":0}

expectedVersion 可省略;已有记录传入后必须匹配当前版本。并发冲突复用 409/9201。成功只记录 TALENT_DISCOVERY_PREFERENCE_UPDATED,审计 details 仅包含 enabled/version/requestId。

企业候选列表

page 从 0 开始,size 为 1–50。岗位画像不可用时返回 mode=UNAVAILABLE;没有合格候选时返回 mode=NO_ELIGIBLE_CANDIDATE。正常返回 mode=PERSONALIZED。

候选池排除:未授权学生、注销限制账号、无基础档案、曾向当前企业任一岗位投递过的学生(包括 WITHDRAWN/REJECTED)。其他企业的投递不影响当前企业发现。

PREFERENCE/RIASEC/ABILITY 三个信号按 40/35/25 计算,缺失信号不按 0 处罚而重新归一化;至少一个有效信号才进入列表。RIASEC 和能力只读取最新完成结果,能力结果还必须未过期;不读取答案、题目、答案键、评分规则或标签。服务端先计算全部候选并全局排序,再分页,保证分页正确。

企业候选卡仅返回:

{
  "candidateKey":"…",
  "candidateLabel":"开放人才候选人",
  "city":"合肥",
  "education":"本科",
  "graduationYear":2027,
  "skills":["Java","Spring Boot"],
  "fitBand":"HIGH",
  "summary":"岗位画像与候选人公开资料存在较高匹配度",
  "signalsAvailable":["PREFERENCE","RIASEC","ABILITY"]
}

不返回学生 ID、姓名、联系方式、简历、测评分数、候选评分、结果/答卷 ID 或岗位画像原始权重。candidateKey 为 HMAC-SHA256、按公司/岗位/学生/日期桶隔离的不透明展示键,本版没有用它换取详情或联系方式的接口。

版本与边界

V41 新增 Flyway V39__enterprise_talent_discovery.sql,不修改 V1–V38,不写 candidate_dimension_scores,不新增 feature flag、ErrorCode、消息或推荐历史。OpenAPI 由 159/196 增至实际 161/199(两个唯一 path、三个 operation)。自动化测试 1461/1461 通过;真实 MySQL/Docker 黑盒已通过(PASS=37 / FAIL=0)。