三峰全攻略
大觉寺进出的经典环线,连穿萝卜地北尖(1146 m)、阳台山(1278 m,海淀最高峰)、妙峰山(1291 m)三座千米峰。它被北京户外圈叫作单日徒步的「毕业线」,也是越野跑训练标尺——但「三峰」不是一个固定距离:同一座山,五条走法从 9.5 km 到 42 km,差别比名字大得多。按里程、爬升和你能挤出的时间选,而不是按名字选。
大觉寺进出的经典环线,连穿萝卜地北尖(1146 m)、阳台山(1278 m,海淀最高峰)、妙峰山(1291 m)三座千米峰。它被北京户外圈叫作单日徒步的「毕业线」,也是越野跑训练标尺——但「三峰」不是一个固定距离:同一座山,五条走法从 9.5 km 到 42 km,差别比名字大得多。按里程、爬升和你能挤出的时间选,而不是按名字选。
这里是可以动手筛选的版本:按强度挑环线、卡片/对比表切换、点开看分步路书、装备清单可勾选(勾选状态存在你自己的浏览器里)。里程与爬升按真实轨迹与公开路书口径整理,含那张保姆级路线图和 13 个点位的海拔剖面。
这里是可以真正动手的版本:按强度筛选线路、卡片/对比表切换、点开看分步路书、装备清单可勾选(勾选状态存在你自己的浏览器里)。线路里程与爬升取自两步路、六只脚的真实轨迹记录与公开路书。
北京顺义 · 京郊彩丘徒步。里程与爬升取自两步路、六只脚真实轨迹与公开路书,按「带谁去、有多少时间」直接选线。
配套在线版(可筛选、可对比):https://www.workbuddy.cn/space/d/VJmN2qziOs4wQ1R7HHKtte
本文档详细描述了招聘平台系统的RESTful API接口规范,包括请求格式、响应格式、错误码定义等。
v3.0.0
| 方式 | 示例 | 优先级 |
|---|---|---|
| URL参数 | /api/jobs?lang=en |
最高 |
| HTTP头 | Accept-Language: zh-CN |
中等 |
| 用户偏好 | 登录用户设置的默认语言 | 低 |
| 系统默认 | 配置的默认语言 | 最低 |
{
"success": true,
"data": {
"id": 1,
"title": "Software Engineer",
"description": "We are looking for a talented software engineer...",
// 其他字段
},
"i18n": {
"messages": {
"common.success": "操作成功",
"job.apply.success": "申请提交成功"
}
}
}Authorization: Bearer <token>| 角色 | 权限范围 |
|---|---|
candidate |
应聘者功能 |
company_admin |
企业管理功能 |
super_admin |
系统管理功能 |
GET /api/languages{
"success": true,
"data": [
{
"id": 1,
"code": "en",
"name": "English",
"is_default": true
},
{
"id": 2,
"code": "zh-CN",
"name": "简体中文",
"is_default": false
}
]
}GET /api/countries{
"success": true,
"data": [
{
"id": 1,
"code": "CN",
"name": "China",
"currency": "CNY"
},
{
"id": 2,
"code": "US",
"name": "United States",
"currency": "USD"
}
]
}GET /api/regions?country_id=1{
"success": true,
"data": [
{
"id": 1,
"country_id": 1,
"name": "Beijing"
},
{
"id": 2,
"country_id": 1,
"name": "Shanghai"
}
]
}POST /api/auth/register{
"email": "user@example.com",
"password": "password123",
"role": "candidate",
"language_id": 1
}{
"success": true,
"data": {
"id": 1,
"email": "user@example.com",
"role": "candidate",
"language_id": 1
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}POST /api/auth/login{
"email": "user@example.com",
"password": "password123"
}{
"success": true,
"data": {
"id": 1,
"email": "user@example.com",
"role": "candidate",
"language_id": 1
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"i18n": {
"messages": {
"auth.login.success": "登录成功"
}
}
}POST /api/auth/forgot-password{
"email": "user@example.com"
}GET /api/candidates/resumes{
"success": true,
"data": [
{
"id": 1,
"file_name": "resume.pdf",
"file_type": "pdf",
"size": 1024000,
"is_default": true,
"status": "approved"
}
]
}POST /api/candidates/resumes/upload
Content-Type: multipart/form-datafile: 简历文件is_default: 是否设为默认简历PUT /api/candidates/resumes/{id}/defaultGET /api/jobs| 参数 | 类型 | 描述 |
|---|---|---|
| keyword | string | 搜索关键词 |
| job_type | string | 职位类型(full_time, part_time) |
| job_category | string | 职位类别(tech, marketing) |
| country_id | integer | 国家ID |
| region_id | integer | 地区ID |
| salary_min | number | 最低工资 |
| salary_max | number | 最高工资 |
| experience_min | integer | 最低经验(年) |
| page | integer | 页码 |
| page_size | integer | 每页数量 |
| lang | string | 语言代码 |
{
"success": true,
"data": {
"jobs": [
{
"id": 1,
"title": "Software Engineer",
"company": {
"id": 1,
"name": "Tech Company",
"logo": "https://example.com/logo.png"
},
"job_type": "full_time",
"job_category": "tech",
"location": "Beijing, China",
"salary": "15K-25K CNY",
"experience": "3-5 years"
}
],
"pagination": {
"page": 1,
"page_size": 10,
"total": 100,
"total_pages": 10
}
}
}GET /api/jobs/{id}{
"success": true,
"data": {
"id": 1,
"title": "Software Engineer",
"description": "We are looking for a talented software engineer...",
"requirements": "- Bachelor's degree in Computer Science\n- 3+ years of experience...",
"responsibilities": "- Develop and maintain web applications\n- Collaborate with cross-functional teams...",
"benefits": "- Competitive salary\n- Flexible working hours...",
"company": {
"id": 1,
"name": "Tech Company",
"description": "A leading tech company specializing in...",
"website": "https://example.com",
"logo": "https://example.com/logo.png"
},
"job_type": "full_time",
"job_category": "tech",
"country": "China",
"region": "Beijing",
"salary_min": 15000,
"salary_max": 25000,
"currency": "CNY",
"experience_min": 3,
"experience_max": 5,
"education_level": "bachelor"
}
}POST /api/jobs/{id}/apply{
"resume_id": 1,
"cover_letter": "I am very interested in this position..."
}GET /api/candidates/applicationsstatus: 申请状态(pending, reviewed, accepted, rejected)page: 页码page_size: 每页数量GET /api/candidates/favoritesPOST /api/candidates/favorites{
"entity_type": "job",
"entity_id": 1
}DELETE /api/candidates/favorites/{id}GET /api/companies/mePUT /api/companies/me{
"name": "Tech Company",
"description": "A leading tech company...",
"website": "https://example.com",
"country_id": 1,
"region_id": 1,
"logo": "https://example.com/logo.png"
}POST /api/companies/jobs{
"title": "Software Engineer",
"description": "We are looking for a talented software engineer...",
"requirements": "- Bachelor's degree in Computer Science...",
"responsibilities": "- Develop and maintain web applications...",
"benefits": "- Competitive salary...",
"job_type_id": 1,
"job_category_id": 1,
"country_id": 1,
"region_id": 1,
"salary_min": 15000,
"salary_max": 25000,
"currency": "CNY",
"experience_min": 3,
"experience_max": 5,
"education_level": "bachelor"
}GET /api/companies/jobsstatus: 职位状态(active, inactive)page: 页码page_size: 每页数量PUT /api/companies/jobs/{id}PUT /api/companies/jobs/{id}/deactivateGET /api/companies/applicationsjob_id: 职位IDstatus: 申请状态page: 页码page_size: 每页数量GET /api/companies/applications/{id}/resumePUT /api/companies/applications/{id}/status{
"status": "reviewed",
"notes": "Good candidate, schedule an interview"
}POST /api/companies/interviews{
"application_id": 1,
"interview_date": "2024-01-15T14:00:00Z",
"interview_type": "online",
"location": "https://meeting.example.com/123",
"notes": "Please prepare for technical interview"
}GET /api/companies/interviewsGET /api/i18n/translations/{entity_type}/{entity_id}POST /api/i18n/translations{
"language_id": 2,
"entity_type": "job",
"entity_id": 1,
"field_name": "title",
"translation": "软件工程师"
}GET /api/i18n/content/{content_key}POST /api/i18n/content{
"language_id": 2,
"content_key": "home.title",
"content_value": "欢迎来到招聘网站"
}POST /api/admin/languages{
"code": "fr",
"name": "Français",
"is_default": false
}PUT /api/admin/languages/{id}/defaultPOST /api/admin/countries{
"code": "JP",
"name": "Japan",
"currency": "JPY"
}POST /api/admin/regions{
"country_id": 3,
"name": "Tokyo"
}GET /api/admin/usersrole: 用户角色status: 用户状态page: 页码page_size: 每页数量PUT /api/admin/users/{id}/status{
"status": "active"
}ws://example.com/ws?token={jwt_token}
| 类型 | 描述 |
|---|---|
| application_status_change | 申请状态变更 |
| interview_scheduled | 面试安排 |
| new_application | 新的职位申请 |
| message_received | 收到新消息 |
{
"type": "application_status_change",
"data": {
"application_id": 1,
"job_title": "Software Engineer",
"status": "reviewed",
"notes": "Good candidate"
},
"i18n": {
"message": "您的申请状态已更新为:已查看"
}
}| 错误码 | 描述 | HTTP状态码 |
|---|---|---|
| 20000 | 操作成功 | 200 |
| 40000 | 请求参数错误 | 400 |
| 40100 | 未授权 | 401 |
| 40300 | 权限不足 | 403 |
| 40400 | 资源不存在 | 404 |
| 40900 | 资源冲突 | 409 |
| 50000 | 服务器内部错误 | 500 |
| 50001 | 数据库错误 | 500 |
| 50002 | 第三方服务错误 | 500 |
GET /api/jobs/1?lang=zh-CN
Authorization: Bearer <token>{
"success": true,
"data": {
"id": 1,
"title": "软件工程师",
"description": "我们正在寻找一位才华横溢的软件工程师...",
"requirements": "- 计算机科学学士学位...",
"responsibilities": "- 开发和维护Web应用...",
"benefits": "- 有竞争力的薪资...",
"company": {
"id": 1,
"name": "科技公司",
"logo": "https://example.com/logo.png"
},
"job_type": "全职",
"job_category": "技术",
"location": "中国,北京",
"salary": "15K-25K CNY",
"experience": "3-5年"
},
"i18n": {
"messages": {
"job.detail.view": "查看职位详情",
"job.apply": "立即申请",
"job.favorite": "收藏职位"
}
}
}/api/v1/jobs缓存策略: