三阶段贯通架构 v4.4 — 2026-04-17
Phase 1 → Phase 2 → Phase 3 自动流水线,数据从采集到知识图谱不落地二次处理。
text
官网URL
↓
[Phase 1] collect.py 采集公告列表 + 下载PDF/附件
↓
cfc_raw_data/{公司}/
├── announcements.json 原始公告列表 + 正文 + PDF路径
└── attachments/ PDF文件
↓
[Phase 2] phase2_parse.py 解析PDF → 提取合作机构名单
↓
cfc_raw_data/{公司}_合作机构_{类型}{日期}.json
↓
[Phase 3] phase3_ontology.py 实体入库 → 知识图谱
↓
memory/ontology/graph.jsonl 关系型知识图谱
text
cfc-disclosure-monitor/
├── SKILL.md ← 本文件(v4.0)
├── companies.json ← 唯一配置源(30家 URL + 采集方法)
├── collect.py ← Phase 1 入口:统一调度 collectors.COLLECTORS
├── collectors.py ← 42个采集方法(v1 函数,list[dict])
├── collectors_v2.py ← 5个采集方法(v2 类,BaseCollector)
│ ← 导入时自动同步到 collectors.COLLECTORS
├── phase1_base.py ← Announcement + BaseCollector + Builder
│ ← 统一接口:__call__ 返回 list[dict]
├── core.py ← 日期/分类/文本提取引擎
├── phase2_parse.py ← Phase 2:PDF解析 + 合作机构提取
├── phase3_ontology.py ← Phase 3:知识图谱写入
├── pipeline.py ← 三阶段统一编排器
└── parsed/ ← Phase 2 中间产物
层级文件类型返回值v1collectors.py同步/异步函数list[dict]v2collectors_v2.py异步类(继承 BaseCollector)list[dict](通过 __call__)
两套统一注册到 collectors.COLLECTORS, collect.py 无需修改。
新增 v2 collector 步骤:
collectors_v2.py 中定义继承 BaseCollector 的类@collector("方法名") 注册(自动进 collectors.COLLECTORS)companies.json 中对应公司 method 改为 v2 方法名一键贯通运行(推荐):
bash
cd ~/.openclaw/workspace/skills/cfc-disclosure-monitor/
# 全量:P1 → P2 → P3 全部跑完
python3 pipeline.py
# 从指定阶段开始
python3 pipeline.py --phase 2 # 从 P2 开始(全量)
python3 pipeline.py --phase 3 --company 中邮消费金融 # 只 P3 单公司
# 仅查看已采集的公司
python3 pipeline.py --list
分阶段独立运行:
bash
# Phase 1:采集列表 + PDF
python3 collect.py --date 2026-04-15
python3 collect.py --company "中邮消费金融" --no-detail # 仅列表验证
# Phase 2:解析 PDF,提取合作机构(不改动 announcements.json)
python3 phase2_parse.py # 全量
python3 phase2_parse.py 中邮消费金融 # 单公司
# Phase 3:写入知识图谱
python3 phase3_ontology.py # 全量
python3 phase3_ontology.py 中邮消费金融 # 单公司
目标: 采集30家消金公司官网所有披露公告,保存正文和附件。
text
cfc_raw_data/{公司名}/ ← 按公司分目录
├── announcements.json ← 公告列表(含正文摘要)
│ [{
│ "title": "中邮消费金融有限公司催收合作机构信息公示",
│ "date": "2026-02-28",
│ "url": "https://www.youcash.com/xxgg/77802.html",
│ "category": "合作机构",
│ "text": "尊敬的客户:...", ← HTML正文
│ "_content_type": "html|vue|pdf|image",
│ "_attachments": [{"filename":"xxx.pdf","path":"...","type":"pdf"}]
│ }]
└── attachments/ ← Phase 2 需要的原始文件
└── *.pdf
架构方法代表公司静态列表html_dom蚂蚁、中信、宁银(老)、河北JSON API(v2)cfcbnb_v2宁银(Vue data.json,47条)详情遍历(v2)mengshang_v2蒙商(HTML详情,86家)layui分页zhongyin_layui中银(13页)Vue SPAvue_pagination招联AJAX翻页multi_page湖北(3 Tab)首页滚动homepage_scroll平安、金美信双栏翻页jinshang_two_col晋商Vue Tabsuyinkaiji_vue苏银凯基CDP截图cdp3.py长银五八
目标: 扫描 announcements.json → 下载PDF → pdftotext提取 → 保存结构化合作机构名单。
披露类型识别关键词输出文件催收合作机构催收``{公司}_合作机构_催收合作机构_{日期}.json增信服务机构增信、 担保``{公司}_合作机构_互联网贷款增信服务机构_{日期}.json平台运营机构平台、 运营机构``{公司}_合作机构_互联网贷款平台运营机构_{日期}.json关联交易关联交易同上模式不良资产不良资产同上模式
json
[
{"name": "和君纵达数据科技股份有限公司", "phone": "18855123966"},
{"name": "众焱普惠科技有限公司", "phone": "028-85567577"}
]
{4-20汉字}(有限公司|股份有限公司|有限责任公司|集团|事务所)0\d{2,3}[-\s]\d{7,8} 或 1[3-9]\d{9} 或 95\d{3,5} 或 400\d{7}目标: 将结构化数据写入 memory/ontology/graph.jsonl,建立跨公司关联。
类型说明示例Company合作机构/公司蚂蚁智信、和君纵达DisclosureList披露清单中邮催收合作机构2026(101家)DisclosureDocument具体披露文档中邮消金催收公示PDFCooperationRelation合作关系(通过 relation 表达)
Relation从到说明cooperates_withCompanyCompany(消金)合作机构 ↔ 消金公司publishes_disclosureCompany(消金)DisclosureList消金发布披露清单includes_companyDisclosureListCompany清单包含合作机构disclosed_byDisclosureDocumentCompany(消金)文档由消金发布appears_in_documentCompanyDisclosureDocument合作机构出现在文档正文
bash
# 查哪家消金跟河北银海有合作
grep "河北银海" memory/ontology/graph.jsonl
# 查中邮消金所有合作机构
grep "co_zhongyou" memory/ontology/graph.jsonl
# 查所有增信服务机构
grep "GuaranteeAgency" memory/ontology/graph.jsonl
已为消金监控扩展 ontology schema:
yaml
types:
Company:
required: [name]
properties:
name: string
company_type: string # LawFirm|TechCompany|CollectionBPO|GuaranteeCompany...
disclosure_type: string
source_company: string
phone: string
DisclosureList:
required: [name, company, disclosure_type, count, date]
properties:
name: string
company: string
disclosure_type: string
count: integer
date: string
source_url: string
DisclosureDocument:
required: [title, date, source_company]
properties:
title: string
date: string
url: string
category: string
disclosure_type: string
source_company: string
旧方式(手动搜索):
新方式(ontology查询):
bash
grep "河北银海" memory/ontology/graph.jsonl
→ 立即得到:co_zhongyou ← cooperates_with ← co_yinhai_guarantee
companies.json 添加公司 URL 和方法python3 pipeline.py --phase 1 --company "XX消费金融"python3 pipeline.py --phase 2 --company "XX消费金融"python3 pipeline.py --phase 3 --company "XX消费金融"bash
# 假设已采集 announcements.json,但 PDF 未下载
python3 phase2_parse.py # 自动扫描所有 PDF 链接并下载
python3 phase3_ontology.py # 自动提取并写入 ontology
text
~/.openclaw/workspace/
├── cfc_raw_data/ ← 原始数据湖
│ ├── 中邮消费金融/
│ │ ├── announcements.json ← Phase 1 产出
│ │ ├── 中邮消费金融_合作机构_催收合作机构_2026-02-28.json ← Phase 2 产出
│ │ ├── 中邮消费金融_合作机构_互联网贷款增信服务机构_2026-03-31.json
│ │ └── attachments/ ← PDF/图片
│ ├── 兴业消费金融/
│ │ └── ...
│ └── ...
├── memory/ontology/
│ └── graph.jsonl ← Phase 3 产出(全公司知识图谱)
└── skills/cfc-disclosure-monitor/
├── pipeline.py ← 统一编排器
├── phase2_parse.py ← Phase 2
├── phase3_ontology.py ← Phase 3
└── ...
日期版本内容2026-04-15v4.0深度重构:phase1_base.py去除重复方法+死代码(325行,原474行);collectors.py末尾死函数collect_mengshang已删除(2240行,原2253行);v1+v2统一COLLECTORS注册表;Announcement dict兼容层保持;cfcbnb_v2/mengshang_v2验证通过(47条/宁银)2026-04-15v3.0三阶段贯通:Phase 1→2→3 pipeline,新增phase2_parse.py/phase3_ontology.py/pipeline.py, ontology graph.jsonl 为统一出口2026-04-15v2.0Phase 1+2 合并,详情页同步获取,PDF探测改进2026-04-05v1.0初版,30家列表确认,html_dom方法建立