# 岗位详情页 API 接口文档 (`pages/jobdetail`) ## 1. 获取岗位精细详情 * **接口说明**: 加载岗位详情页时,获取该岗位的全部展示数据。 * **请求路径**: `/jobs/detail/{id}` * **请求方法**: `GET` * **接口参数**: 无 (通过 URL 路径传参) * **接口返回 JSON 数据**: | 字段名 | 类型 | 说明 | 示例值 | | :--- | :--- | :--- | :--- | | code | Number | 状态码 | 200 | | data | Object | 岗位详情对象 | { ... } | | data.title | String | 岗位名称 | "高级审计师" | | data.salary | String | 薪资范围 | "13K-23K" | | data.is_urgent | Boolean | 是否急招 | true | | data.location_text | String | 地点文字描述 | "上海市·黄浦区" | | data.tags | Array | 标签列表 | ["CPA", "四大经验"] | | data.description | String | 职位描述 (支持富文本) | "作为高级审计师..." | | data.requirements | Array | 任职要求列表 | ["本科以上", "3年背景"] | | data.hr_info | Object | HR 信息 | { "name": "丁先生", "avatar": "...", "title": "人事负责人" } | | data.company_info | Object | 公司概况 | { "name": "华财仁合", "logo": "...", "desc": "..." } | | data.map_info | Object | 地理位置 | { "lat": 31.22, "lng": 121.45, "address": "SOHO东海广场" } | --- ## 2. 获取申请进度状态 * **接口说明**: 决定详情页底部黄色/蓝色按钮的关键接口。根据用户是否已支付、是否已通过测评返回不同状态。 * **请求路径**: `/jobs/status` * **请求方法**: `GET` * **公共头部**: `Authorization: Bearer {Token}` * **接口参数**: | 参数名 | 类型 | 必填 | 说明 | 示例值 | | :--- | :--- | :--- | :--- | :--- | | job_id | Number | 是 | 岗位 ID | 101 | * **接口返回 JSON 数据**: | 字段名 | 类型 | 说明 | 示例值 | | :--- | :--- | :--- | :--- | | code | Number | 状态码 | 200 | | data | Object | 状态结果 | { ... } | | data.state | String | 状态标识码 | "paid" | | data.is_collected | Boolean | 当前用户是否已收藏该岗位 | false | * **状态码 (state) 说明**: * `initial`: 未咨询 -> 底部显示“咨询” * `unpaid`: 在聊天中谈妥但未支付 -> 底部显示“咨询”(点击弹支付) * `paid`: 已支付定金但未完成/未通过测评 -> 底部显示“开始测评” * `assessed`: 测评通过,符合资格 -> 底部显示“加入意向岗位”(即投递) * `added`: 已完成投递 -> 底部显示灰色“已加入意向岗位” --- ## 3. 收藏操作 * **接口说明**: 对岗位进行收藏或取消收藏。 * **请求路径**: `/jobs/collect` * **请求方法**: `POST` * **公共头部**: `Authorization: Bearer {Token}` * **接口参数**: | 参数名 | 类型 | 必填 | 说明 | 示例值 | | :--- | :--- | :--- | :--- | :--- | | job_id | Number | 是 | 岗位 ID | 101 | | action | String | 是 | 操作类型: `add` (收藏), `cancel` (取消) | "add" | * **接口返回 JSON 数据**: ```json { "code": 200, "msg": "操作成功", "data": { "is_collected": true } } ```