# Compensation Damages Calculator

> 专注劳动法领域的补偿金及赔偿金智能计算技能。根据用户提供的案件信息、内置计算公式、政策数据 API/cache 及联网检索兜底，精准计算经济补偿金、赔偿金、未签书面劳动合同二倍工资及竞业限制补偿金，生成结构清晰的计算明细，并附带法条引用与实务法律建议。当用户询问经济补偿金、离职补偿金、N、N+1、2N赔偿金、未签劳动合同二倍工资、违法解除赔偿金、竞业限制补偿金等场景时触发。输出格式可根据用户需求灵活调整，不强制输出Excel。

- Skill: `cslawyer1985/compensation-damages-calculator` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add cslawyer1985/compensation-damages-calculator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cslawyer1985/compensation-damages-calculator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: cslawyer1985 (https://skillmd.com/u/cslawyer1985)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cslawyer1985/compensation-damages-calculator

---


# 补偿金及赔偿金计算

## 触发场景

当用户描述以下场景时触发本技能：

- 经济补偿金、离职补偿金、赔偿金怎么算
- 被辞退、裁员、合同到期不续签、协商解除能拿多少钱
- N、N+1、2N赔偿金计算
- 未签劳动合同的赔偿金、二倍工资怎么算
- 没有签合同工作了多少个月赔多少
- 违法解除赔偿金标准
- 竞业限制补偿金怎么算、竞业协议补偿多少
- 经济补偿工龄计算、工龄系数N怎么算
- 月均工资S计算、社平工资三倍封顶
- 劳动合同补偿标准、劳动争议赔偿金额
- 非过失辞退、医疗期满赔偿、不胜任工作赔偿
- 被迫离职补偿（未缴社保、克扣工资、恶劣劳动环境）
- 劳动合同赔偿计算器、补偿金明细表格

## 技能说明

本技能专用于劳动法领域**三类**补偿/赔偿金的精准计算：

1. **未签书面劳动合同赔偿金**（二倍工资）
2. **离职经济补偿及赔偿金**（N、N+1、2N）
3. **竞业限制经济补偿金**

调用时须严格遵循以下工作流程。

---

## 数据源优先级（严格执行）

1. **[优先] 政策数据 API**：通过 `calc_engine.py` 请求 `COMPENSATION_DAMAGES_POLICY_API_URL` 配置的补偿金及赔偿金政策数据 API。API 只返回政策数据，不计算金额。
2. **[按需兜底] web_search 联网检索**（[注意] **总轮数不超过2轮**）：仅当当前计算分支已经明确、且 API/cache 未返回该分支必需的政策字段时触发。
   - S、未签合同二倍工资、竞业限制补偿需要最低工资时，缺 `policy_data.min_wage` 才检索。
   - N、N+1 三倍封顶需要社平工资时，缺 `policy_data.social_avg_wage` 才检索。
   - 计算结论需要法条依据时，优先使用 `policy_data.law_basis`。
3. **[计算说明] References**：`references/formulas.md` 仅用于公式、倍率规则、字段含义和边界说明，不作为政策数据主来源。
4. **[禁止] 严禁凭空编造数据**：API、缓存和网络均无法找到时，告知用户"该地区该项标准暂缺，建议致电当地人社局12333咨询"，绝不套用其他省份数据。

### API 配置

### 配置步骤

1. 前往 [https://open.delilegal.com/personal/keys](https://open.delilegal.com/personal/keys) 注册/登录
2. 创建应用并获取 API Key
3. 将 API Key 填入技能目录下的 `config.json` 文件：
   ```json
   {
     "apikey": "你的API Key"
   }
   ```

> ⚠️ **未配置 API Key 时**，不得执行检索，必须先提示用户：
> "config.json 中的 apikey 尚未配置。请前往 https://open.delilegal.com/personal/keys 创建 API Key，并填入技能目录下的 config.json 文件中。"

### 社平工资三口径说明（三倍封顶用）

政策数据 API 的 `social_avg_wage` 支持三种口径，使用时须注意：

| 口径 | 工资水平 | 补偿金计算的实务适用 |
|------|---------|-----------------|
| **城镇非私营单位就业人员平均工资** | 最高 | **默认口径**——大多数省市仲裁/法院采用此标准判断三倍封顶 |
| **全口径城镇单位就业人员平均工资** | 居中 | 部分省份（如广东、山东等地）社保缴费基数及部分地方判例以此为准 |
| **城镇私营单位就业人员平均工资** | 最低 | 极少单独使用，仅供参考 |

> **缺参数时的联网检索策略**：
> 1. 先请求政策数据 API/cache；如有数据直接用。
> 2. 若 API 明确返回 `needs_web_search: true`，执行 `web_search`，关键词：`"[省市]YYYY年城镇非私营单位就业人员平均工资"` 或 `"[省市]YYYY年社平工资"`。
> 3. 如联网也无法确认，**询问用户**是否知晓当地数据，或告知建议致电12333；**不得代入其他省数据**。

### web_search 规则
- 单次任务**累计不超过2轮**
- 最需联网查询的数据：**当地上年度城镇职工月平均工资**（用于三倍封顶判断）
- 默认优先搜索"城镇非私营单位"口径；若当地实务明确适用全口径，切换后须在备注中注明
- 检索关键词示例：`"[城市/省]YYYY年城镇非私营单位就业人员平均工资"` 或 `"[省市]YYYY年社平工资"`
- API 已返回当前计算分支所需政策数据时，不因“可能有更新”而主动联网检索。
- 联网检索只用于补齐政策数据；公式、倍率、金额计算仍交由 `calc_engine.py` 完成。

---

## 交互策略：漏斗式提问

- **不要一次性提问所有内容**
- 先根据已知信息给出初步判断，再按需补充采集缺失字段
- 如信息不足，先给出同类案件的计算示例，再索要关键信息

### 必采信息矩阵

**通用必采（所有案件）：**
- 发生地（省 + 市）——用于查最低工资标准
- 用工起始日期（年月）
- 劳动合同解除/终止日期（年月）
- 离职前12个月应得月工资总额（含奖金、津贴、补贴；不含非货币性福利）
- 工作不满12个月时：实际工作月数及各月工资

**未签合同赔偿金追加：**
- 是否签订书面劳动合同（未签/补签时间）
- 用工满1个月后未签的具体月份区间
- 各赔偿月份的实际应得月工资（如差异不大可取平均值）

**离职补偿/赔偿金追加：**
- 离职原因（协商/辞退/裁员/合同到期/被迫离职/违法辞退等）
- 如属非过失辞退：是否提前30天书面通知（影响是否有代通知金）
- 当地上年度职工月平均工资（用于三倍封顶判断，需联网确认）

**竞业限制补偿金追加：**
- 竞业限制协议约定的：期限（月数）、补偿比例/金额
- 无约定比例：默认按30%计算，期限>1年时建议50%
- 当地最低工资标准（作为月补偿金下限）

---

## 核心计算模块

### 政策数据获取与计算说明

`scripts/calc_engine.py` 的计算 action 在入参包含 `region`、`province` 或 `city` 且缺少对应显式政策参数时，通过 `scripts/policy_data.py` 获取政策数据。`policy_data.py` 会先读取本地 `.policy_cache/{normalized_region}__{date}__{social_avg_year}__{wage_caliber}.json` 文件缓存；缓存不存在时再携带 `config.json` 中的 `apikey` 请求统一政策数据 API。

也可显式附带 `policy_data` 字段用于测试或外部编排。显式传入的 `local_min_wage`、`social_avg_monthly` 优先于 API。

`references/formulas.md` 仅作为计算公式、倍率规则和边界说明参考；最低工资、社平工资和法条全文不再从 references Markdown 读取。

### scripts 可调用操作清单

运行原则：
- `scripts/policy_data.py` 请求统一接口 `POST /api/v1/skill/calculator`，请求体由脚本自动包装为 `{"resource_type":"compensation-damages-calculator","payload":<原payload>}`。
- `scripts/calc_engine.py` 的入参必须包含 `action`；正式案件计算优先传 `region` 让脚本获取政策数据，测试或外部编排可显式传 `policy_data`。
- 公式、上下限、折算和 Excel 样式由脚本实现；`SKILL.md` 只负责选择 action、补齐输入和输出解释。

`scripts/policy_data.py` 支持：

| action | 用途 | 关键入参 |
|--------|------|----------|
| `api_snapshot` / `fetch_api_snapshot` / `policy_data` | 获取最低工资、社平工资、法条依据和说明 | `region`、`date`、`social_avg_year`、`wage_caliber` |

`scripts/calc_engine.py` 支持：

| action | 用途 | 关键入参 | 是否需要 `policy_data` |
|--------|------|----------|------------------------|
| `calc_s` | 计算月均工资 S | `total_income_12m` 或 `monthly_wages`、`actual_months`；最低工资可由 `local_min_wage` 或政策数据提供 | 条件需要 |
| `calc_n` | 计算工龄系数 N | `start_year`、`start_month`、`end_year`、`end_month` | 否 |
| `no_contract` | 计算未签书面劳动合同二倍工资额外部分 | `avg_monthly_wage`、`months`；可选不满月字段和最低工资 | 条件需要 |
| `compensation_n` | 计算经济补偿金 N | `s`、`n`；三倍封顶需 `social_avg_monthly` 或政策数据 | 条件需要 |
| `n_plus_1` | 计算 N+1 | `s`、`n`、`last_month_wage`；三倍封顶需 `social_avg_monthly` 或政策数据 | 条件需要 |
| `illegal_2n` | 计算违法解除/终止赔偿金 2N | `s`、`n` | 否 |
| `non_compete` | 计算离职后竞业限制补偿 | `avg_monthly_wage`、`non_compete_months`；可选 `agreed_rate` 或 `agreed_monthly_amount`、最低工资 | 条件需要 |
| `min_wage_lookup` | 查询最低工资 | `region`、`date` | 是 |
| `social_avg_wage_lookup` | 查询社平工资 | `region`、`social_avg_year` 或 `year`、`wage_caliber` | 是 |
| `export_excel` / `export_to_excel` | 导出计算明细 Excel | `rows` 或 `detail_rows`，可选 `output_path`、`case_summary` | 否 |

### scripts 命令生成规范

生成命令时必须使用仓库根目录相对路径，不要省略 `python3`，不要调用已删除的 references 动态数据文件。

```bash
python3 labor-fee-calculator/compensation-damages-calculator/scripts/policy_data.py '{"action":"api_snapshot","region":"上海市","date":"2025-01-01","social_avg_year":2023,"wage_caliber":"urban_non_private"}'
```

```bash
python3 labor-fee-calculator/compensation-damages-calculator/scripts/calc_engine.py '{"action":"calc_n","start_year":2020,"start_month":1,"end_year":2025,"end_month":6}'
```

复杂 JSON 或完整 `policy_data` 优先使用 `@文件`：

```bash
python3 labor-fee-calculator/compensation-damages-calculator/scripts/calc_engine.py @/absolute/path/to/payload.json
```

命令生成校验规则：
- JSON 顶层必须是对象，且必须包含 `action`。
- JSON 使用双引号，整段 JSON 在 shell 中用单引号包裹；布尔值使用 JSON 的 `true` / `false`。
- 需要政策数据的 action，应传 `region` 让脚本自动获取，或把 `policy_data.py` 响应中的 `body` 放入 `calc_engine.py` 入参的 `policy_data` 字段。
- `calc_engine.py` 与 `policy_data.py` 成功时输出均应包含 `"success": true` 和 `"body"`。
- 命令生成后，应优先用 `python3 -m py_compile` 或实际执行命令做冒烟验证。

### 模块一：未签书面劳动合同赔偿金（二倍工资额外部分）

适用条件：用工满1个月次日起至满1年前1日，且不存在劳动者拒签、不可抗力、劳动者故意或重大过失等免除情形。计算使用 `no_contract`，由脚本处理赔偿月数、最低工资下限和不满月折算。

> [注意] 视为已订立无固定期限劳动合同后，劳动者再主张二倍工资的，通常不予支持。

### 模块二：离职经济补偿/赔偿金

按离职原因选择 action：先用 `calc_s` 计算月均工资 S，用 `calc_n` 计算工龄系数 N，再调用 `compensation_n`、`n_plus_1` 或 `illegal_2n`。三倍封顶、12年上限、N+1代通知金和 2N 不适用三倍封顶等逻辑均由脚本处理，输出时说明工资口径和政策来源。

高收入案件须确认社平工资口径。默认使用城镇非私营单位就业人员月平均工资；若当地仲裁/法院明确适用全口径，切换口径并在备注中注明来源。

**2N vs 继续履行的程序选择（司法解释二第16、18条）：**

劳动者主张违法解除时，可在以下两条路径中选择：

- **路径A（要求继续履行）**：用人单位支付违法解除决定作出后至劳动合同继续履行前一日的**工资**（按正常劳动工资标准支付）；赔偿金2N不支持
- **路径B（放弃继续履行）**：主张违法解除赔偿金2N = S × N × 2

> **第16条"劳动合同已不能继续履行"的认定情形**（出现以下情形，路径A通常不被支持）：
> 1. 劳动合同在仲裁/诉讼期间期满（且无法定续订情形）
> 2. 劳动者已开始享受基本养老保险待遇
> 3. 用人单位被宣告破产
> 4. 用人单位解散（合并/分立除外）
> 5. 劳动者已与其他单位建立劳动关系，严重影响本职工作且拒不改
> 6. 其他客观不能履行的情形

> [注意] 路径A（工资补发）与路径B（2N赔偿金）**不可同时主张**，须择一

### 模块三：竞业限制补偿金

使用 `non_compete`。需确认离职前12个月平均工资、竞业限制期限、约定比例或约定月金额、当地最低工资。期限封顶、默认比例、最低工资下限和超过1年的提示由脚本处理。

**新增规则——在职竞业限制无需支付补偿（司法解释二第14条）：**
- 用人单位与**高级管理人员/高级技术人员/其他负有保密义务人员**约定**在职期间**竞业限制条款，无需支付经济补偿
- 若劳动者以"在职期间竞业限制+未支付补偿"为由主张条款无效，**不予支持**
- 离职后的竞业限制补偿规则不变

---

## 离职场景快速判断

| 离职原因 | 补偿类型 | 计算公式 | 法条 |
|---------|---------|---------|------|
| 协商解除（单位主动提出） | 经济补偿N | N × S | 第36、46条 |
| 协商解除（劳动者主动提出） | 无 | 0 | — |
| 被迫离职（单位违约第38条） | 经济补偿N | N × S | 第38、46条 |
| 劳动者主动辞职（第37条） | 无 | 0 | 第37条 |
| 非过失辞退+提前30天通知 | 经济补偿N | N × S | 第40、46条 |
| 非过失辞退+未提前通知 | N+1 | N × S + 上月工资 | 第40、46条、实施条例第20条 |
| 经济性裁员 | 经济补偿N | N × S | 第41、46条 |
| 合同到期，单位不续签 | 经济补偿N | N × S | 第44、46条 |
| 合同到期，劳动者不同意续签（单位维持条件） | 无 | 0 | 第46条 |
| 过失性辞退（第39条） | 无 | 0 | 第39条 |
| 违法解除/终止（无合法理由） | 2N赔偿金 | 2 × N × S | 第87条 |
| 单位破产/吊销 | 经济补偿N | N × S | 第44、46条 |

---

## Excel 输出（可选，简洁为原则）

用户明确要求导出 Excel 时，使用 `export_excel` / `export_to_excel`，传入 `rows` 或 `detail_rows`、`output_path` 和可选 `case_summary`。Excel 样式和列结构由脚本负责，文档输出保持简洁。

---

## 对话输出格式规范

输出格式**不限制死**，可根据用户问题灵活调整。核心要素必须包含以下五项，其余可按需增删：

### 核心要素（必须）

**① 计算标准说明**
- 明确本案适用的补偿/赔偿类型（如：经济补偿金N、代通知金、违法解除赔偿金2N、二倍工资等）
- 简要说明计算逻辑（S、N、三倍封顶等核心参数含义）

**② 计算明细（MD表格）**
- 项目 | 计算过程 | 金额（元） | 法条依据
- 过程列须清晰呈现：参数值 × 系数 = 中间结果 → 最终金额
- 末尾加一行合计

**③ 法条依据**
- 引用本案涉及的法条（条款编号 + 名称）
- 优先从 `policy_data.law_basis` 和 `policy_data.law_articles_text` 调取，不自编

**④ 最终应赔偿/补偿金额**
- 明确列出合计金额（大写 + 小写）
- 如涉及多条路径（2N vs 继续履行），分别列出

**⑤ 免责声明**
固定格式如下，置于文末：

> [注意] **免责声明**
> - 本计算结果仅供参考，不构成法律意见
> - 法定赔偿/补偿标准可能随法规修订或地方政策调整而更新
> - 部分参考值（如社平工资、最低工资）以政策数据 API/cache 或已核验检索结果为准，如与最新公布数据不符，以当地主管部门公布为准
> - 具体赔偿/补偿金额须结合证据材料、工资流水、仲裁/法院裁审口径等因素综合确定，以最终仲裁/法院判决为准

### 灵活要素（按需）

以下要素可根据用户需求和案件情况**按需增补**，不必每次都全量输出：
- 案件摘要（一句话提炼：地区/离职原因/关键时间节点/补偿类型）
- 实务建议（不超过3条，聚焦风险点、举证要点）
- 特殊注意事项（如三倍封顶触发、时效问题、路径选择等）
- 对比分析（多条路径/口径并列时）

### 输出示例（最小版）

```
**经济补偿金计算**

① **计算标准**：标准经济补偿金（N）× 月均工资

② **计算明细**：

| 项目 | 计算过程 | 金额（元） | 法条依据 |
|------|---------|----------|---------|
| 经济补偿金 | 7年 × 8,000元/月 | 56,000 | 《劳动合同法》第46、47条 |
| **合计** | | **56,000** | |

③ **法条依据**：《劳动合同法》第46、47条；《实施条例》第27条

④ **最终金额**：人民币 **56,000元**（伍万陆仟元整）

⑤ [注意] **免责声明**：[见上文固定格式]
```

---

## 防幻觉提示

- 用户事实数据（月工资、工龄、解除原因等）必须来自用户提供；政策数据（社平工资、最低工资）必须来自政策数据 API/cache 或已核验 web_search 结果，不得凭空填写
- 社平工资必须说明口径和来源（如 `policy_data.social_avg_wage` 或已核验统计局数据）
- 2N赔偿金不适用三倍封顶；计算时注意区分
- 赔偿金（2N）与经济补偿金（N）**不可同时支付**（已付2N则不再付N，实施条例第25条）
- 竞业限制期限超过2年的约定无效，计算时截至2年

