创建人员:Codex
文件职责:说明 project-info/ana-data/tools 中数据抓取、外部来源归档和本地 MySQL 只读导出脚本的使用口径。
管理规范/模板:案例分析规范.md;案例存储体系.md;案例审核规范.md;研报体系导读.md。
引用文件:案例分析规范.md;案例存储体系.md;案例审核规范.md;研报体系/研报分析架构.md。
记录方式:工具使用说明;新增、下线或改变抓数脚本时同步更新。
ana-data/tools/ 是研报案例体系的工具脚本入口,不是新的数据目录,也不是正式证据库。脚本用于帮助案例分析员完成外部资料抓取、本地数据库只读导出和市场反向补漏初筛。
正式数据仍按 案例存储体系.md 落点:
ana-data/cases/<行业案例>/raw/ 或 supplement/。ana-data/cases/<行业案例>/supplement/。evidence/。manifest/。ana-data/tmp/<行业案例>/<case_id>/<run_id>/,不得作为正式证据入口。案例分析员使用这些脚本前必须满足:
案例总纲.md 已登记真实案例。案例分析设计.md 已写清 case_id、batch_id、run_id、输入范围、输出物、存储路径和验收方式。darkline 技能和信息拓扑方法。案例执行日志.md 记录脚本名、参数摘要、输出路径、manifest 路径、异常和自检结论。| 脚本 | 作用 | 默认输出 |
|---|---|---|
ana-data/tools/collect_web_sources.py |
抓取显式 URL,保存网页、PDF、CSV、JSON 或文本快照 | 行业 supplement/ 和 manifest/web_source_manifest_<run_id>.csv |
ana-data/tools/export_mysql_query.py |
执行本地 MySQL 只读 SQL 并导出 CSV | 行业 supplement/、evidence/ 或 manifest/,以及 manifest/mysql_query_manifest_<run_id>.csv |
ana-data/tools/market_gap_scan_mysql.py |
基于本地 A 股画像和日线表扫描近 3 个月强显影公司 | 行业 supplement/market_manifestation_gap_* 和 manifest/market_manifestation_gap_manifest_<run_id>.csv |
适用场景:
示例:
python ana-data/tools/collect_web_sources.py `
--industry-case 有色案例 `
--case-id ANA-YS-INDUSTRY-001 `
--batch-id BATCH-003 `
--run-id RUN-ANA-YS-INDUSTRY-001-BATCH-003 `
--url "https://www.lme.com/market-data/reports-and-data/lme-official-prices" `
--target supplement
使用要求:
darkline 方法。适用场景:
tianxia 数据库导出 A 股 K 线、公司画像、行业概念、市场广度或其他已纳入全局公共表的数据。环境变量:
$env:TIANXIA_MYSQL_PASSWORD='本机 MySQL 密码'
示例:
python ana-data/tools/export_mysql_query.py `
--industry-case 有色案例 `
--case-id ANA-YS-INDUSTRY-001 `
--batch-id BATCH-003 `
--run-id RUN-ANA-YS-INDUSTRY-001-BATCH-003 `
--artifact-name ys_company_profile_candidates `
--sql "SELECT snapshot_date, symbol, stock_name, industry_l1, industry_l2, concepts_raw FROM a_share_profile_snapshot WHERE industry_l1 LIKE '%有色%' LIMIT 200"
使用要求:
SELECT、WITH、SHOW、DESCRIBE、DESC、EXPLAIN 类只读语句。INSERT、UPDATE、DELETE、CREATE、DROP、ALTER、LOAD、REPLACE、TRUNCATE、GRANT 等写入或管理语句。manifest/,输出 CSV 进入指定 supplement/、evidence/ 或 manifest/。适用场景:
a_share_profile_snapshot 和 a_share_daily_price 初筛公司池和行情表现。示例:
python ana-data/tools/market_gap_scan_mysql.py `
--industry-case 有色案例 `
--case-id ANA-YS-INDUSTRY-001 `
--batch-id BATCH-003 `
--run-id RUN-ANA-YS-INDUSTRY-001-BATCH-003 `
--start-date 2026-03-26 `
--end-date 2026-06-26 `
--keyword 有色 `
--keyword 铜 `
--keyword 铝 `
--keyword 锂 `
--keyword 稀土 `
--keyword 黄金 `
--keyword 小金属
输出口径:
market_manifestation_gap_audit_*.csv:强显影候选、涨幅、强势日、放量指标和待 review 状态。market_manifestation_gap_summary_*.json:扫描窗口、关键词、参数和结果摘要。market_manifestation_gap_manifest_*.csv:SQL、输出路径、row_count 和审核状态。使用要求:
CORE_INDUSTRY、ADJACENT_DOWNSTREAM 或 FALSE_THEME_OR_NOISE。CORE_INDUSTRY 才能进入补资料队列;ADJACENT_DOWNSTREAM 单独 review;FALSE_THEME_OR_NOISE 只保留审计记录。darkline 方法。行业 案例分析设计.md 至少写清:
supplement/、evidence/、manifest/ 和后续证据数据卡。行业 案例执行日志.md 至少记录:
case_id、batch_id、run_id。审核员检查脚本产物时,至少确认:
ana-data/tools/ 或私人工作区。ana-data/tools/ 当成结果目录或证据库。