---
name: insurance-customer-policy
description: "保险经纪人客户与保单管理：客户档案、跨公司保单归集、跟进记录、保障缺口分析、客户分类。触发：保险助手、保险工具箱、新客户、保单查询、跟进记录、保障缺口、客户分类、看下数据。"
---

# 保险客户与保单管理（统一数据底座）

以「人」为中心管理客户和保单，支持跨公司保单归集、跟进记录、保障缺口分析（重疾/医疗/意外/寿险/养老/教育金 6 维）。

## 经营概览（"看下数据" / "保险助手" / "保险工具箱"）

本 skill 自带一个**共享库聚合脚本**，直接从统一数据库读取 4 类经营指标，拼出总览：

```bash
python3 {baseDir}/scripts/dashboard_all.py        # 输出 JSON（含 overview + skills 明细 + markdown）
python3 {baseDir}/scripts/dashboard_all.py --md   # 只打印 markdown 卡片
```

输出形如：

```
🛡️ **经营概览（2026-05）**

👥 客户：120人（高净值15 / 活跃60 / 沉睡35 / 新客10）
📋 保单：185份（总保费约¥2,800,000）
📦 产品库：22 款
⏰ 本月续保：8份 30 天内到期
🎯 本月目标：保费¥100,000 | 已完成：¥65,000 | 在谈预估：¥23,000 | 在谈商机：12单

⚠️ 待处理：
- 3 份保单 30 天内到期
- 8 位客户超 30 天未联系
- 2 位客户超 60 天未联系（沉睡）
```



## 运行方式

**推荐（云端零配置 / 跨平台）**：直接用绝对路径调用 wrapper，自动加载包，无需 PYTHONPATH。

```bash
python3 {baseDir}/scripts/cli.py <子命令> ...
```

**高级用法**（如要直接 `python -m`）：

```bash
# Linux / macOS
export PYTHONPATH="{baseDir}/src"
python3 -m insurance_customer_cli <子命令> ...

# Windows
cd "{baseDir}"
set PYTHONPATH=%CD%\src
python -m insurance_customer_cli <子命令> ...
```

默认数据库：

- Linux / macOS：`~/.config/insurance/insurance.sqlite3`
- Windows：`%USERPROFILE%\.config\insurance\insurance.sqlite3`
- 统一变量：`INSURANCE_DB_PATH`
- 兼容变量：`INSURANCE_CUSTOMER_DB_PATH`（历史配置仍可用）

数据库目录会自动创建；首次调用任一保险 skill 会自动初始化共享表结构，**云端部署无需任何配置**。

**路径（对齐美容院 skill，可选运维变量）**：仓库内统一模块 `insurance_customer_cli/insurance_paths.py` 负责解析入口与子进程路径。若挂载布局异常，可设置 `INSURANCE_SKILLS_ROOT`（或通用 `SKILLS_ROOT`）指向包含四个 `insurance-*` 目录的文件夹；也可对各 skill 单独指定 `INSURANCE_CUSTOMER_PKG`（或对应产品的 `INSURANCE_*_PKG`）以及直连 wrapper 的 `INSURANCE_CUSTOMER_CLI_SCRIPT` 等（与各 skill 的 `SKILL_META` 定义一致，类比美容院的 `INVENTORY_SCRIPT_PATH`）。

## 子命令

| 子命令 | 关键参数 |
|--------|----------|
| `customer-add` | `--name --phone --age --household JSON --income --birthday` 等 |
| `customer-query` | `--keyword` / `--customer-id`（聚合保单数、最近跟进时间） |
| `customer-update` | `--customer-id --set JSON`（支持 children/spouse/elderly 子键） |
| `customer-delete` | `--customer-id --yes`（有 active 保单时禁止） |
| `customer-exists` | `--customer-id`（内部：供其他 skill 校验） |
| `policy-add` | `--customer-id --company --product --type --coverage --premium --effective-date [--pay-period]`（自动派生 expire/next-pay-date） |
| `policy-query` | `--customer-id` / `--policy-id` / `--expire-before` / `--next-pay-before` / `--product-type` |
| `policy-update` | `--policy-id --set JSON` |
| `policy-delete` | `--policy-id --yes`（软删，状态置 cancelled） |
| `policy-count-by-customer` | `--customer-id`（内部） |
| `followup-add` | `--customer-id --content [--next-step --next-date --channel]` |
| `followup-query` | `--customer-id` / `--days N` |
| `gap-analysis` | `--customer-id` / `--all` / `--gap-type "重疾险"` |
| `customer-segment` | 输出 4 类：高净值（年保费>5w）/ 活跃（30天内有跟进）/ 沉睡（60天以上）/ 新客（30天内创建） |
| `dashboard` | `--json` 返回经营概览数据（供入口聚合） |
| `customer-field-add` / `customer-field-query` | 自定义字段定义 |

## 示例

```bash
python3 {baseDir}/scripts/cli.py customer-add --name "张先生" --phone "13800138000" --age 35 --household "{\"spouse\":true,\"children\":2}" --income 300000
python3 {baseDir}/scripts/cli.py policy-add --customer-id C001 --company "A保险公司" --product "重疾险XX" --type "重疾险" --coverage 500000 --premium 8000 --effective-date "2023-01-01" --pay-period "20年"
python3 {baseDir}/scripts/cli.py followup-add --customer-id C001 --content "聊了养老险，很感兴趣" --next-step "下周三见面详聊" --next-date "2024-05-15"
python3 {baseDir}/scripts/cli.py gap-analysis --customer-id C001
python3 {baseDir}/scripts/cli.py customer-segment
```

## 自然语言路由

| 用户说 | 调用命令 |
|--------|----------|
| "新客户张先生，35岁，两个孩子，年收入30w" | `customer-add` |
| "张先生的保单有哪些？" | `policy-query --customer-id` |
| "张先生买了重疾险，保额50w，A保险公司" | `policy-add` |
| "记录：今天跟张先生聊了养老险" | `followup-add` |
| "张先生保障够了吗？" | `gap-analysis --customer-id` |
| "帮我看看客户分类" | `customer-segment` |
| "看下数据" / "总体怎么样" | `dashboard --json`（同时聚合其他 3 个保险 skill 的 dashboard） |

## 内部子命令（供其他 skill）

- `customer-exists --customer-id <id>`
- `policy-count-by-customer --customer-id <id>`

## 与其他 Skill 协作

- 作为保险系列统一数据底座，四个主 skill 共用同一 `insurance.sqlite3`。
- 其他 skill 直接读写共享库，不再依赖本 skill 的子进程转发。
