# 招聘流程

Version: a2bc6a0f021ec643

模块地址：https://sandbox.maimai.dev.planahr.top/api/v1/hiring/tools；权限 hiring:read / hiring:write。写权限不包含读权限，均不扩大用户自身权限。

操作名：read、create、transition、assign、collaborate、note、event、jobState、jobAssign、candidatePolicy、candidateAssign、resolveImport、personalNote。工具名称前缀 hiring_ 不用于 POST 的 operation。

GET 加 ?operation=操作名 只取单项 schema；?view=summary 只取目录。POST 不带查询参数，使用 {operation,input} 和 Content-Type: application/json。

```bash
curl 'https://sandbox.maimai.dev.planahr.top/api/v1/hiring/tools?operation=read' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

- 创建招聘流程：先候选人/岗位详情确认目标与状态，再 hiring.create；一个候选人可对应多个不同岗位的流程，重复的活跃关联会被拒绝。
- 推进流程：先 hiring.read/detail 取得当前 version，再 hiring.transition 记录真实阶段与 reason；Offer/入职按 schema 填实际日期和确认字段。
- 暂停/关闭岗位：先 hiring.read/jobImpact，取得 version、impactToken 和关联流程；与用户明确影响及 Offer 处置，再 hiring.jobState。预览已过时则重新读取。
- 分配负责人：先 context 取得 active 成员的 ID，再用 hiring.assign / candidateAssign / jobAssign。转交业务负责人不会转交创作者身份或作者的私密备注。
- read 的资源：context（当前身份及成员 ID）、flows（分页流程）、detail（流程详情和版本）、dashboard、personalNote、jobImpact。团队可见不代表可编辑；私密备注只对作者开放。
- jobState/jobAssign 还需 jobs:write；candidateAssign/candidatePolicy 还需 candidates:write。明确任务需要哪些权限，再申请对应 :read/:write。

以下仅为虚构模板；ID、version 必须从真实读取结果取得，写入 requestId 为每个逻辑动作生成且重试保持不变。

### 确认当前身份和成员 ID（只读）

POST /api/v1/hiring/tools

```json
{
  "operation": "read",
  "input": {
    "resource": "context",
    "input": {}
  }
}
```

### 查询招聘流程（只读）

POST /api/v1/hiring/tools

```json
{
  "operation": "read",
  "input": {
    "resource": "flows",
    "input": {}
  }
}
```

### 读取自己的工作台（只读）

POST /api/v1/hiring/tools

```json
{
  "operation": "read",
  "input": {
    "resource": "dashboard",
    "input": {}
  }
}
```

### 预览岗位状态变更的影响（只读）

POST /api/v1/hiring/tools

```json
{
  "operation": "read",
  "input": {
    "resource": "jobImpact",
    "input": {
      "jobId": 1
    }
  }
}
```

### 把候选人关联到岗位（写入示例）

POST /api/v1/hiring/tools

```json
{
  "operation": "create",
  "input": {
    "candidateId": "1",
    "jobId": 1,
    "requestId": "example-flow-001"
  }
}
```
