退休年龄计算器 (retirement-age-calculator)
知识产权声明
本技能及相关文档的著作权归作者所有。
使用许可:
- ✅ 允许个人学习、研究、非商业用途使用
- ✅ 允许修改后个人使用
- ❌ 禁止直接复制核心算法用于商业产品或竞争性服务
- ❌ 禁止移除或修改作者署名后重新分发
- ❌ 禁止将本技能包装成独立产品对外销售
免责声明: 本技能提供的计算结果仅供参考,实际退休时间以当地社保部门核定为准。
基于中国渐进式延迟退休政策(2025年1月1日起实施)的退休年龄计算工具。覆盖男职工、女职工(原50岁退休/原55岁退休)三种人群的计算,返回精确的退休年龄、退休日期及延迟月数。
政策背景
根据《全国人民代表大会常务委员会关于实施渐进式延迟法定退休年龄的决定》,自 2025年1月1日 起实施渐进式延迟退休政策。此前已按原政策达到退休年龄的人员不受影响。
系统架构
┌─────────────────────────────────────────────────┐
│ 用户输入层 │
│ gender / birth_date / female_type │
└────────────────────┬────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ 参数校验层 │
│ 格式校验 → 枚举值校验 → 业务逻辑校验 │
└────────────────────┬────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ 核心计算引擎 │
│ │
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ 人群参数匹配 │ │ 延迟月数计算 │ │
│ │ │ │ │ │
│ │ male → 60/63 │ │ diff = (退休月 - 2025-01) │ │
│ │ f_55 → 55/58 │ │ delay = diff // step │ │
│ │ f_50 → 50/55 │ │ delay = min(delay, max) │ │
│ └──────────────┘ └──────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ 结果计算 │ │
│ │ 退休年龄 = base + delay │ │
│ │ 退休日期 = birth + 退休年龄 │ │
│ └──────────────────────────────────────────┘ │
└────────────────────┬────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ 输出格式化层 │
│ JSON响应:retirement_age / retirement_date │
│ delay_months / note │
└─────────────────────────────────────────────────┘
核心算法
人群参数表
| 人群 | 参数键 | 基础年龄 | 上限年龄 | 步长(月) | 上限延迟(月) |
|---|---|---|---|---|---|
| 男职工 | male |
60 | 63 | 4 | 36 |
| 女职工(原55退休) | female_55 |
55 | 58 | 4 | 36 |
| 女职工(原50退休) | female_50 |
50 | 55 | 2 | 60 |
计算逻辑
Step 1: 基础退休日期 = 出生日期 + 基础年龄(按年加)
Step 2: 如果基础退休日期 ≤ 2025-01-01,则延迟月数 = 0
Step 3: 否则:
相差月数 = (基础退休年 - 2025) × 12 + (基础退休月 - 1)
延迟月数 = floor(相差月数 / 步长月数)
延迟月数 = min(延迟月数, 上限延迟)
Step 4: 最终退休年龄(月数)= 基础年龄 × 12 + 延迟月数
Step 5: 最终退休日期 = 出生日期 + 最终退休年龄(按月加)
计算公式
延迟月数 = min(
floor(
((出生年 + 基础年龄 - 2025) × 12 + (出生月 - 1)) / 步长月数
),
(上限年龄 - 基础年龄) × 12
)
到达上限的出生年份参考
| 人群 | 到达上限的出生年份 | 说明 |
|---|---|---|
| 男职工 | 1977年1月及以后 | 均63岁退休 |
| 女职工(原55) | 1982年1月及以后 | 均58岁退休 |
| 女职工(原50) | 1985年1月及以后 | 均55岁退休 |
快速使用指南
场景1:查询自己的退休年龄
# 男性,1990年5月出生
curl -X POST http://your-domain.com/retirement \
-H "Content-Type: application/json" \
-d '{"gender": "male", "birth_date": "1990-05"}'
# 返回:退休年龄63岁,退休日期2053-05
场景2:查询女性退休年龄(需指定原退休类型)
# 女性(原50岁退休),1980年3月出生
curl -X POST http://your-domain.com/retirement \
-H "Content-Type: application/json" \
-d '{"gender": "female", "birth_date": "1980-03", "female_type": "50"}'
# 女性(原55岁退休),1975年1月出生
curl -X POST http://your-domain.com/retirement \
-H "Content-Type: application/json" \
-d '{"gender": "female", "birth_date": "1975-01", "female_type": "55"}'
场景3:获取详细信息(含政策进度)
curl -X POST http://your-domain.com/retirement \
-H "Content-Type: application/json" \
-d '{"gender": "male", "birth_date": "1977-01", "detail": true}'
场景4:批量查询
curl -X POST http://your-domain.com/retirement/batch \
-H "Content-Type: application/json" \
-d '{
"items": [
{"gender": "male", "birth_date": "1970-01"},
{"gender": "female", "birth_date": "1985-01", "female_type": "50"},
{"gender": "female", "birth_date": "1975-03", "female_type": "55"}
]
}'
输入参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
gender |
string | 是 | - | 性别,枚举值:male(男)、female(女) |
birth_date |
string | 是 | - | 出生年月,格式:YYYY-MM,例如 1990-05 |
female_type |
string | 否 | "55" |
女性退休类型。"50"(原50岁退休)/ "55"(原55岁退休)。仅 gender="female" 时有效 |
detail |
boolean | 否 | false |
是否返回详细信息(含 base_age、max_age、delay_progress_pct 等) |
输出结果
| 字段名 | 类型 | 说明 |
|---|---|---|
retirement_age |
string | 退休年龄描述,如 "61岁3个月"、"60岁" |
retirement_date |
string | 退休日期,格式 YYYY-MM |
delay_months |
integer | 实际延迟月数 |
age_years |
integer | 退休年龄(年部分) |
age_months |
integer | 退休年龄(月部分) |
policy |
string | 政策说明 |
note |
string | 备注说明,如"您的退休时间按原政策执行" |
详细信息模式(detail=true)额外返回字段
| 字段名 | 类型 | 说明 |
|---|---|---|
base_age |
integer | 基础退休年龄 |
max_age |
integer | 上限退休年龄 |
step_month |
integer | 步长月数 |
delay_progress_pct |
float | 延迟进度百分比(0-100%) |
gender |
string | 用户输入的性别 |
female_type |
string | 用户输入的女性退休类型 |
接口地址
POST /retirement
Content-Type: application/json
请求示例
示例1:男性用户
请求:
{
"gender": "male",
"birth_date": "1970-01"
}
响应:
{
"code": 0,
"message": "success",
"data": {
"retirement_age": "61岁3个月",
"retirement_date": "2031-04",
"delay_months": 15,
"age_years": 61,
"age_months": 3,
"policy": "渐进式延迟退休政策(2025年实施)",
"note": "根据渐进式延迟退休政策,您的退休年龄延迟了15个月。"
}
}
示例2:女性(原50岁退休)
请求:
{
"gender": "female",
"birth_date": "1975-03",
"female_type": "50"
}
响应:
{
"code": 0,
"message": "success",
"data": {
"retirement_age": "50岁1个月",
"retirement_date": "2025-04",
"delay_months": 1,
"age_years": 50,
"age_months": 1,
"policy": "渐进式延迟退休政策(2025年实施)",
"note": "根据渐进式延迟退休政策,您的退休年龄延迟了1个月。"
}
}
示例3:已达到上限
请求:
{
"gender": "male",
"birth_date": "1985-06"
}
响应:
{
"code": 0,
"message": "success",
"data": {
"retirement_age": "63岁",
"retirement_date": "2048-06",
"delay_months": 36,
"age_years": 63,
"age_months": 0,
"policy": "渐进式延迟退休政策(2025年实施)",
"note": "根据渐进式延迟退休政策,您的退休年龄延迟了36个月。"
}
}
示例4:政策前已退休(无延迟)
请求:
{
"gender": "male",
"birth_date": "1960-06"
}
响应:
{
"code": 0,
"message": "success",
"data": {
"retirement_age": "60岁",
"retirement_date": "2020-06",
"delay_months": 0,
"policy": "渐进式延迟退休政策(2025年实施)",
"note": "您的退休时间在政策生效之前,按原政策执行,无需延迟。"
}
}
错误码
| code | message | 说明 |
|---|---|---|
| 0 | success | 成功 |
| 400 | 缺少必填参数: xxx | 请求参数缺失 |
| 400 | gender 必须为 'male' 或 'female' | 性别参数无效 |
| 400 | female_type 必须为 '50' 或 '55' | 女性退休类型无效 |
| 400 | 出生日期格式错误 | birth_date 格式非 YYYY-MM |
| 500 | 服务器内部错误: xxx | 服务端异常 |
部署说明
环境要求
- Python >= 3.8
- Flask >= 2.3
依赖安装
pip install -r requirements.txt
启动方式
# 开发环境
python server.py
# 生产环境(推荐)
gunicorn server:app -b 0.0.0.0:8080 -w 4
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
PORT |
8080 | 服务监听端口 |
DEBUG |
false | 是否开启调试模式 |
健康检查
GET /health
返回:
{
"status": "ok",
"service": "retirement-calculator"
}
测试验证
# 运行全部单元测试(27个覆盖全部边界)
python -m pytest tests/test_core.py -v
# 手动验证
python tests/manual_test.py
完整文档索引
| 文件 | 用途 |
|---|---|
core.py |
核心算法(退休年龄计算逻辑) |
server.py |
Flask HTTP API 服务 |
skill_config.json |
腾讯 Skills 平台配置清单 |
openapi.yaml |
OpenAPI 3.0 规范文档 |
tests/test_core.py |
27个单元测试 |
参数参考
安全边际与准确性说明
由于退休年龄计算基于国家政策公式,结果具有确定性。但请注意:
- 政策可能调整:未来政策可能进一步修改,建议关注官方最新发布
- 个人差异:特殊工种、病退、退职等情况不在本技能覆盖范围内
- 精确到月:所有日期计算精确到月份,不考虑具体日期差异
- 批量限制:批量接口单次最多处理 100 条
延迟进度参考表
| 延迟进度 | 男性(60→63) | 女性55(55→58) | 女性50(50→55) |
|---|---|---|---|
| 0%(基础) | 出生 ≤ 1965-01 | 出生 ≤ 1970-01 | 出生 ≤ 1975-01 |
| 25% | 出生 ~ 1968-01 | 出生 ~ 1973-01 | 出生 ~ 1977-07 |
| 50% | 出生 ~ 1971-01 | 出生 ~ 1976-01 | 出生 ~ 1980-01 |
| 75% | 出生 ~ 1974-01 | 出生 ~ 1979-01 | 出生 ~ 1982-07 |
| 100%(上限) | 出生 ≥ 1977-01 | 出生 ≥ 1982-01 | 出生 ≥ 1985-01 |
数据源
- 政策依据: 《全国人民代表大会常务委员会关于实施渐进式延迟法定退休年龄的决定》
- 生效日期: 2025年1月1日
- 适用范围: 全国各类用人单位职工
局限性
- 适用范围有限:本技能仅适用于常规企业职工,公务员、事业单位人员可能有不同规定
- 特殊工种未覆盖:从事井下、高空、高温、特别繁重体力劳动或其他有害身体健康工作的职工可提前退休
- 病退/退职未覆盖:因病或非因工致残完全丧失劳动能力的情况需单独计算
- 弹性退休未覆盖:当前版本不支持提前或延后退休的弹性选择(规划中)
- 政策时间节点:当前计算基于2025年政策,未来若有新政策需同步更新
版本历史
| 版本 | 日期 | 说明 |
|---|---|---|
| 1.0.0 | 2025-01-01 | 初始版本,支持渐进式延迟退休政策计算 |