15 KiB
每日选股计划完善方案与开发规格
2026-10-15,北京时间。用户已批准三仓联动实施。本文是本轮开发、验收和接续入口。
目标与边界
统一研究依据、候选排序、建仓优先级和复盘记录。保留候选准入、线上参数和交易职责。 盘中新评析自动发布完整修订版。自主提议采纳前重核,排名变化本身不撤销提议。 基座提供研究,桥形成计划,PMS 管组合与执行。修订不调用模型。
实现契约
- 计划保留原字段;schema_version=2,decision 包含 id、parent_id、cutoff_at、input_hash、params_hash、reason。plan_version 仍为代码版本。
- 每行新增 research_rank(全量顺序)、research、review_ref;展示裁剪不能改写 research_rank。
- 采集输入与确定性装配分离。输入、有效配置、全量输出一起归档。相同内容幂等;文件锁串行发布,原子切换最新指针;晨版固定为首版。
- GET /plan 支持 decision_id,只读发布物。历史缺档明确报错,不以当前来源重构。旧快照可读但注明追溯不完整。
- 07:20—15:10 北京时间交易日每五分钟 plan-refresh,只更新评析与区制。晨版缺失不代造。08:45 区制更新同样发布版本。
- 修订失败保留旧完整版本;已识别的变更股票列入 pending_codes,PMS 暂停其新增自主提议。GET 不做重装配。
- 基座报告按内容指纹保存,最新索引保持原结构。report_version_url 固定内容;旧报告不伪造归档引用。
- PMS 保存 received(收到)、consumed(实际筛选消费)、rechecked(采纳核验)三类记录。后两类记录有效参数、实际顺序、逐票过滤原因与上下文指纹。动作账本保留决策及消费引用。
- 自主扫描继承 selection_rank;现有信号优先仍生效且记原因。命令驱动保留原分配规则并记录来源。
- 自主提议转指令前核对版本;资格、风险、仓位依据变化重新走现有评估,旧批准不复用。仅顺序变化可继续。未知当前版本守成。人工页面版本不匹配返回冲突与新提议。
- 研究增加预期差、周期、材料期、材料数、未知问题、数字核验、论点变化和验证事项。自然语言不自动转交易触发器。
- 复盘读取晨版与真实消费记录。缺档与重构不混入真实效果统计。旧收益口径和期限保持。
验收预判
- A 优先于 B 且仅一名额时产出 A;信号插队有明确原因。
- 好转差时全出口同步,旧版字节不变;相同输入不重复发布。
- 同强度证据与无主题裁剪确定;全量名次不随展示参数改变。
- 历史不含未来评析,当前参数不改变历史消费名单。
- 提议排名变化、资格失效、仓位缩减、版本缺失和并发采纳逐项测试。
- 发布中断、重复触发、并发区制更新、失败恢复和重启恢复不破坏旧版。
- 缺新增字段兼容;修订零模型调用;普通查询不重装配。
- 两端页面守卫与浏览器验证通过。
交付与运行边界
四批为确定排序、不可变版本、消费与重核、研究与页面。先兼容读取,再发布,最后开启修订。 本地验证不能代替部署验收。目标时延十二分钟,需上线测量。10-15 用户确认当前即为模拟仓,取消额外五个交易日观察;首个完整晨版通过后启用修订及重核。 容器与生产操作另按授权边界执行。避开 06:10 及 07:10 窗口。 版本至少保存一百二十个交易日。被未结束提议或持仓引用的记录继续保留。 本轮初始记录为未部署;当前已部署,五日等待条件已由用户取消。验收实测在文末与交接追加。
开发人员实现说明
第一批:确定性与顺序
桥的 plan._evidence 在同强度证据后按目标名、来源数、市场统计与日期稳定排序;卡片最终以代码收尾。
pick_rows 与 PMS select_candidates 均只对明确主题应用主题限额,无主题不构造共同的行业桶。
有效排序开关仍从原配置读取;PMS 筛选结束写 selection_rank,动作引擎按此序逐只扣名额和资金。
既有盘中信号优先在它之前,写 execution_rank/priority_reason。命令规划保留原命令、白名单和分配次序,
把来源及最终顺序写入命令 progress,再按 plan_id 传到指令 progress 与执行账本。
第二批:固定输入、发布和恢复
plan_inputs.Bundle 在来源函数边界录制实际结果和错误,并使用 ContextVar 隔离装配。
输入支持 DataFrame、Series、日期、Decimal、集合及缺失值;归档 JSON 可重放。
重放禁止缺项回源,即使上层捕获异常,退出重放作用域时仍会报错。有效业务配置同步冻结。
晨版评析按带时区 cutoff_at 过滤;它与行情 date 独立,因此可以使用今日盘前已知材料。
plan_versions 用进程间文件锁覆盖采集至发布。文件路径为:
versions/<行情日>/<decision_id>.json:完整计划、实际输入和有效配置,只追加。plan_<行情日>.json:原有兼容入口,完整写入临时文件、fsync 后原子替换。versions/<行情日>/morning.json:首个成功发布版本;中断缺失时沿已发布父链恢复。versions/<行情日>/health.json:检查时刻、待核验股票和错误原因。
版本身份包含输入、参数、代码版本、行情日和父版本。同有效输入不重复发布;A→B→A 保留三个实际版本。
最新入口带已发布祖先标识,查询固定版本不需要逐次读取整条历史。未切换成功的孤立文件不能对外查询。
Markdown 兼容文件从已发布 JSON 派生并标明决策版本;写入失败不回滚已发布 JSON,下一次发布可恢复。
普通查询只做固定版本读取和展示裁剪。PLAN_FROM_SNAPSHOT 的旧“回落现算”语义废止;
PLAN_REVIEW_SOURCE=live 也不再允许用当前研究伪造历史。保留两个配置名称用于旧配置兼容。
plan-refresh 是 XXL 白名单里的独立步骤,不加入晨间默认三步。调度平台每五分钟触发,
函数再核验北京时间、交易日和当日晨版。时段为 07:20 至 15:10(含端点);日历依赖 chinesecalendar>=1.11,
本地已验证其 2026 年工作日与国庆休市读数。08:45 regime-append 走同一锁和发布入口。
只替换新评析及区制,其余来源使用晨版冻结值;修订不写日频逻辑状态表、不重投评析目标、不调用模型。
读取评析前标记观察范围待核验,来源失败保留该标记;成功后仅对实际变化的票保留,发布完成后清除。
桥缓存键包含决策版本和修订状态。PMS 最新计划缓存不超过五分钟;基座最新计划代理缓存一分钟, 指定版本代理可长缓存。目标预算为检查等待五分钟、消费等待最多五分钟,余下两分钟供装配及传播, 十二分钟是待生产验证的目标,不是本地性能结论。
第三批:消费记录与采纳核验
复用 pms_plan_snapshot.meta_json/roster_json,消费指纹含决策版本、有效筛选参数、持仓与黑名单上下文、
实际顺序和逐票过滤原因;正常展示预览不记作实际消费。消费留痕失败仍可展示,但不能新增自主提议。
取消按行数删除的所有调用,旧清理函数也改为不删除;当前保留全部记录,满足至少 120 交易日及在用引用保留。
后续若增加容量治理,必须证明交易日水位与引用保护,不能恢复旧 200 行截断。
PMS_PLAN_VERSION_RECHECK 为新增发布控制,默认 False。启用后自动采纳和人工采纳 OPEN 均强制刷新计划核验。
仅排名变化保留提议;复核不再应用 top_n 和主题展示限额,但原档位、风险、黑名单等资格检查仍保留。
研究、风险或仓位参数变化时,以当前组合重新走 _scan_open、合议、强制重新研判、建议数量及规则闸,
排除原提议自己的在途占用;人工提议更新内容并产生 proposal_revision,原批准不能沿用。
持仓数量、可用资金、行业归属和其他在途承诺变化也会使旧数量依据失效。重新评估时按已有 force_refresh
接口要求决策系统重新回答,遵守其原有强制次数预算;不能复用股票/动作缓存中的旧批准。
数据库用 WAIT_USER 状态与原 hard_numbers_json 的条件更新拒绝并发重复采纳和旧内容确认。
版本不可用、资格失效或重评未通过时保留待确认提议并给出原因,不产生新的自主买入指令。
已落指令仍沿原执行终检和风控,不因研究名次变化自动撤单或卖出。
复盘主表固定首个成功晨版;日频“交付名单”使用当日最后一条真实消费的已记录顺序与参数。
新增 版本消费对账_<日期>_<口径>.csv 单列所有晨版、修订、消费及核验记录,关联父版本、原因、
消费参数、过滤项和追溯资格。盘中多版本不当作多个独立交易日加权。缺档和旧名册排除真实效果统计,
记录覆盖率;既有五、十、二十日观察及执行账本口径保留。
第四批:研究信息与报告引用
基座沿用 company_review_runs.summary,新增 review_ref、report_version_path;不改表、不改质地合成。
报告 Markdown 与侧车 JSON 的内容指纹决定对象路径,先保存两种对象,再更新最新索引。
GET /company/{code}/review?ref=<指纹> 只读固定对象;无 ref 的最新报告入口保留。
桥透传已有预期差、周期、材料期、数量、未知问题、核验信息与报告生成时刻,计划行保存冻结研究摘要和差异。
来源未给出的日期与阈值保持未知;摘要不冒充历史完整报告。
基座今日页先取计划,再按该 decision_id 取判决。PMS 候选、提议和持仓页面展示版本、原因、 论点、反方论点、材料与报告时间、待核验事项;独立持仓研究另带 observation_at/scope,不能冒充计划版本。 完整指纹保留在详情。报告查询只接受合法指纹,并从已知基座地址取得指定版本。
五处登记与运行入口
本轮没有新表。新增任务的存储、调度、手工入口、日检和台账分别为 plan_versions.py、
xxl.py 的 plan-refresh、run.py plan-refresh(及 POST /plan/refresh)、plan_health.py(及 GET /health),
桥决定台账 064、PMS 决定台账 018 与同名交接文档。
# 桥机 · 已确认的桥容器内 /app;部署批准之后才执行,date 不传自动取最新已发布日
python run.py plan-refresh
python plan_health.py
平台入口仍是 /api/v1/xxl/daily-build?steps=plan-refresh,使用既有 X-Job-Key 鉴权;
实际平台任务为 XXL 137“每日选股计划五分钟修订”,已创建但停止,首个完整晨版通过后启用。日检只读文件,0 正常、1 旧版/待修订/修订检查超十二分钟、2 缺档或结构损坏。
时段外不把停止检查误报成故障;窗口内没有今日晨版也会提示。
本地验收与分批上线
四批本地实现及离线、假数据页面验收已完成。10-15 用户批准部署后,基座、155 桥和 155 模拟 PMS 均已部署,
桥最终镜像 33 组断网契约测试通过,11:28:51 完成重建。具体提交、参数和实测见 交接_每日选股计划完善_2026-10-15.md 末节。
上线顺序:先基座版本报告与 PMS 兼容读取、留痕;再桥新版发布并核验首个晨版;最后配置五分钟修订任务, 核验传播正常后只在已确认的模拟实例开启 PMS_PLAN_VERSION_RECHECK。不能替用户切换原排序开关、 档位白名单、策略阈值或自动扩大仓位。桥 requirements 更新需要纳入镜像;基座后台代码必须四 worker 一起换, 前端必须重建;这些容器操作仍需用户同意。实际机器、容器名及实例前缀部署前按各仓现行运维文档只读确认。
10-15 已获得本次容器操作批准;不把这次批准延伸为以后维护的常设授权。用户另批准补齐旧排序配置, 桥实际为 PLAN_RANK_AXIS=transmission、CARD_SORT_BY_QUALITY=0,保持原行为。今天旧计划字节不变。 下一交易日 10-16 07:25 由 Codex 心跳 automation-2 核验首个完整晨版;通过后启用已经创建且停止的 XXL 137,并打开模拟仓提议重核。额外五日模拟观察已取消。
按首版与后续实际修订事件记录(不再要求连续五个交易日):晨版与修订版本、输入及配置指纹、评析到达/发布/消费三个时刻、 消费顺序、信号优先原因、待核验股票、重新确认案例、失败恢复及重复指令计数。 目标为同版内容一致、旧版不变、正常传播不超过十二分钟、无并发重复指令。生产故障恢复与真实时延均待判收。 回退优先暂停平台 plan-refresh 并关闭新核验控制,保留版本、报告对象与账本;继续提供最后一份完整计划。 禁止把回退解释为删除历史或恢复查询时局部覆盖评析。
10-15 补充决定
用户取消额外五日模拟观察,未取消具体技术验收。任务 137 以 A股交易日时间段模式配置 07:20—15:10、300 秒,
当前停止;07:10 与 08:45 原任务保持。首个完整晨版通过后直接按已授权范围启用修订及提议重核,失败则保留当前有效版本并修复。
Codex 心跳 automation-2 负责 10-16 07:25 的接续检查和必要后续验证,不能当作五分钟业务调度。
PMS 三项旧对账差异的防双记修复 e9afc7a 已部署;旧批次成本、盈亏及执行进度仍需有证据的独立修复,不把日终数量归零差额当历史修复完成。
详细实例、测试、证据快照及待判收项见同日交接最后一节。
10-15 历史修复补充规格与判收
历史修复遵循“完整备份—逐笔编译—前置原行比较—事务写回—独立读回”,不能只调整持股差额。真实买入须以数量、价格、父指令和入账时间唯一对应批次;重复汇总批次须有下游汇总证据;逐笔数量须等于子单累计数量。卖出沿既有批次核销次序重建成本与盈亏,费用缺失不伪造。所有 SQL 维持单表守卫。原误判完成但未足量的父指令暂停剩余执行,不自动复活旧单;真实超额成交保留事实。
155 已部署 0871885 并恢复三票数量、成本、盈亏和 24 条父指令进度。134 笔成交、122 行原值审计,重复执行幂等,独立读回无差异。本地与候选镜像全部 44 批通过。费用、历史峰值、已删除旧轮次批次与历史全组合绩效的限制见同日交接最后一节。原始成交、回放游标和历史报表不改写。明日 07:25 首晨版核验和通过后启用 XXL 137 / 提议重核的安排不变。
最后补充:已恢复的指令均价有固定观察时点。未来新成交使旧均价失效,原修复金额保留于版本化审计,避免只更新执行量却沿用旧均价。该补齐为 a56dac5,22 个专项回归及完整 44 批本地和候选镜像测试通过,12:50 最终部署与再次读回通过。