skills/ifind-http-api/references/pension-db-schema.md

102 lines
3.0 KiB
Markdown
Raw Normal View History

# 养老金产品数据库 Schema
## 数据库文件
`data/pension_products.db` — SQLite 3使用 WAL 模式。
## 表结构
### pension_products主表
| 列名 | 类型 | 说明 |
|------|------|------|
| code | TEXT PK | 产品代码,如 `PAA001.YLJ` |
| name | TEXT | 基金简称 |
| official_name | TEXT | 官方简称 |
| manager_prefix | TEXT | 管理人前缀,如 `PA` |
| manager_name | TEXT | 管理人名称,如 `平安养老` |
| product_type | TEXT | 类型字母A/B/C/D |
| product_type_name | TEXT | 类型名称:权益型/混合型/债券型/货币型 |
| bond_subtype | TEXT | 债券子类Ca/Cb/Cc/Cf/Cg/Ch仅 C 类有值) |
| bond_subtype_name | TEXT | 债券子类名称 |
| establishment_date | TEXT | 成立日期 |
| expiry_date | TEXT | 到期日期 |
| last_updated | TEXT | 最后更新时间 |
### pension_ftsFTS5 全文搜索虚拟表)
索引字段code, name, official_name, manager_name, product_type_name
与 pension_products 通过触发器自动同步。
## 索引
| 索引名 | 列 |
|--------|------|
| idx_name | name |
| idx_manager | manager_prefix |
| idx_type | product_type |
## 管理人前缀对照
| 前缀 | 管理人 |
|------|--------|
| 00 | 全国社保基金理事会 |
| 02 | 博时基金 |
| 05 | 大成基金 |
| 07 | 工银瑞信 |
| 10 | 海富通基金 |
| 11 | 华夏基金 |
| 15 | 嘉实基金 |
| 18 | 南方基金 |
| 20 | 鹏华基金 |
| 48 | 易方达基金 |
| 51 | 银华基金 |
| CJ | 长江养老 |
| CL | 长城人寿 |
| HT | 华泰资产 |
| JX | 建信养老金 |
| LC | 长量基金 |
| PA | 平安养老 |
| RB | 人保资产 |
| TP | 太平养老 |
| TZ | 泰康资产 |
| XH | 新华养老 |
| ZJ | 中金公司 |
| ZX | 中信证券 |
## 数据构建
```bash
# 首次构建
export IFIND_REFRESH_TOKEN="your_token"
python scripts/build_pension_db.py
# 指定源文件和输出路径
python scripts/build_pension_db.py --source ~/Space/ifind/基础信息数据.md --db-path data/pension_products.db
# 直接使用 access_token
python scripts/build_pension_db.py --access-token "your_access_token"
```
构建脚本会自动从 `基础信息数据.md` 提取 1722 个 `.YLJ` 代码,分批(每批 50 个)调用 `basic_data_service` 获取基金简称、官方简称、成立日、到期日,并通过代码模式解析管理人和产品类型。
## 常用查询示例
```sql
-- 搜索包含"增值"的产品
SELECT code, name, manager_name FROM pension_products WHERE name LIKE '%增值%';
-- 平安养老的权益型产品
SELECT code, name FROM pension_products WHERE manager_prefix = 'PA' AND product_type = 'A';
-- 各管理人产品数量统计
SELECT manager_name, COUNT(*) as cnt FROM pension_products GROUP BY manager_prefix ORDER BY cnt DESC;
-- 各类型产品数量
SELECT product_type_name, COUNT(*) FROM pension_products GROUP BY product_type;
-- 拼接代码串供 API 调用
SELECT GROUP_CONCAT(code) FROM pension_products WHERE manager_prefix = 'PA' AND product_type = 'A';
```