监管信息数据库更新与部署(V1.1.4)
在任何设备上更新证监会派出机构监管信息数据库,或在空目录中从零建立完整平台。
核心能力
- 采集证监会 36 家派出机构公开的行政监管措施、行政处罚决定、风险提示、通知公告
- 智能分级(重大处罚 / 监管措施 / 常规信息)与关注主体标记
- 生成单文件 HTML 看板(离线可用)、数据 JSON、每日简报
- 目录缺失时自动按标准结构建立(数据库、配置、脚本、图表引擎)
V1.1.0 变更说明(2026-08-30)
- 中文目录名兼容:目标目录子目录同时支持
scripts/程序源码、config/配置、output/输出两种命名。F:\【监管公开信息的跟踪平台】(配置/程序源码/输出) 这类中文目录可直接由update_data.py/run_daily.py驱动,不再需要手工 绕过编排器逐个调用子脚本。 - 自动运行日志:
update_data.py与run_daily.py默认把全部输出 (含各子脚本)双写到<目标>/输出/运行日志/YYYYMMDD_HHMMSS.log, 可用--log 路径指定、--no-log关闭。长任务中断后仍可完整回溯。 - 修复 run_daily.py bug:不再向
build_dashboard.py传不存在的--limit参数(此前会导致「生成看板」步骤必然失败,每日自动化第三卡点)。 - 实测执行时长:36 局全量增量 ≈ 22 分钟(1312 次请求、间隔 1 秒), 全量回溯首次建库约 40–60 分钟——务必后台执行(见下)。
V1.1.3 变更说明(2026-08-31)
- 关注主体区块新增「各派出机构 — 发布类型 聚合关系」桑基图(全宽,位于
命中趋势/命中类型两图下方):
- 左列派出机构(按命中量降序,
#14659f → #5bb4f2渐变蓝配色), 右列发布类型(语义色:行政处罚决定红 / 市场禁入深红 / 行政监管措施橙 / 通知公告绿 / 风险提示蓝,与 A/B/C 分级色系一致); - 流量 = 命中条数,链接渐变色 + 半透明,悬停高亮相邻关系(adjacency);
- 年度区间与上方两张图共用
wtY1/wtY2,切换即重算。
- 左列派出机构(按命中量降序,
- 看板生成器
build_dashboard.py新增mix()颜色插值函数与CH_COLOR语义配色映射(未知发布类型自动回退调色板)。
V1.1.4 变更说明(2026-09-01)
- 看板加载延迟治理(根因修复):原
dashboard.html体积 55 MB,其中 42 MB(81%)为仅 CSV 导出使用的「正文内容」字段(截断 1000 字), 每次打开都要同步JSON.parse整段,导致明显卡顿。 现默认不再内联正文内容(build_dashboard.py --content-len默认改为 0), 看板体积降至 约 10.6 MB(↓81%),解析耗时约降为原来的 1/5, 仍保持「双击即开、离线可用、数据不出本机」的单文件特性。 - 正文内容改为按需加载:CSV 导出的「正文内容」列,在右上角「设置」中
加载
csrc.db(方式一)或看板数据.json(方式二)后自动可用; 两者皆未加载时自动回退为 60 字摘要,并弹出一次性提示,不影响导出。export_data.py默认仍导出完整正文(方式二数据源),--content-len 0可同步瘦身。 - 数据载荷新增
has_content标记,前端据此切换导出兜底逻辑。 - 方式一(加载 .db)彻底离线化:将 sql.js 运行时(JS 胶水
sql-wasm.js+ wasm 二进制sql-wasm.wasm,约 665 KB)内联进看板 HTML,assets/缺失时 自动回落 CDN(保留旧行为)。加载 .db 时通过wasmBinary直接注入 wasm, 不再发起任何网络请求(fetch / XHR 均绕过),使「加载数据库取全文」在 纯离线 / 内网环境完全可用,产品「离线单文件」承诺更彻底。 已用 Node 真实加载 sql-wasm.js + wasm,验证wasmBinary注入路径离线可用 (创建库、执行 SQL、返回结果均通过);看板体积由 10.6 MB 增至约 11.4 MB, 仍远小于原始 55 MB。 - 设置面板「方式一」标签改为「已内联解析引擎,离线可用」;
loadDb加载提示 改为「正在加载数据库(离线解析)…」。
V1.1.2 变更说明(2026-08-31)
- 修复「关注主体命中趋势」常规信息曲线:原堆叠面积图中常规信息(C)系列 因堆叠导致折线显示为累计总数,被误判为数据错误。现改为不堆叠的分级面积图, 重大处罚 / 监管措施 / 常规信息三条曲线各自反映真实数量,tooltip 与图例保持一致。
- 筛选与检索结果导出增加「正文内容」列:导出 CSV 时新增清洗后的正文内容列
(默认 1000 字符),HTML 标签已去除并转义实体字符,便于离线查看原文要点;
可通过
--content-len调整长度,或设为 0 关闭。 - 看板「设置 → 加载数据库文件」亦同步支持正文内容列。
V1.1.1 变更说明(2026-08-30)
- 看板视觉升级为渐变蓝主题:顶部横幅、按钮、下拉选中、关键字高亮等
全局淡紫色统一为截图中的渐变蓝色系(
#14659f → #2090e0 → #5bb4f2)。 - 新增「月度发布热力矩阵」:12 个月 × 年度分布量,色深表示信息总数, 年度区间与「月度发布趋势」双向同步。
- 新增「关注主体」分析区:
- 左侧 2/3:最近 5 年关注主体命中趋势(分级面积图)
- 右侧 1/3:最近 5 年关注主体命中类型(环形图,色块同 A/B/C 默认色)
- 两张图共用同一组年度区间选择器,默认取最近 5 年。
- 同步更新冒烟测试,42 项全部通过。
执行注意事项(必读)
-
长任务必须后台运行。 36 局全量增量约 22 分钟,远超多数执行器 前台超时(例如 10 分钟),前台跑会在中途被截断。正确姿势:
# 方式一:宿主后台执行(推荐,本 Skill 的自动化场景) python scripts/update_data.py --target "<目录>" --period recent1m --sites all # 方式二:命令行 nohup 后台 + 日志文件 nohup python scripts/update_data.py --target "<目录>" --period recent1m > 运行.log 2>&1 &两种方式都安全:数据库按
manuscript_id去重、支持断点续传, 中断后重跑不会重复写入。中断会留一条run_summary.status=running的僵尸记录(正常留痕,无害)。 -
中断后查日志:自动日志在
<目标>/输出/运行日志/,或--log指定路径。 -
F 盘中文目录场景:直接
python scripts/update_data.py --target "F:\【监管公开信息的跟踪平台】" --period recent1m即可(V1.1.0 已兼容 配置/程序源码/输出 命名)。
执行流程(必须逐步与用户确认)
第 1 步:确认资料保存路径
首次执行必须询问。 读取 state.json 中是否已有 target;若已有则沿用,
并向用户确认「继续使用上次的目录 XXX 吗?」。
询问示例:
请问监管信息资料保存在哪个目录? (例如
F:\监管公开信息的跟踪平台;若目录不存在会自动创建)
路径确定后写入 state.json,后续执行默认沿用,不再询问。
第 2 步:确认检索时间周期
必须询问,给出默认选项:
| 选项 | 说明 |
|---|---|
| 全部(推荐首次) | 全量回溯,首次建库用;36 家约需 40–60 分钟 |
| 近一年 | 回溯 365 天 |
| 近半年 | 回溯 183 天 |
| 近三个月 | 回溯 92 天 |
| 近一个月 | 回溯 31 天,日常增量推荐 |
| 自定义 | 指定起止日期 YYYY-MM-DD |
对应 --period 取值:all / recent1y / recent6m / recent3m / recent1m / custom。
第 3 步:确认派出机构范围
必须询问,默认「全部」:
- 全部 36 家派出机构(
--sites all) - 或指定某几家(
--sites shaanxi,beijing,shenzhen)
站点代码为全拼拼音,注意 陕西 = shaanxi、山西 = shanxi(易混)。
完整清单用 python update_data.py --list-sites 查看。
第 4 步:执行
目录缺少必要文件时自动初始化(建库、复制配置脚本),无需手工干预。
建议先 --print-plan 确认参数,再后台正式执行。
# 先看计划(不执行)
python scripts/update_data.py --target "<目录>" --period recent1m --sites all --print-plan
# 完整执行(长任务,后台运行,日志自动落盘)
python scripts/update_data.py --target "<目录>" --period recent1m --sites all
# 只采集不重建看板/简报
python scripts/update_data.py --target "<目录>" --period recent1m --no-dashboard --no-daily
# 指定日志文件 / 关闭日志
python scripts/update_data.py --target "<目录>" --period recent1m --log D:\run.log
python scripts/update_data.py --target "<目录>" --period recent1m --no-log
# 单独初始化目录
python scripts/init_platform.py --target "<目录>"
执行后产出:
| 文件 | 说明 |
|---|---|
| data/csrc.db | SQLite 数据库(manuscript_id 去重,支持断点续传) |
| output/dashboard.html | 单文件看板(ECharts 已内联,内网离线可用) |
| data/看板数据.json | 看板离线数据源(设置面板可加载) |
| output/daily/*.md | 每日简报 |
| output/运行日志/*.log | 每次执行的全量运行日志 |
目录结构
<target>/
config/ sites.json(36 家站点)/ rules.json(分级规则)/ watchlist.json(关注主体)
scripts/ 采集、分级、看板、简报脚本(中文部署目录下名为「程序源码」)
data/ csrc.db、看板数据.json
output/ dashboard.html、daily/、运行日志/
vendor/ echarts.min.js
路径通过环境变量 CSRC_ROOT / CSRC_CONFIG / CSRC_DATA 注入子脚本,
因此目标目录可以包含中文,也可整体搬迁到其他设备。
关键约束(改动代码前必读)
- 每页条数硬上限 20。 源站
_pageSize传 50/100 仍只返回 20 条。 若把终止条件写成len(results) < page_size而page_size=50, 会导致每栏目只抓第 1 页——数据静默丢失且日志显示成功。 - 禁止并发 ≥ 4。 会触发源站读超时。串行执行,间隔 ≥ 1.0 秒, 超时 (10, 30),重试 3 次指数退避。
- 入口栏目代码必须自动解析。 各局不同,禁止硬编码推测;
从首页正则
href="/{site}/(c\d+)/zfxxgk_zdgk\.shtml\?tab=zdgkml"提取。 - 栏目优先级排序。 同一文件常同时属于多个栏目,按
市场禁入 > 行政处罚 > 行政监管措施 > … > 通知公告取优先级最高者为主栏目, 其余存入all_channels,否则重要分类会被「通知公告」覆盖。 - 分级规则。 A=重大处罚(市场禁入、认定为不适当人选、暂停业务、撤销任职资格/核准/许可/登记); B=监管措施(警示函、责令改正、监管谈话);C=常规信息。 关注主体命中是独立维度(★ 标记),不参与级别判定—— 否则西部证券以财务顾问身份出现在他人处罚决定书中会被误判为最高级。
依赖
Python 3.9+,标准库即可(sqlite3 / urllib / argparse)。
看板与数据导出无需额外安装包。
微信扫一扫