796策略扫雷
对策略平台或用户提供的股票、可转债盘中(默认)或盘后候选执行独立的当前风险检查,形成二次风险扫描。最终交付带有 796 风险扫雷 Logo 的 PDF 报告与 JSON 数据底稿,不展示任何公司品牌名称或公司 Logo。
使用边界
- 仅做“盘中或盘后选股/选债 → 当前风险扫描 → 风险信息整理”。
- 默认走盘中模式(
screen_type="realtime");用户在交易时段内未作说明时,直接取当前盘中快照,不再回落到盘后。 - 不调用任何回测工具,不把当前扫雷结果回填历史回测。
- 不创建或修改策略、因子、标的池,不执行交易。
- 不输出买卖、持有、剔除、仓位或价格建议。
- 通达信风险数据是第三方公开页面的当前截面,必须与候选获取时点(盘中快照时间或盘后交易日)分别标注。
- 当用户只提供代码或候选文件时,可不依赖策略平台连接器;当用户要求读取其平台策略时,需要已连接且可用的策略工具。
- 所有用户可见输出统一使用“796 风险扫雷”品牌;不得展示第三方策略平台的公司名称、品牌 Logo 或宣传文案。
- 策略 ID 仅可在连接器调用时临时使用;不得写入候选 JSON、风险 JSON、PDF、文件名或对话交付摘要。
输入路由
按以下优先级处理:
- 平台策略:用户给出策略名称、策略序号或
strategy_id。 - 已有筛选结果:用户给出盘中/历史筛选结果或统一候选 JSON。
- 本地文件:用户给出 JSON、CSV、TSV 或 TXT。
- 直接代码:用户给出 A 股代码;可转债必须同时提供正股代码,或提供可完成映射的正股名称。
文件字段和统一候选协议见 @references/input-schema.md。
工作流
1. 确定扫描模式与候选时点
先判定本次走盘中还是盘后,判定结果写入统一候选文件的 candidate_mode。
盘中模式(默认)
- 用户未指定日期、未说明口径时,使用
screen_type="realtime"取当前盘中快照。 - 候选时点 = 盘中数据时间,由返回行的
time字段给出;各标的可能不同,报告取快照整体时间。 - 仅在 A 股交易时段内有效。当前处于收盘后、周末或法定休市时,盘中快照等同于最近交易日收盘截面,必须在报告中标注“非交易时段抓取”。
盘后模式(可选)
- 以下情况改用
screen_type="history":用户明确指定交易日;用户明确要求盘后口径;用户要求复核某个已收盘日期的截面。 - 用户指定日期时使用该日期;未指定时使用最近已完成的 A 股交易日。
通用规则
- 如交易日历工具可用,先查询交易日历,判断当前是否处于交易时段以及最近已完成交易日;否则按北京时间、周末和法定休市信息谨慎判断,并在无法确认时询问用户。
- 候选时点必须在统一候选 JSON、风险 JSON、PDF 和对话摘要中与扫雷抓取时间分开标注,不得写成“盘中/盘后扫雷结果”。
2. 从策略平台取得候选
仅当用户要求读取其已连接平台策略时执行:
- 按品种调用策略列表工具,按返回顺序和真实名称定位策略;连接器要求时可临时使用返回的内部标识调用详情,但不得持久化或展示。
- “第一个策略”指策略列表返回的第一项,不按名称或创建时间自行重排。
- 同名且无法唯一定位时,仅展示策略名称、顺序、创建或更新时间等非敏感信息后询问用户,不展示内部标识。
- 调用策略详情工具读取完整参数,不凭名称重建配置;调用结束后不将内部标识写入任何输出文件。
- 调用筛选工具:默认
screen_type="realtime"取盘中快照;按第 1 步判定需走盘后时改用screen_type="history"并携带trade_date。 - 只保留
selected=true的最终候选以及代码、名称、正股名称、排名、候选时间(盘中为time)等映射所需字段。 - 不调用回测工具。
具体参数结构与异常处理见 @references/strategy-platform-integration.md。
3. 可转债映射正股
- 股票候选直接使用股票代码扫描。
- 可转债不得直接用转债代码请求扫雷宝。
- 优先使用候选中的
code_stk、stock_code或underlying_code。 - 若上述字段缺失,调用股票列表工具,使用候选中的
name_stk与股票名称精确匹配。 - 映射结果不是唯一值、名称为空或匹配失败时,停止该标的扫描并列入异常,不得猜测。
- 报告同时保留转债代码、转债名称、正股代码、正股名称与候选原排名。
4. 保存统一候选文件
使用 Write 将候选保存到用户工作区或用户指定输出目录,不要写入 Skill 安装目录。文件结构见 @references/input-schema.md。
必须写入 candidate_mode(realtime 或 history)与 candidate_time(盘中快照时间;盘后模式下为交易日)。盘中模式保留每个标的的 quote_time。
不要把策略内部标识、完整参数、账户凭证、Cookie、Token 或无关的因子数据写入候选文件。若输入文件含 strategy_id,扫描脚本必须忽略并从风险 JSON 中剥离。盘中返回的 risk_control 仅用于平台侧提示,不进入候选文件与报告。
5. 执行风险扫描
优先使用 Python 3.9 及以上版本运行:
python3 "${CODEBUDDY_SKILL_DIR}/scripts/tdx_risk_scan.py" \
--input "/absolute/path/candidates.json" \
--output "/absolute/path/risk-report.json"
规则:
- 默认只扫描
selected=true的记录。 - 默认最多扫描 50 只,硬上限 100 只;不得用于全市场高频抓取。
- 默认并发 4、单请求超时 12 秒、失败重试 2 次、缓存 30 分钟。
- 用户明确要求“刷新”或“最新”时增加
--refresh。 - 输出文件已存在时,不自动覆盖;只有用户明确同意覆盖时才使用
--force。 - 扫描脚本只向固定的通达信域名发送 6 位公开证券代码,不发送策略名、账户信息或本地文件内容。
接口、字段与计分口径见 @references/tdx-interface.md;数据使用与隐私边界见 @references/data-privacy.md。
6. 生成 PDF 报告
先检查当前 Python 环境是否已提供 ReportLab。不得静默执行全局依赖安装。
如当前解释器缺少 ReportLab:
- 先检查宿主管理的隔离 Python 环境(例如
~/.workbuddy/binaries/python/envs/default/bin/python)是否已经提供 ReportLab;如已提供,直接使用该隔离解释器运行生成脚本,无需安装、无需询问; - 否则优先使用宿主已有的 PDF 能力生成同等内容的矢量 PDF;或
- 询问用户是否允许在任务输出目录创建隔离虚拟环境,并仅从官方 PyPI 安装
reportlab>=4,<6;不得使用sudo、--user或全局安装。
运行:
python3 "${CODEBUDDY_SKILL_DIR}/scripts/generate_pdf_report.py" \
--risk-report "/absolute/path/risk-report.json" \
--candidates "/absolute/path/candidates.json" \
--output "/absolute/path/796-risk-sweeper-report.pdf"
首页左上角使用 Skill 内置的 templates/796-report-logo.png 扫雷宝 Logo;该资源来自用户确认的品牌图,并由 PDF 脚本按比例缩放嵌入。PDF 的字段、版式、分页和风险提示规范见 @references/report-spec.md。
7. 校验与交付
交付前必须检查:
- 策略名、品种、扫描模式(盘中/盘后)和候选时点已标注,策略 ID 未出现在任何交付内容中。
- 扫雷抓取时间与候选时点分开显示;盘中模式不得把候选时点写成交易日收盘时间。
- 可转债均已映射为正股后扫描。
- 安全分只扣顶层
trig=1项的fs,不重复扣commonlxid子项。 - 候选数、成功数、失败数和四级分层统计一致。
- 失败、缓存状态、数据缺口和映射异常均已列出。
- PDF 可复制文本、可正常分页,最后一节为“风险提示”。
- PDF 页眉、页脚、标题、文档属性与 Logo 仅体现 796 个人品牌。
- 候选 JSON、风险 JSON、PDF、文件名和对话摘要均不含
strategy_id或策略内部标识。自动校验 UUID 时只检查策略标识所在字段或已知策略 ID,不得把公告原文 URL 中由交易所生成的文档 UUID 误判为策略标识;此类公告 URL 应按报告规范保留在风险 JSON 中。 - 未输出第三方策略平台的公司品牌名称、公司 Logo、宣传文案、因子列、回测结果、排雷后候选池或操作建议。
完成后使用 present_files 一次性提供:
- PDF 扫雷报告;
- JSON 扫雷数据底稿;
- 统一候选 JSON。
对话摘要末尾附:本报告只做风险信息整理与揭示,不提供买卖、保留、剔除和其他操作建议。
Scan to join WeChat group