# 养老金产品数据库 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_fts(FTS5 全文搜索虚拟表) 索引字段: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'; ```