68 KiB
每日选股计划完善交接
2026-10-15,北京时间。状态先行:基座、155 桥与 155 模拟 PMS 均已部署并重建相关容器。 用户批准补齐旧排序配置,桥保持 transmission 与 CARD_SORT_BY_QUALITY=0;11:28:51 完成最终重建。 新版发布代码已生效。已安排 10-16 07:25 核验首个完整晨版;XXL 任务 137 已创建且停止,判收后启用五分钟修订及 PMS 提议重核。用户已取消额外五日模拟观察。PMS 三项差异已定位为成交双记,防双记代码于 12:02:54 部署;历史账本尚未修复,详细证据见末节。 正式契约与实现原理见同目录《每日选股计划完善方案与开发规格_2026-10-15.md》。
用户已决定的范围
允许 astock-kg、akg-factor-bridge、tradingSystem 联动。保留准入门槛及真实运行参数; 盘中评析变化发布完整修订;采纳前核验,只有排名变化不撤销。基座只提供研究,桥负责版本与计划, PMS 负责组合和执行。择时能力不扩展,bionic_trader 只同步文档。用户本次明确批准部署和容器重启; 该批准不改变禁止机器重启和禁止自动切换排序、档位及仓位参数的边界。
工作区与原有修改
| 仓库 | 本轮开始的本地基线 | 本轮范围 |
|---|---|---|
| astock-kg | codex/review-asof-export-20261012,a6d8c7c | 报告对象归档、固定引用接口、计划代理和今日页、离线测试、规格与交接入口 |
| akg-factor-bridge | main,ca46a95 | 确定排序、输入录制与重放、不可变版本、修订任务、只读查询缓存、复盘及契约测试 |
| tradingSystem | main,afec4f7 | 消费记录、顺序与核验、命令和指令来源、研究页面、回归及台账 |
| bionic_trader | main,ec533d9 | 仅方案和交接同名副本 |
PMS 初始已有 docs/复盘决定台账.md 未提交修改,以及方案讨论稿、probe_both_offline.py、probe_crash_live.py 三个未跟踪文件。 本轮仅在该台账末尾追加 018,不覆盖原内容。bionic 已见 .DS_Store、.claude/.DS_Store 修改和第三方接入指引未跟踪文件,均未触碰。 以上为本轮开始的基线,不能当作本轮部署版本。实际提交见末节;提交已逐文件选取,未带入其他会话文件。
四批实际交付
- 排序:桥证据次级键与股票代码稳定收尾;无主题不限额桶;PMS 消费顺序进入自主扫描,信号插队留原因;命令保持原分配规则。
- 版本:桥新增 plan_inputs.py、plan_versions.py、plan_refresh.py、plan_health.py,来源与配置冻结、文件锁、原子入口、固定晨版、父链、失败待核验、版本缓存。旧实时覆盖入口已删除,历史不现算。
- PMS:新增 plan_revision.py、plan_recheck.py;received/consumed/rechecked 三类 JSON 记录;计划到提议及执行的来源关联;人工确认版本令牌及状态/原内容条件更新;停止按行数清理。PMS_PLAN_VERSION_RECHECK 默认 False,尚未启用。
- 研究:基座 archive.py 按内容归档并提供 ref 查询;桥完整透传已有研究字段,保存变更;基座今日页和 PMS 候选/提议/持仓页显示材料时间、报告时间、论点与未知项;固定报告不可用时明确缺失。
新增任务五处登记已写入规格书:发布存储、XXL 独立步骤、run.py 手工入口、plan_health 日检、桥台账 064/PMS 台账 018 与本交接。 实际 XXL 平台任务没有创建;requirements 新增 chinesecalendar>=1.11,部署镜像须包含它。
预判与离线实测
所有命令均在本地执行;PMS 及桥测试在空临时工作目录、清理业务环境变量并禁止所有网络连接的护栏内运行。 本地 Python 使用已存在的测试运行时,不安装生产依赖、不连接任何库或模型。
| 预判 | 实测证据 |
|---|---|
| 基座引用确定、内容或材料变化产生新引用;代理保持指定版本及研究字段 | 全套 190 项 unittest,OK,退出码 0;含 6 项新增归档/代理用例 |
| 好转差同步改变判决、质地带和排序,晨版不变;查询不读取新评析 | 桥 test_daily_plan_contracts 32 个用例/断言组,OK,退出码 0,含真实 collect 的合成来源修订测试 |
| 重复发布幂等、并发只有一版、断电后保留完整旧版、孤立文件不可查、晨版指针可恢复 | 同桥版本回归;健康检查能发现超过十二分钟无检查及入口损坏 |
| 历史不得回源、当前参数不改旧消费、无主题和同证据强度确定 | 桥历史/缓存/排序断言组通过;缺档明确排除 |
| 单一名额优先给消费顺序靠前者;信号优先有原因 | PMS 全套隔离入口 ALL SUITES PASS;包含新第 38 批 15 项 OK |
| 仅排名变化保留,材料变化重评数量,旧确认拒绝,状态条件更新防重复采纳 | 第 38 批覆盖资格失效、版本不可用、缩量 300→100、旧令牌、SQLite 两线程竞争仅一次成功 |
| 120 交易日与引用保留不能被行数清理破坏 | 清理函数已变为不删除;15 项中有不允许触发 DELETE 的回归;真实留存天数未判收 |
| 页面可读、未知不伪造、旧确认返回后要求重新确认 | 三个 PMS 页面守卫退出码 0;基座 JSX 构建成功;本地浏览器显示中文研究字段及再次确认提示,两端无 JS error |
PMS 最终全套回归已包含第 38 批 15 项;另覆盖名次裁剪复核、历史清理、在途承诺变化和旧研判缓存失效。 页面改动也通过全部三个页面守卫。桥日历的 2026 年日期另以现有 chinesecalendar 1.11.0 离线验证一项,OK。 浏览器服务只监听 127.0.0.1,所有接口为合成数据,任何 POST 都返回过期确认提示;它不能连接或产生真实交易。
# 本地 · astock-kg 根;实测使用 Codex 附带 Python 运行时
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=backend /Users/baobao/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/bin/python3 -m unittest discover -s backend/tests -t backend
# 本地 · akg-factor-bridge 根;测试入口复用 PMS 的配置隔离、断网护栏
/Users/baobao/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/bin/python3 ../tradingSystem/scripts/unit_test_guard.py test_daily_plan_contracts.py
# 本地 · tradingSystem 根;既有离线测试虚拟环境
/private/tmp/pms-codex-20261012-venv/bin/python scripts/run_tests.py
/private/tmp/pms-codex-20261012-venv/bin/python scripts/unit_test_guard.py scripts/test_batch38_units.py
/private/tmp/pms-codex-20261012-venv/bin/python scripts/unit_test_guard.py scripts/test_page_copy_guard.py
/private/tmp/pms-codex-20261012-venv/bin/python scripts/unit_test_guard.py scripts/test_page_enum_guard.py
/private/tmp/pms-codex-20261012-venv/bin/python scripts/unit_test_guard.py scripts/test_page_wiring_guard.py
本次原始输出位于本机 /private/tmp/base-final.log、bridge-contracts-final.log、pms-final.log、pms38-final.log; 临时目录可被系统清理,不把它当长期验收库。需要复核时用上述离线入口重跑。 页面截图在本机 /private/tmp/daily-plan-ui/,内容均为假数据,不能充作生产读数。
尚未完成的生产验收
本地实现阶段没有生产操作。下列原上线步骤中的核对、提交和首批部署已完成,状态以末节为准:
- 只读核对真实运行参数、部署 Git 版本、容器和模拟/真实实例身份;明确当前排序轴、档位白名单及仓位参数。
- 整理仅包含本轮文件的提交,按仓库中文提交约定处理文档副本;容器操作前取得用户同意,避开北京时间 06:10 与 07:10。
- 先部署兼容读取及留痕,再部署桥发布并核验晨版;最后在模拟实例启用五分钟修订与 PMS_PLAN_VERSION_RECHECK。
- 按规格每天核对版本一致性、源到发布到消费的时刻、顺序、核验和重复指令。完成五个连续交易日后才宣布模拟判收。
真实时延、平台调度互斥、进程重启恢复、数据量下磁盘容量及全部生产接口形状仍待真机验证。 本地恢复测试不能替代真实机器断电/重启证据;不得以此请求或执行机器重启。 回退保留全部版本及账本,停修订并提供最后有效版本;不恢复历史现算或局部覆盖。
此前财报历史导出的来源修订不完整限制仍有效,本轮没有解除旧实验的研究资格限制或投资验证暂停记录。
2026-10-15 首阶段部署记录(桥切换前,后续以末节为准)
时间均为北京时间。用户本轮指令为“继续,完成部署和重启”。未重启机器,未操作数据库容器,未执行交易、提议采纳或账本修复命令。
| 对象 | 实际结果 |
|---|---|
178 基座,~/project/astock-kg |
功能提交 148745a,时间显示补正 4a603d5,均已推送 master 并快进部署。10:27:28 重建 API 与四组 worker,各一副本;10:33:02 前端补正后完成再次构建与重建。beat 及数据服务未动。 |
155 模拟 PMS,/home/factor/project/tradingSystem |
功能提交 65d2940、时间显示补正 6a5ae12,10:42:37 四服务完成重建。镜像 sha256:ff022b05645d77bc7d204f3344036f41ad585de2e07d1ed5e2cd02e67c0abaf7;镜像内与运行目录 Python 指纹均为 eb4b4cbbff7f。 |
155 桥,/home/factor/project/akg-factor-bridge |
正式运行仍为 3d3f317;待部署 20431fe,含功能 5eac6f6 及远程历史台账合并。候选镜像 akg-factor-bridge-candidate:20261015 已就绪,32 项断网契约测试 OK。未拉正式目录、未重建运行容器。 |
| 188 真实 PMS | 只读核对为 51bd6dc,只运行 web 与 ws;未更新、未重启。先完成模拟观察。 |
| bionic_trader | 仅同步方案及交接副本;未部署或重启服务。 |
运行态判收为真机见过的部分:
- 基座 API 与前端 HTTP 200,四个 worker 均回应 ping,六个重建服务重启计数为零。日检 17 项通过、0 错误、2 警告;警告为 10 月国庆休市日缺档。行情与传导日均为 10-14,投影为 10-15。
- 基座真实浏览器页面显示旧计划“追溯不完整”,缺失研究字段为未知;旧无时区时间改为“时区未记录”,不再误标北京时间。浏览器未见 JS 错误。
- PMS 在服务器临时目录和新镜像内分别运行配置隔离、禁止联网的完整回归;新镜像 42 批
ALL SUITES PASS,新增 15 例 OK。页面三道守卫通过。四服务健康、DB 连通、交易日历正常;QMT ONLINE,水位继续推进,待入账与在途出口委托均为零。 - PMS 自动调度已落 received 记录 54(10:42:50)和 consumed 记录 55(10:43:04)。消费记录保存 13 只实际顺序、过滤条件、参数及消费指纹;排序为 quality_bucket,rank_by_upstream=False。旧桥没有 decision,记录保留空值,未伪造版本。
- 部署前后既有参数一致:下发 ws、自主 full、新建仓 propose_only;仅强传导、TOP_N=50、上下游主题限额 0、盘中信号优先 True;总规模 200 万、总仓上限 0.70、单股上限 0.08、最多 40 只、行业最多 4 只/0.40。PMS_PLAN_VERSION_RECHECK=False。
桥暂缓的具体原因。 正式代码还没有 PLAN_RANK_AXIS 与 CARD_SORT_BY_QUALITY;容器环境和 .env 都没有这两项。旧行为是传导主轴加档内质地加减分。main 中此前未上线的提交默认改为 quality 与卡内质地排序。直接更新会违背本轮“不得自动修改线上排序开关”。已向用户请求确认仅补 PLAN_RANK_AXIS=transmission 与 CARD_SORT_BY_QUALITY=0 保持当前行为;未收到答复前不修改配置、不切桥容器。已有 CARD_REQUIRE_STARTED=0 和质地降档门保持。
未判收。 桥完整晨版、固定历史版本、真实修订与十二分钟传播、提议重新核验、并发采纳及连续五个交易日观察仍未判收。XXL 五分钟任务尚未建立,新核验仍关闭。不能在盘中补造 07:10 晨版;桥部署后等待首个真实晨版再启用后续阶段。
既有异常。 PMS 部署前监视已出现 8—9 月出口委托缺父指令的历史记录。部署后轻量对账还报告 3 项差异,原因未在本轮定位;未改账、未清理。这些不能写成“全系统全绿”。
保留与回退。 基座服务器原有临时数据删改和未跟踪文件保留;155 的 deploy.sh 可执行位和未跟踪文件保留。PMS 原有台账 017、讨论稿及两个探针未随本轮提交。基座旧前端镜像为 astock-kg-frontend:rollback-20261015-3207417,PMS 旧镜像为 pms:rollback-20261015-afec4f7。155 源码挂载,回退必须匹配源码与镜像;任何回退均保留新版本及消费账本。
证据位置。 基座宿主 ~/akg_logs/daily-plan-deploy-20261015.log、daily-plan-postdeploy-check-20261015.log;155 宿主 ~/pms_logs/daily-plan-deploy-20261015.log、daily-plan-postdeploy-watch-20261015.log。镜像测试临时证据分别在 /tmp/pms-dailyplan-20261015.SX6G8I/ 与 /tmp/bridge-dailyplan-20261015.v6U7Wo/,临时目录不能代替本交接中的实测摘要。
部署期间 155 SSH 曾返回 Exceeded MaxStartups,10:33 恢复并复用同一连接,未修改 SSH 设置。台账临时还原命令曾被自动审批拒绝;之后采用先完整提交再合并远程条目的方式解决,没有丢弃内容。
2026-10-15 桥部署完成及最终核验
时间均为北京时间。用户明确答复“补齐旧排序配置,保持当前行为”。已在 155 桥 .env 补入
PLAN_RANK_AXIS=transmission 与 CARD_SORT_BY_QUALITY=0。原配置备份保存在
~/akg_bridge_logs/bridge.env.before-20261015,未将配置或凭据提交到仓库。
桥 11:21:06 首次重建后,继续修复旧格式计划直接读取的兼容问题,提交为 fe443f6。
原底层时间守卫还会因代码哈希变化拒绝旧计划;HTTP 缓存入口原本已正常返回 200,不能把它记成线上接口中断。
修复后直接读取也保留有效期内旧计划,仍保留原代码版本、时间约束和追溯缺失标记,不回源、不伪造新决策版本。
本地断网契约测试 33 个用例/断言组通过。仅含已提交源码的候选镜像内同样 33 组通过,才切换容器。
首次镜像测试因护栏挂载层级错误在入口退出,未计为通过;修正挂载后重跑成功。
最终 akg_factor_bridge 于 11:28:51 启动,运行镜像为
sha256:107929c3366d271eb762aee8687dac56dbabcae134d7856770dc6fcd2af7639b。
可读标签为 akg-factor-bridge-candidate:fe443f6,旧镜像保留为 akg-factor-bridge:rollback-20261015-3d3f317。
11:31 核对桥及 PMS 四服务全部 running,重启计数均为零。基座六个已重建服务也持续运行。
| 验收对象 | 真机读数 |
|---|---|
| 桥有效配置 | PLAN_RANK_AXIS=transmission,CARD_SORT_BY_QUALITY=False,CARD_REQUIRE_STARTED=False,CARD_COMPANY_QUALITY_GATE=True。 |
| 最新与日期查询 | /plan 与数据日 2026-10-14 查询均 200;两次主榜前 50 名查询分别约 1.47 秒、0.84 秒,前五名相同。缺失历史与非法版本均 404,不重装配。 |
| 旧计划保留 | 部署前后及查询后 plan_2026-10-14.json SHA256 均为 f849119c78b0f3ff780c69fa111a315d4c56a70ff3651e9347eabf3c2cd457cb。全量主榜 551、观察 595,decision 为空。 |
| 修订手工入口 | python run.py plan-refresh 返回 no_morning,未补造晨版,旧计划文件未变。健康提示“旧快照,追溯不完整”,为阶段内预期提示。 |
| PMS 实际读取 | 11:30 以真实参数只读拉取 300 条主榜、100 条观察档,日龄检查通过。没有触发扫描、采纳或执行。 |
| 自动留痕 | 正常调度于 11:23:02 写 received 56 与 consumed 57。与切换前 consumed 55 比较,13 只完整入选顺序、参数、rank_mode 全同;过滤记录变化另存新消费指纹。旧记录未改。 |
| 最终顺序 | consumed 57 前五为 002979.SZ、300274.SZ、002518.SZ、688147.SH、601138.SH;消费指纹 227b078ec947375b4f9a4d1684aa8bbc49117d7ac06aec69a8e442f9dfa9ebd8。 |
| PMS 控制与健康 | ws、propose_only、信号优先 True、总规模 200 万、总仓 0.70、单股 0.08 保持;PMS_PLAN_VERSION_RECHECK=False。/health 为 200、db_ok=True、calendar_degraded=False。 |
| 基座浏览器 | 桥切换后今日页正常显示旧计划、追溯不完整、截止时刻未知和旧时间未记录时区;浏览器错误数 0。 |
本阶段完成的是部署、兼容读取、消费留痕和现有行为核对。既有 07:10 晨间入口下次运行才形成首个完整晨版, 预期最早为 10-16;必须实际核验后,再配置 XXL 五分钟任务并在模拟仓开启新版核验。 本轮未新增宿主 cron,也未建立自动检查或自动启用任务。XXL 平台任务尚未创建,后续需从现有平台入口接续。 十二分钟传播、新版提议重核及五个连续交易日观察仍未判收。188 真实仓和择时服务未部署、未重启。 前节记载的 PMS 历史异常与轻量对账三项差异继续待查,本轮没有据此改账或清理。
桥日志在宿主 ~/akg_bridge_logs/daily-plan-deploy-20261015.log、
daily-plan-compat-tests-20261015.log、daily-plan-postdeploy-check-20261015.log。
本地补充回归为 /private/tmp/bridge-deploy-compat-20261015.log。PMS 最终读取追加到原 postdeploy-watch 日志。
此前连接问题出现在开发机到 155:2280,尝试从 178 到 155 也遇到相同限流;已恢复,之后部署持续使用开发机到 155 的 SSH 连接。
10-15 12:05 接续决定、差异根因及修复部署
用户最新要求:先排查 PMS 三项对账差异,安排下个交易日核验首个完整晨版,通过后启用五分钟自动修订与提议重核。 当前实例本身就是模拟仓,不再增加五个交易日观察。本条覆盖前文、规格书与台账 064 的五日上线等待要求; 版本一致性、顺序、幂等、故障恢复和十二分钟传播的技术验收继续保留,五/十/二十日策略复盘口径不变。
三项差异
| 股票 | PMS / QMT 数量 | 核对结果 |
|---|---|---|
| 002050.SZ | 800 / 700 | 同一委托重复买入 100。WS 为 73+27 股,汇总表又以 31.560 记 100;重复批次 1361。 |
| 002979.SZ | 0 / 1900 | 四个委托的 1300+500+100+100 股被 WS 与汇总各扣一遍,账本下限截断为零。 |
| 688100.SH | 2400 / 1400 | 700 买、400 卖、700 买被双记,净多 1000;重复部分还被误认外部 BASE。 |
八个委托的 instruction_id/order_id、broker_order_id/qmt_order_id 均逐笔相同,WS 全部 processed=1, 汇总全部已在 replay cursor.seen。原因是 ledger_service.replay_fills 的“汇总只兜外部成交”停留在注释,实际没有归属排除。 差异发生于本次计划部署前。另有 ws 与 trading_position 表的两个代码覆盖差异(562590.SH、688825.SH), 属于事实源分歧提示,与上面三项账本数量差异分列;本次仍按现行 ws_first 规则。
修复 e9afc7a 已推送并在 155 拉取。按出口身份分流,已归属 ws 的汇总只留跳过记录和 seen,等待逐笔;
身份读取失败或矛盾不落账不记 seen。无归属的外部人工成交保持原流程。新增 12 例,开发机隔离全量 43 批、
155 候选镜像 --network none 全量 43 批均通过。真机只读分类覆盖八笔实际委托,全部正确命中。
12:02:54 北京时间重建 pms-web、pms-worker、pms-beat、pms-ws,镜像为
sha256:c17af17aeb09d151bbe932395b879add1ed336b16739703f9acc594bee30b3f1,标签 pms:replay-fix-e9afc7a,
镜像与运行工作树 Python 指纹同为 cc988cd762bf。回退标签 pms:rollback-before-replay-fix-20261015。
12:04:59 /health 正常,db_ok=True、calendar_degraded=False,QMT ONLINE,seq/acked_seq 都为 1226149,
待入账与在途出口委托均为 0。ws、propose_only、信号优先 True、200 万、0.70、0.08 及完整计划筛选参数未变,
PMS_PLAN_VERSION_RECHECK 仍 False。午休正常返回 not_in_session;修复后自然成交回放尚待真实事件判收。
历史账本没有直接调平。日终 RECON 调数量不能还原被污染的成本、已实现盈亏和指令执行进度,不能声称账已修好。
需根据逐笔与可用历史批次快照另做可逆修复设计;证据不足部分显式保留不确定性,不虚构准确历史。
详细排查与修复规格在 tradingSystem 的 docs/PMS三项对账差异排查_2026-10-15.md,台账 019。
原始证据位于 155 ~/pms_logs/reconciliation-evidence-20261015-before-fix-v2.json(340982 字节,
SHA256 8e0badf4d771fbf8a3227250c6cc2c2bf3c8234dda2fc33a31f0ab00920f5501)。首次导出的空文件是失败初稿,v2 才有效。
部署、候选镜像测试、判收分别见 ~/pms_logs/replay-fix-deploy-20261015.log、
replay-fix-tests-20261015.log、replay-fix-postdeploy-20261015.log。服务器原有 deploy.sh 修改与未跟踪文件未覆盖。
已建立的接续入口
- Codex 心跳
automation-2,名称“每日计划首个晨版核验与启用”,ACTIVE,按北京时间每天 07:25。 首次预期 2026-10-16,155 日历确认该日为交易日且未降级。不是业务修订调度,不替代 XXL。 完成启用与必要技术验收后暂停;等待期间只报告实质变化,不能加回五日观察条件。 - XXL 平台
http://192.168.16.165:8080/xxl-job-admin,通用执行器,任务 137“每日选股计划五分钟修订”。 已复制既有 08:45 区制任务的通用 HTTP GLUE(Python3) 脚本并只改入口步骤为 plan-refresh; A股交易日模式、07:20—15:10、间隔 300 秒,回调开启。已有鉴权值沿用,不写入文档。 当前 已停止,没有执行一次、没有提前启用;以后找到 137 启用即可,不重复创建。 - 原 07:10“知识图谱每日股票池生成”与 08:45“知识图谱每日股票池重检索”均保持启用,未改配置。 平台记录 10-15 07:10 构建成功,耗时 1 分 28 秒;08:45 成功,耗时 3 秒。
07:25 首版验收要逐项核对:实际行情日与今日 cutoff、schema/decision、morning 指针、冻结输入及有效配置、 全量名次、最新/日期/固定版本查询一致、旧版本不变、缺档不重构。通过后启用任务 137,核对下一次触发与回调结果, 随后仅用 ParamStore.set_param 打开 155 的 PMS_PLAN_VERSION_RECHECK。保持其余运行参数。 消费必须来自正常 received/consumed 记录,预览读取不充作实际消费。自然新评析才能测实际传播时延; 不得为验收采纳提议或制造交易。若该时点还没有消费或自然修订证据,调整同一心跳后续核验时间继续。 当前历史账本差异不能被记录为已解决,但不以额外模拟天数代替具体技术验收。
10-15 12:40 历史账本修复完成与判收
本节取代前文“三项历史差异尚未修复”的当前状态。用户明确批准先备份、逐笔核对并恢复数量、成本、盈亏及指令执行进度。已在 155 模拟仓完成,188 未操作。
备份、部署和写回
功能提交 0871885,Python 指纹 01251315d8d1。本地配置隔离禁网和 155 候选镜像 --network none 均通过全部 44 批测试,新批次 40 有 21 例。未将用户原有未提交台账 017、讨论稿或探针纳入提交。
先于任何写账保存完整备份,再在午间暂停 beat/worker,拉取已提交版本并重建四容器。web/ws 于 12:37:27 启动,worker/beat 于 12:39:33 恢复。四容器同镜像 sha256:22422dc46784ff87c8ccfc6f9a2ae05ba8ee111eb18e3f1a369f9d913279ff0b,标签 pms:history-repair-0871885;上一镜像留为 pms:rollback-before-history-repair-20261015。
155 宿主 ~/pms_logs/ 的证据如下,JSON 文件权限为 600。
| 文件 | 内容或 SHA256 |
|---|---|
| historical-repair-backup-20261015-1225.json | 初始完整备份,81cfc59600d7ca07de7fc4b83b7c5b153719d0ea248be21fd9d910bcfc32e636 |
| history-repair-before-write-20261015.json | 12:37:55 写前完整备份,d1b3eeaede0ea418ec071fa593ee6a98177a55433ee0201b502ff80ff6226f02 |
| history-repair-preview-20261015.json | 逐笔映射、每笔卖出分配、逐日数量金额、全部目标列和原值 |
| history-repair-after-write-20261015.json | 写后完整备份,8463f0da2e1d152e7606c38607918b05555481f4ecbd15b482a326951ebd3606 |
| history-repair-apply-20261015.log / history-repair-verify-20261015.json | 实际提交及独立读回判收,全部检查通过 |
| history-repair-build-20261015.log / history-repair-tests-20261015.log / history-repair-deploy-20261015.log | 候选构建、断网测试及容器重建 |
修复批号 HIST_c036a684cab040387321396e。同一事务校验原行、完整逐笔和有效参数,修改 122 行,保存 122 条逐行原值审计和 1 条完成记录。再次执行同一备份返回 already_applied,审计数仍 122+1。原始成交、回放游标、方案、命令、手续费流水、旧日报净值及其他股票原行均未被改写。
实际恢复结果
| 股票 | 恢复数量 | T+1 可卖量 | 摊薄成本(元) | 账期已实现盈亏(元) | 可追溯起点 |
|---|---|---|---|---|---|
| 002050.SZ | 700 | 600 | 44.109 | -6762.70 | 2026-09-22 |
| 002979.SZ | 1900 | 1900 | 55.060 | -1684.25 | 2026-09-21 |
| 688100.SH | 1400 | 0 | 23.704 | 16.86 | 2026-10-14 |
成本沿用 PMS 的含已实现盈亏摊薄口径,盈亏为原批次核销规则下的毛额,不含费用。134 笔成交对应 61 个真实买入批次;33 个重复汇总或 RECON 批次归零留痕,原 ID 保留。逐笔成交与 39 个留存子单的累计数量一致,累计均价差异最大 0.004964 元,处于 QMT 两位小数舍入范围内;其中 2 个子单属于 688100 的已闭合旧轮次,未混入当前账期。
24 条父指令恢复实际成交量、成交均价,并在 progress 中增加逐笔证据、原进度、剩余量及超额量。七条原误判 CONFIRMED 的指令改为 CANCELLED,含义为“历史修复暂停剩余执行”;其子单都已终态,无需撤单,也没有向 QMT 发送撤单或新单。仍在执行的 002050 DCA 指令实际进度为 100/300,保持原生命周期。
002979 的 STR20261012093212_002979SZ_g 目标 1300 股,两个真实子单累计买入 2600 股,保留超额 1300 的事实。这是实际执行异常,无法通过删账撤销,后续须单独排查历史出手并发/重试链路;本次没有反向交易。688100 活跃网格第 3 档恢复为真实剩余 1000 股,批次成本 23506.51 元、均价 23.50651;原仅记 700 股/16471 元。已取消的旧策略未恢复。
12:40 真机健康 200、db_ok=True、calendar_degraded=False,QMT ONLINE、last_seq=acked_seq=1226583、last_error 为空,待入账 0。独立对账返回 diffs=[]、errors=[]、severity=OK。历史 streak=14 是尚未到日终重置的旧计数,不是仍有三项差异。既有 ws_first 源覆盖警告仍为 562590.SH、688825.SH 两票,单列保留,不混同已修复差异。
明确不能还原或未判收的部分
- 134 笔逐笔费用为空,无法还原真实扣费与净盈亏;费用流水原为空,未补零冒充真实费用。
- 缺完整盘中行情和当时账本,历史安全垫峰值无法准确恢复,保留原值并标明限制。
- 688100 的 08-27 买 800、09-01 卖 800 的旧轮次可核对成交毛差 330.47 元,但原父指令和批次已不在当前账本;无法恢复原始批次分配与完整决策链,不把该旧轮次利润写进本轮。
- 历史日报和全组合净值受旧错账影响,缺少重建全组合所需的全部原始状态,本次保持原档案。修复预演提供逐票逐日数量、成交净额和批次盈亏,不能将其冒充当时实际报表或已修复全历史绩效。
- 防双记代码的自然新成交判收仍需真实事件;不得制造成交来验收。真实超目标成交和两个事实源覆盖分歧仍单列待查。
后续和回退
automation-2 已更新修复结论,保持 ACTIVE 和北京时间 10-16 07:25。首个完整晨版通过后启用已创建且停止的 XXL 137,再开启 155 的 PMS_PLAN_VERSION_RECHECK。当前该参数仍 False,ws、propose_only、旧传导排序及档位和仓位参数保持;不增加额外五日模拟观察。版本一致、顺序、自然传播十二分钟、失败守成和无重复指令仍须实际事件判收。
手工入口 scripts/repair_ledger_history.py 开头列有 backup/preview/apply/rollback 跑法。回退须读取审计并比较修复后原行,后续有新交易或状态变化会拒绝覆盖;不得通过切旧镜像恢复旧账,更不得直接用旧备份覆盖新的成交。回退保留新旧审计与计划版本。
10-15 12:50 最终运行版本与均价有效期
最终功能提交为 a56dac5,包含 0871885 的历史修复及指令均价有效期补齐。原增量入账接口只收到数量,不能重算全量均价;后续新成交时同步清空旧 exec_avg_price,固定修复时点的准确金额继续保存在 progress.historical_repair 与操作审计中,避免显示过期均价。未再次改写历史账本,也未恢复暂停指令。
batch40 增至 22 例,内存数据库验证数量增加、均价失效、固定证据保持;本地与候选镜像 --network none 全部 44 批再次通过。12:50:11 四容器重建并恢复,镜像 sha256:f3d4e698bc31be521f59b39588444495e143f9a52a3d5233b42a699f4030093d,标签 pms:mean-validity-a56dac5,Python 指纹 3de5fc3a261e。前一版保留为 pms:rollback-before-mean-validity-20261015。
12:50:47 再次独立逐字段核验通过,三票数量、成本与盈亏保持上一节读数,审计仍为 122+1,对账 diffs=[]、severity=OK。健康 200、db_ok=True、calendar_degraded=False,QMT ONLINE、last_seq=acked_seq=1226717、last_error 为空。PMS_PLAN_VERSION_RECHECK 仍 False。全部备份及不可还原边界继续有效,明日 07:25 接续安排保持。
最终日志位于 155 ~/pms_logs/mean-validity-build-20261015.log、mean-validity-tests-20261015.log、mean-validity-deploy-20261015.log、mean-validity-ledger-verify-20261015.json。四仓文档继续同步;只有文档更新无需再次重启容器。
10-16 首晨版验收、边界修复与启用结果
本节为最新状态,时间均为北京时间。晨版核验及边界修复后,已启用 XXL 137 和 155 提议重核。 本轮只重建桥容器,基座与 PMS 容器未重启,188 未操作。没有人工采纳提议或制造成交。
晨版及运行读数
- 178 部署仍为 3a2c7c0,四条 worker 均存活。日检 17 项通过、3 警告、0 错误。行情与传导日为 10-15,投影为 10-16。两条警告是休市缺档,另一条为 17 家材料已到而报告未更新。本轮未触发模型补跑。
- 155 正常晨链 07:10 开始,约 1 分 40 秒完成。行情日 10-15,决策截止 10-16 07:10:13.665600,生成于 07:10:55。
- 主榜 556、观察 598、候选卡 20、关注卡 27。冻结 32 路输入,无来源错误。591 行有评析,14 行有固定报告引用;其余缺引用的旧报告明确只保留摘要。
- 输入指纹、有效参数、全量研究名次、最新、日期及固定版本查询均一致,查询裁剪不改变研究名次。
- 晨版 ID 为
2026-10-15_030042d5142661e0672203231f15c86467078219eb6f5de4acf1091653c011d9。原代码版本继续记录 8549fa8,不随部署改写。 - 晨版文件 SHA256 为
457c5c803711ca89941b6ae14f31a1bfad5f586ab1efe24e68b8d803c14f713e;归档文件 SHA256 为70826ed236b30c1120a1f5ab99fb575e0b46a7acf31051dc117cce6d68fe1c45。上线前后均保持。
凌晨重复构建与历史缺口
首次判收没有全绿。01:50 的既有“量化交易计划任务”流水线也调用默认三步。 当时盘前数据尚未准备,01:51 以 10-14 数据日发布首版,替换了旧格式日期入口。 旧文件原哈希为 f849119c78b0f3ff780c69fa111a315d4c56a70ff3651e9347eabf3c2cd457cb。 现入口哈希为 8e9d3996ef49ee9352d828177ded5142f35ff5258099b02f14735d6bf5e9ef07。 未找到可核验原件,不能声称恢复,也不能把凌晨新采集结果当作昨天的真实决策。
修复 e44f770 已提交、推送并部署。已发布日期重复生成直接复用,不再采集或写日频状态及评析目标。 底层发布拒绝替换旧格式。复盘核对首版截止日是否为行情日的下一交易日,晚生成样本排除。 实机证明 10-14 晚生成首版已排除,10-15 今晨版正常可用。现存完整版本与原流水线未改写。
本地首次测试因运行时缺日历依赖失败,未据此部署。
使用既有纯 Python 日历依赖后,本地 36 组通过。155 候选镜像禁网测试也为 36 组通过。
07:33:40 桥容器重建,镜像 sha256:c3a74ef54f08856c721a0a6fbb6a85cf8a726ce47b8e7c1ad226008a0fddb10d。
候选标签为 akg-factor-bridge-morning:e44f770,回退标签为 akg-factor-bridge-rollback:before-morning-boundary-20261016。
先备份现存计划,再拉取及重建。备份为 155 ~/akg_bridge_logs/morning-before-deploy-20261016.tar,
SHA256 f585f8fddb382060f20bff796b12071bea5da6c317807fddd05a2c46100974f3。
回退保留所有版本和账本;旧格式原件缺失仍未恢复,不用旧备份覆盖后来数据。
启用与账本复查
XXL 137 已启动。07:35 自动触发,07:35:12 返回 unchanged,回调 HTTP 200。 平台显示成功、耗时 13 秒、下次 07:40。没有手工重复触发或无变化新版本。 原 07:10、08:45 及凌晨流水线未改;修订仍为交易日 07:20—15:10 每 300 秒。
PMS_PLAN_VERSION_RECHECK 于 07:35:36 经 ParamStore 开为 True,另起 worker 读进程确认。 首次审计身份过长被数据库拒绝,缩短为 codex-20261016 后成功,未绕过参数入口。 ws、propose_only、信号优先 True、规模 200 万、总仓 0.70、单股 0.08 保持。 桥传导排序及 CARD_SORT_BY_QUALITY=0 保持。 PMS 上游排序 False、质地排序 True、仅强传导、TOP_N=50、两处主题限额 0 保持。
PMS 功能仍为 a56dac5,四容器镜像 f3d4e698bc31,与昨日一致。 07:27 三票数量 700、1900、1400;成本 44.109、55.060、23.704;毛盈亏 -6762.70、-1684.25、16.86。 对账 diffs=[]、errors=[]、severity=OK,旧 streak 已归零。QMT 在线且水位同步。 两处事实源覆盖差异和 002979 真实超目标买入继续单列待查。七条历史暂停指令没有恢复。
页面与后续验收
基座今日页浏览器已核对北京时间、版本详情与研究面板,浏览器错误数为零。
缺少固定报告时明确显示“历史报告版本不可还原,仅有摘要”。
PMS 页面要求重新登录,未绕过登录。真实候选与提议页面本轮未判收。
开发机截图为 /private/tmp/daily-plan-refresh-enabled-20261016.jpg 和 /private/tmp/daily-plan-morning-base-20261016.jpg。
155 证据位于 ~/pms_logs/:morning-acceptance-20261016.json 保留首次失败项,
morning-acceptance-finish-20261016.json 为修复后核验,pms-morning-20261016.json 为只读账本与参数,
plan-recheck-enable-20261016.json 为开关前后记录。只读核验脚本一并保存在该目录。
构建、候选测试及部署日志为 ~/akg_bridge_logs/morning-boundary-*-20261016.log。
07:27 最新快照仍是昨日 59。没有把浏览器预览记作今天的实际消费。 真实消费、新评析传播十二分钟、提议重核案例和自然新成交防双记仍未判收。 automation-2 已改为北京时间每日 08:55,今日核对正常消费及 08:45 区制修订。 没有自然事件就保留未判收状态并接续,不追加五日模拟观察。
# 155 模拟桥机 · ~/project/akg-factor-bridge;预期退出码 0,pending_codes 为空
cd ~/project/akg-factor-bridge
docker exec akg_factor_bridge python plan_health.py
# 155 模拟 PMS 机 · ~/project/tradingSystem;预期打印 True
cd ~/project/tradingSystem
docker exec pms-web python -c "from app.services import param_store as p; print(p.get('PMS_PLAN_VERSION_RECHECK'))"
10-16 09:30 调度修复、实际消费与登录后页面验收
本节接续今晨记录,时间均为北京时间。只操作 155 桥与模拟 PMS。 178 本轮只同步文档,未改业务代码或重建。188 未操作。 XXL 137 和 PMS_PLAN_VERSION_RECHECK 保持开启,没有额外五日观察安排。
区制任务冲突与恢复
08:45 XXL 122 与五分钟任务 137 同时到达。137 先占锁,122 返回 409。 平台日志 92246 确认失败,未配置自动重试,旧完整计划继续可读。 桥修复提交 72efc8c 已推送并拉取。两类修订允许最多两条等待,串行执行。 其他构建仍沿用忙时拒绝。任务各自回调,失败也释放下一条。 等待队列在进程内,重启后不能声称自动续跑,须核对未结案任务。
本地与候选镜像断网通过 7 个相关测试套件。 任务入口 12 例覆盖双向同时触发、失败释放、队列上限及普通构建拒绝。 区制测试改用真实版本发布,验证旧文件、晨版指针不变及重复触发幂等。 初次本地因缺依赖失败,补齐隔离运行依赖后通过;旧区制测试已不符合不可变契约,修正后通过。 第一次部署预检因宿主读取权限及 docker top 参数失败,在拉取和重建前停止。 改为容器内读取计划并修正进程检查后,再备份和部署。
09:12:53 桥重建生效。镜像为
sha256:05aea00dbc240d94c4b6f014959a811878711f8130cb61ca3840cd27dd734569。
候选标签 akg-factor-bridge-queue:72efc8c,回退标签 akg-factor-bridge-rollback:before-revision-queue-20261016。
写前备份 ~/akg_bridge_logs/revision-queue-before-20261016.tar,
SHA256 为 318f9f838496ef8a1cac4510f49adc6dd31ee6667d19f8a4294eeb82ac19931e。
原 10 份完整归档及晨版固定指针逐个哈希核验通过。
通过平台补执行既有任务 122,没有新增任务。09:13:25 开始,平台回调成功,耗时 23 秒。
09:13:41 发布区制完整版本
2026-10-15_6abfc0e8d8c409bdb7b0292f6ec29124a902cbf04f9d0fcdc56b9180fe169021。
区制数据日为 10-15,来源计算时间为 10-16 08:40:00,状态 OK,degraded=False。
最新、按日期、固定版本三种查询内容一致。09:20 修订健康 error=null、pending_codes=[]。
真实并发冲突修复依赖回归证据;尚未再次发生自然同刻冲突,不冒充已完成线上并发复现。
自然研究修订与真实消费
08:10 至 08:50 共 9 个自然评析修订,覆盖 24 份新评析。
从报告生成到完整版本发布,最短 16.507789 秒,最长 309.012842 秒。
所有版本父子链、输入与配置指纹均通过;评析修订只变更评析输入,其余冻结输入保持。
未发现无变化重复发布。晨版归档 SHA256 仍为
70826ed236b30c1120a1f5ab99fb575e0b46a7acf31051dc117cce6d68fe1c45。
晨版指针 SHA256 仍为 6c9e86e39a623b38d08a9bce8d64873c1fd1c12fee1367adea352ac59086e022。
修订沿确定性路径运行,未为验收生成评析或调用模型。
08:40:05 正常预热 received 记录 60 收到 08:35 版本。 08:59:27 的 received 61、62 内容相同,是旧快照写入允许的并发重复观察。 它们不是两个发布版本,不能按收到记录行数计算版本覆盖率,也未删除历史行。 09:15:36 received 63 收到区制版,浏览器读取不计实际消费。
09:25:03 正常 intraday_exec 产生 consumed 64,版本为上述 6abfc0e8 区制版。 24 只候选按 selection_rank 1—24 排列,名册与消费 order 完全一致,消费指纹重算通过。 过滤为已持仓 5、仅展示 267、档位不足 4。当前 PMS 排序为 quality_bucket。 这是原有效参数的结果,桥仍为 transmission,不能把两层参数混称一个排序开关。 PMS 上游排序 False、质地排序 True、仅强传导、TOP_N=50 均未改变。 09:25—09:27 正常任务成功,未新建提议、未新建指令。相同消费上下文未重复追加。
区制发布至首次实际消费为 11 分 22 秒。 盘前评析到首次盘中消费受既有 09:25 扫描起点限制,不能据此宣称研究全链路十二分钟已判收。 仍需在正常盘中出现新评析后,关联报告、发布、消费三个时刻测量。
PMS 页面误报修复与部署
用户完成登录后,发现已收到新版本仍提示“未落快照”。
写入使用版本与查询范围指纹,变化和预览却比较旧名册指纹。
3057250 统一三个出口,旧数据仍兼容。运维提议页补展示已有研究依据。
过期的“实时装配”“没有版本”“始终按 score”说明已修正。
候选、数量和参数均未改动,未人工采纳或拒绝任何提议。
本地 44 批配置隔离禁网测试、三个页面守卫全部通过。
候选镜像 --network none 的 44 批也全部通过。
09:20:19 四容器统一重建为
sha256:061c7c1218c5e0e62838ace6804aad785517337a511aae12e2a9f792d38aaef5。
候选标签 pms:received-3057250,Python 指纹 72cbce06747b。
回退标签 pms:rollback-before-received-20261016,保留此前历史修复镜像。
写前只读记录 ~/pms_logs/received-before-deploy-20261016.json,
SHA256 179f25584ff2384e58c1277061352bea01c99d53fa7ff6a95b270399e30308dc。
本轮没有账本修复写操作。写前后 15 项有效参数和三票数量、成本、毛盈亏完全一致。
09:21 健康正常、QMT ONLINE、回放水位同步。对账 diffs=[]、errors=[]、severity=OK、streak=0。
两个事实源覆盖差异继续单列,ws_first 未变;七条历史暂停指令未恢复。
浏览器候选页显示区制版本、北京时间和材料期,误报已消失。 688025 示例显示报告生成 08:08:09、财务期 2026Q1、研报期 2026Q2、材料 67、未知问题 6。 催化时间缺失显示无法判断,未伪造阈值或完整历史报告。 旧持仓入场及昨日 SELL 提议均标明追溯不完整;提议研究详情已可展开。 持仓“当前研究”来自 08:40 独立拉取的 08:35 计划,页面展示其固定版本,不能当作 09:13 新版消费。 没有为展示更新持仓决策或绕过既有逻辑状态调度。 09:20 重载后的浏览器错误记录为空,历史登录失败记录不混入本次结果。
证据、后续与回退
155 桥证据在 ~/akg_bridge_logs/:revision-queue-build、revision-queue-tests、revision-queue-deploy-final 的 20261016 日志,
revision-evidence-20261016.json 及只读 verify_revision_evidence_20261016.py。
PMS 证据在 ~/pms_logs/:received-build、received-tests、received-deploy 的 20261016 日志,
received-before-deploy、received-after-deploy 两份 JSON,consumption-20261016.json、verify_consumption_20261016.py。
开发机页面截图为 /private/tmp/revision-regime-recovered-20261016.jpg、/private/tmp/pms-plan-version-verified-20261016.jpg。
接续只取自然事件:盘中新评析至实际消费十二分钟、真实提议重核、自然新成交防双记。 没有事件时明确保留未判收项,不采纳提议、不造交易、不安排额外五日观察。 真实超目标成交的历史原因、事实源覆盖差异及历史还原边界继续保留。 同一 automation-2 下一核验调整至今日 10:15。技术验收完成才暂停。 回退保留全部版本和账本,恢复对应旧镜像;若修订异常可停 137 并继续提供最后完整版本。 文档同步不需再次重建容器。
# 155 模拟桥机 · ~/project/akg-factor-bridge;预期退出码 0,完整版本可读,无待修订错误
cd ~/project/akg-factor-bridge
docker exec akg_factor_bridge python plan_health.py
# 155 模拟 PMS 机 · ~/project/tradingSystem;预期正常消费记录的 fingerprint_ok、order_ok 为 true
cd ~/project/tradingSystem
docker exec -i pms-web python < ~/pms_logs/verify_consumption_20261016.py
10-16 09:49 交易员研究展示修正
用户在交易员右侧打开“计划版本与研究变化”后指出风格与实用性问题。
长标识横向溢出,整段字段把采纳、驳回按钮挤出可视区。此前页面判收只确认内容,未充分评估使用体验。
修复 c2d0dc9 已提交、推送并在 155 拉取。操作卡删除字段清单,沿用基本面入口。
研究详情先展示判断与风险,再展示预期及验证事项。来源标识与指纹默认折叠且允许换行。
候选、持仓和运维提议的相同清单一起改为统一详情入口。旧记录无摘要时只作一句明确说明。
仅修改静态页面与文档,没有改参数、数量、提议核验或执行路径,没有采纳或驳回提议。
本地三道页面守卫通过,JavaScript 语法及合成空值、零值、变化、数字显示与原值保持核验通过。 155 用候选归档在 --network none 临时容器再次通过三道守卫后,备份旧页面再 git pull。 四容器启动时间与镜像逐字比较保持,未重建或重启。现服务通过 /app 挂载提供新页面。 容器镜像仍为 061c7c1218c5e0e62838ace6804aad785517337a511aae12e2a9f792d38aaef5,Python 功能仍为 3057250。 不可把容器镜像内旧静态页冒充已更新;本次生效证据是挂载文件和浏览器。
旧页面备份为 155 ~/pms_logs/index-before-research-ui-c2d0dc9.html, SHA256 a995a282b351d2f079b58789870304969e2011b97508117897f5a48ff82a2dc9。 新页面 SHA256 08289bf573eb13ddfec73c818bb3c493177122dda716422580a39a3bca7d9956。 候选为 ~/pms_logs/pms-research-ui-c2d0dc9.tar。进程对比为 ui-before-processes-c2d0dc9.txt 与 ui-after-processes-c2d0dc9.txt。 回退通过本次静态修改的反向提交后拉取,保留版本与账本;重启旧镜像不会撤销挂载页面。
09:47—09:49 在登录后的真实交易员页面核验。侧栏 clientWidth=scrollWidth=295,来源展开区均为 694。 科士达 600 股提议的研究仍为冻结原文,基本面详情分段可读,来源默认折叠;裁决按钮紧接摘要。 页面重载后新错误记录为零。未测试裁决提交,以免制造交易。 开发机截图为 /private/tmp/pms-trader-proposals-refined-20261016.jpg 与 /private/tmp/pms-research-detail-20261016.jpg。 已将浏览器留在交易员界面。自然事件技术核验仍按今日 10:15 同一心跳继续。
# 155 模拟 PMS 机 · ~/project/tradingSystem;预期与本节新页面 SHA256 相同
cd ~/project/tradingSystem
sha256sum app/web/static/index.html
10-16 10:20 交易员界面整体精简判收
按用户最新要求检查整个交易员界面,重点为提议与候选。功能提交 16d8fd7,折叠补修 564f553。两者已推送并在 155 拉取生效。仅变更静态 HTML 与文档,未改 Python、交易规则、候选过滤和排序、运行参数、数量或裁决路径。
提议突出股数、预计金额、参考价和建议仓位。清仓也使用中性的“预计金额”,缺价不显示零金额。通用采纳与驳回说明只保留一次;数量重算过程移入可点击详情。仓位不一致仍直接警示。有效期统一显示北京时间,跨日保留日期。候选直接显示等待条件;占用提示去除内部代码数组,未知异常提示保留。方案数量改为当前可见数量。持仓、信号、顶栏和计划详情同步简化,技术记录折叠保留。
浏览器发现原有分区折叠只改变箭头,缺少隐藏样式,已补齐。提议、交易方案可收起后集中查看候选,默认仍展开。整体使用原布局、配色与字号体系。
本地三项页面守卫通过。临时显示断言核对金额与空值、北京时间跨日、风险警示及对象原值未变。采纳、驳回、策略操作、计划读写入口函数与候选筛选表达式均与改前逐字一致。155 两次均先在匹配镜像的 --network none 临时容器通过三项守卫,再备份并拉取。四容器镜像与启动时间和部署前逐字一致,未重启。运行镜像仍为 061c7c1218c5e0e62838ace6804aad785517337a511aae12e2a9f792d38aaef5,Python 功能仍为 3057250。188 未操作。
部署前页面备份:155 ~/pms_logs/index-before-trader-ui-16d8fd7.html,SHA256 08289bf573eb13ddfec73c818bb3c493177122dda716422580a39a3bca7d9956。补修前另存 index-before-trader-ui-564f553.html。最终页面 SHA256 8cd75f4cafd3e23f90c036ac2accd5131568ad2c26bc7bc844f5d45cd8808b31。候选包 pms-trader-ui-16d8fd7.tar 与 pms-trader-ui-fold.tar 均在同目录。四容器对比证据为 trader-ui-16d8fd7-before.txt、trader-ui-564f553-after.txt。
10:14—10:20 真实浏览器核验:3 条提议、13 只候选、2 个当前交易方案。瑞芯微卡保留 1.20% 实际占比与 1.0% 建议,警示直接可见;数量详情保留 300 股改为 100 股以及最低一手原因。基本面摘要与风险仍为冻结原文,数据来源默认收起。候选等待状态、完整计划入口及分区折叠正常。右栏宽度与滚动宽度同为 317,13 个候选行均为 295,无横向溢出;浏览器错误数为零。未点击采纳、驳回或任何交易动作。
开发机截图:/private/tmp/pms-trader-overview-refined-20261016.jpg、/private/tmp/pms-trader-candidates-refined-20261016.jpg。浏览器已恢复提议与方案展开。回退采用对应静态提交的反向提交后拉取,保留计划和账本。自然新评析、正常重核及新成交防双记的后续技术验收仍未被本次页面检查替代;既有心跳继续,不增加五日观察。
# 155 模拟 PMS 机 · ~/project/tradingSystem;预期为本节最终页面 SHA256
cd ~/project/tradingSystem
sha256sum app/web/static/index.html
页面验证:打开交易员界面,瑞芯微提议可见仓位差异,点数量说明可见最低一手原因。点击待确认提议标题应收起卡片;候选区直接显示等待条件。只查看,不采纳或驳回。
10-16 10:40 自然事件发现与修复预判
10:28 只读核验:15 项参数与 09:21 基线相同,三票数量、成本与毛盈亏不变,对账 diffs=[]、severity=OK,QMT ONLINE。审计仍为 122 行加 1 条汇总,七条历史暂停指令仍为 CANCELLED。当前完整计划仍为 6abfc0e8,晨版哈希保持。consumed 64、65、66 及 rechecked 67 的顺序与消费指纹通过,不能将浏览器或 received 记录冒充消费。尚无开盘后的自然新评析,十二分钟研究全链路仍未判收。
正常用户操作触发科士达 PRP_20261016_002518SZ_OPEN 两次重核。10:02:49 与 10:04:24 均被要求再次确认,提议仍 WAIT_USER,未生成对应指令。两个仓位依据指纹不同,代码发现实时估算在途金额误入指纹。首次可能包含新命令承诺变化,不能把两次一概认定为误报。新增回归并修复纯报价引起的重复确认,细节见同名规格最新节。未人工采纳提议或生成交易。
只读证据在 155 ~/pms_logs/:consumption-20261016-1025.json、runtime-and-ledger-20261016-1028.json、natural-events-20261016-1030.json。桥证据在 ~/akg_bridge_logs/revision-evidence-20261016-1025.json。修复与上线结果待追加。
10-16 10:50 重复确认修复部署与自然成交判收
改动及本地、镜像验证
PMS 功能提交 15072f7 已提交推送,并在 155 git pull 生效。在途承诺增加稳定身份、数量及成交进度,仅用于判断重核依据。实时估算金额仍按原规则计算。实际数量、承诺、资金与持仓变化继续重核;旧输入缺字段保守比较,旧提议格式升级可能需重核一次。没有修改交易员页面、参数、候选排序、额度与执行终检。桥台账 069 记录本次修复。
批次 38 从 15 例增至 18 例。新增回归先复现,再验证纯报价不重算、不调用研判,真实承诺及数量变化仍识别。全部 44 批本地隔离禁网与候选镜像 --network none 回归通过,含三项页面守卫。
155 部署与真机读回
北京时间 10:44:28 四容器统一重建。候选镜像标签 pms:recheck-15072f7,镜像 SHA256 7003b81c79000cb61633d94a6529253a412de9c2cbc5522e296aea71a0e2f337。候选镜像 Python 指纹 cf0a57a03a76。关键源码两处本地与运行容器 SHA 逐字相同。仅操作 155,188 未动。
部署前文件 recheck-before-deploy-20261016.json 的 SHA256 为 5a41a2bbe7b943b5166ee7b6b5812803967be9b90fec0c65ab5cc881588f2aa4。10:44:57 读回 15 项参数、三票数量、成本、毛盈亏均与写前一致。QMT ONLINE,resync_flag=0,last_error 为空,last_seq=1243091。10:45 健康接口 status=ok、db_ok=true、trade_day=true、calendar_degraded=false,容器 healthy。对账 diffs=[]、errors=[]、severity=OK。两处事实源覆盖差异仍独立保留,ws_first 未变。
七条历史暂停指令仍为 CANCELLED。24 条修复指令的数量、执行进度、子单记录与修复金额保持。两条今日命令指令仍未成交,只有正常择时判断时间、价格及等待原因更新,不能声称整个 progress 原字节不变。修复审计仍 122 行加 1 条汇总。科士达提议与两次确认记录保持,未新建相应指令。修复后尚无自然确认,不能声称线上确认闭环已通过。
自然成交防双记
昨日修复后深科技 14 笔自然卖出,共 1,000 股、28,270.78 元。14 个 trade_no 唯一且均已处理。五个子单的汇总完成镜像存在;父指令 exec_qty=1,000,持仓从 1,000 归零,未再次扣减。两批核销分别 400、600 股,毛盈亏 -3,237.32、-4,673.91 元。按既有逐笔入账舍入到分独立重算完全一致。与总金额一次性计算相差一分钱,原因已记录,不擅改会计口径。其他旧批次逐字段未变。
本次验证的是自然成交防双记。该票原批次为历史 RECON 成本,不宣称全部早期历史已恢复;手续费、峰值、删除批次与历史净值边界继续有效。详见 tradingSystem/docs/PMS三项对账差异排查_2026-10-15.md 最新节。没有为验收回放、生成评析、采纳提议或制造交易。
调度与仍待自然事件的项目
桥 10:45:12 自动检查 error=null、pending_codes=[]。10:46 仍为 11 个完整版本、24 份自然评析,均发生在盘前;晨版哈希 70826ed236b30c1120a1f5ab99fb575e0b46a7acf31051dc117cce6d68fe1c45 保持。最新完整版本仍为 6abfc0e8。consumed 64、65、66 和 rechecked 67 的消费指纹、名册顺序与名次通过。65 是命令消费;不能将其与自主扫描混称。
继续等待开盘后自然评析的生成、发布、消费三时刻,以及修复后的自然提议确认。安排原 automation-2 于北京时间 11:15 接续,不新建业务调度,也不增加五日观察。XXL 137 与 PMS_PLAN_VERSION_RECHECK=True 保持。页面 10:20 的精简成果保持,后续不得把技术指纹重新堆回交易员操作卡。
证据与回退
155 ~/pms_logs/:recheck-build-20261016.log、recheck-tests-20261016.log、recheck-deploy-20261016.log、recheck-before-deploy-20261016.json、recheck-after-deploy-20261016.json、natural-events-after-recheck-20261016.json、natural-fills-20261016-1035.json、consumption-20261016-1045.json。源码归档 pms-recheck-candidate-20261016.tar;独立构建目录 recheck-build-15072f7。桥证据 ~/akg_bridge_logs/revision-evidence-20261016-1045.json。
回退镜像已保留为 pms:rollback-before-recheck-20261016,旧镜像为 061c7c1218c5e0e62838ace6804aad785517337a511aae12e2a9f792d38aaef5。155 存在 /app 绑定挂载,不能只改镜像标签回退;须先在开发机做匹配代码的反向提交,服务器 git pull 后再重建四容器。计划、提议、审计和历史账本保留。
# 155 模拟 PMS 机 · ~/project/tradingSystem;预期 ALL SUITES PASS,不访问网络与生产配置
cd ~/project/tradingSystem
docker run --rm --network none pms:recheck-15072f7 python scripts/run_tests.py
# 155 模拟 PMS 机 · ~/project/tradingSystem;预期 status=ok、db_ok=true
cd ~/project/tradingSystem
docker exec pms-web python -c 'import urllib.request; print(urllib.request.urlopen("http://127.0.0.1:38100/health", timeout=5).read().decode())'
10-16 11:25 自然事件核验与网格数量缺陷
桥 11:15:11 正常检查,无来源错误或待修订股票。仍为 11 个完整版本和 24 份盘前评析,晨版、归档、父子链与指纹保持。无开盘后新评析,无新的用户确认,科士达提议仍 WAIT_USER、600 股。11:15:03 正常消费新增 consumed 68,持仓上下文变化,24 只候选的顺序和消费指纹正确。
11:19 首次只读对账出现威胜信息差异。11:19:31 新持仓快照到达后,11:20:04 只读对账 diffs=[]、severity=OK,QMT ONLINE。始终 apply_fix=False,未因短暂快照差异改账。两处既有事实源覆盖差异保持。
逐笔查出需修复的实际交易缺陷。STR_20261015_688100SH_28400 的原档位为 1,000 股,per_lot=700。11:05 首笔卖 700 股后,原恢复逻辑已将余额记为 300;11:13 同档再次卖 700,最终连同 400 股底仓清空。七笔成交号唯一,两条父指令各执行 700。11:16:01 原清场流程已取消该策略。不是重写账本即可恢复的情况,必须保留真实卖出,不补造持仓或反向买入。
代码 _eval_grid 缺少档位余额和实际 ADD 持仓封顶。先写回归再修复,沿用原交易触发和参数。桥台账 070 记录。证据在 155 ~/pms_logs/natural-events-20261016-1120.json、consumption-20261016-1120.json、runtime-and-ledger-20261016-1120-diagnostic.json、natural-fills-688100-20261016-1125.json、grid-natural-20261016-1125.json;桥证据为 ~/akg_bridge_logs/revision-evidence-20261016-1120.json。部署与完整成本判收待追加。
10-16 11:35 网格越界修复部署与完整账务核验
修复与验证
功能提交 bafecb7 已在本地提交推送,并在 155 拉取。只改 _eval_grid 的卖出数量上限;同时限制于配置档量、当前档位余额、实际 ADD 与可卖量。原穿越信号、价格、档距、资金上限、最小申报规则及买入逻辑保持。原状态恢复逻辑未改。已有的 15072f7 提议稳定依据修复仍包含在镜像中。
新增四组反例在原实现均失败,修复后批次 17 共 45 例全部通过。完整 44 批本地配置隔离禁网与候选镜像 --network none 回归通过,含三项页面守卫。生产只确认代码生效及状态保持,未制造新的网格触发用于验收。
实际成交与账务边界
本轮 7 笔威胜信息成交号唯一,合计 1,400 股、32,933.49 元。两条父指令各实际执行 700,均 CONFIRMED。11:08:01、11:14:00 日志明确汇总镜像被跳过,汇总 actions=0。按原批次和核销顺序独立逐笔重算,全部剩余数量、已核销量及毛盈亏与现账一致。
原 1,000 股网格 ADD 与 400 股 BASE 均已卖出。新增毛盈亏 -268.87 元,原账期毛盈亏从 16.86 变为 -252.01 元。400 股底仓部分已实现毛亏 -282.93 元,不推断未卖出时的后续收益。费用未提供。持仓为 0,成本价为空;这不是应恢复旧 1,400 股的账本差异。真实成交不删除、不回填、不反向买入。策略已于 11:16:01 被原清场流程取消,保持取消。此前深科技 14 笔防双记证据继续有效,两类自然事件均据实保留。
原三票历史修复的另一两票保持:002050 数量 700、均成本 44.109、已实现毛盈亏 -6,762.70;002979 数量 1,900、均成本 55.060、已实现毛盈亏 -1,684.25。七条历史暂停指令仍 CANCELLED,原 24 条修复指令的数量、执行进度、子单和修复金额保持,审计仍 122+1。历史超额成交的其他原因未全部查清,不把本次局部修复扩称全部执行异常已修复。
155 部署与读回
11:31:02 四容器统一重建为 sha256:a33ecb004e285ed7991b1492477e222703d1ec89892e36ee7cb51ee2d555b3c8。标签 pms:grid-quantity-bafecb7,Python 指纹 12f782622c4d。strategy_runner.py 本地与运行容器 SHA256 同为 14ce9d46a63b781372c07b18dd26494669e095ed6793322a03e8e44d71fbc188。页面 SHA256 仍为 8cd75f4cafd3e23f90c036ac2accd5131568ad2c26bc7bc844f5d45cd8808b31,没有把技术字段重新加回操作卡。188 未操作。
11:31:29 只读读回与 11:28:38 写前基线比较:15 项有效参数和三票数量、成本、毛盈亏一致;科士达提议、自然确认记录、逐笔成交、修复审计和已取消网格记录保持。QMT ONLINE、resync_flag=0、last_error 空、last_seq=1243709。对账 diffs=[]、errors=[]、severity=OK。11:31:34 健康 status=ok、db_ok=true、trade_day=true、calendar_degraded=false,容器 healthy。两处事实源覆盖差异继续单列,ws_first 未变。
版本消费与下次接续
桥 11:30:11 自动检查 error=null、pending_codes=[],仍 11 个完整版本、24 份盘前评析。当前区制版 6abfc0e8、晨版与归档哈希保持,父子链和输入指纹正确。11:15:03 新增 consumed 68,持仓上下文减少威胜信息,当前四只;候选仍 24 只,名次、顺序和消费指纹正确。无需计划变化也会因消费上下文变化追加留痕。没有开盘后新评析,没有修复后的用户确认,科士达仍 WAIT_USER、600 股。
原 automation-2 已改到北京时间 13:15。下午接续新评析生成、完整发布、实际消费的十二分钟目标,以及自然用户确认。已部署并不等于两项自然事件已判收。XXL 137 和 PMS_PLAN_VERSION_RECHECK=True 保持,不增加额外五日观察,不人为生成事件。178 基座 11:32 只读核验所有服务 running,本轮仅同步文档。
证据与回退
155 ~/pms_logs/:grid-quantity-build-20261016.log、grid-quantity-tests-20261016.log、grid-quantity-deploy-20261016.log;grid-quantity-before-deploy-20261016.json、grid-quantity-after-deploy-20261016.json;grid-quantity-events-before-20261016.json、grid-quantity-events-after-20261016.json、grid-quantity-strategy-after-20261016.json。写前参数与账本文件 SHA256 为 51d4eb0f8bae6be665060c5edd89c7b334db1cf22a95f2267b2ce026e54784a6。
故障原始日志 grid-incident-worker-20261016.log,SHA256 9fd10e419b46de2854a6e8e6793ec91de7218e531892d12ce0a97b1b9bfabd4c。成交与策略证据、逐笔分配结果及不可还原边界详见 PMS三项对账差异排查_2026-10-15.md 最新节。桥最终证据 ~/akg_bridge_logs/revision-evidence-20261016-1132.json,消费证据 ~/pms_logs/consumption-20261016-1132.json。
回退标签 pms:rollback-before-grid-quantity-20261016 指向旧镜像 7003b81c79000cb61633d94a6529253a412de9c2cbc5522e296aea71a0e2f337。155 绑定挂载 /app,回退仍需开发机反向提交、服务器 git pull,再重建四容器。保留真实成交、取消状态和所有审计记录,不能以回退为由恢复原持仓。
# 155 模拟 PMS 机 · ~/project/tradingSystem;预期 ALL PASS (45 cases),不联网或读取生产配置
cd ~/project/tradingSystem
docker run --rm --network none pms:grid-quantity-bafecb7 python scripts/unit_test_guard.py scripts/test_batch17_units.py
# 155 模拟 PMS 机 · ~/project/tradingSystem;预期 status=ok、db_ok=true
cd ~/project/tradingSystem
docker exec pms-web python -c 'import urllib.request; print(urllib.request.urlopen("http://127.0.0.1:38100/health", timeout=5).read().decode())'
10-16 13:25 自然评析传播核验
新增证据与时延边界
本轮只读核验正常调度,没有生成评析、裁决提议或制造交易。13:17 取得的归档样本有 15 个完整版本、34 次自然评析变化。相比 11:35 新增四个版本、十次评析变化。十份固定报告对象在 178 逐份读回,内容指纹全部匹配。晨版及此前 11 个完整归档的字节哈希保持。
| 报告产生时间(北京时间) | 完整版本发布时间 | 首次实际消费 | 生成至消费耗时 | 判收 |
|---|---|---|---|---|
| 12:05:01—12:05:13,六份 | 12:05:15、12:10:14 | 13:00:03,consumed 71 | 54 分 50 秒—55 分 2 秒 | 十二分钟目标未通过。午休守卫阻止执行扫描,13:00 恢复后消费。 |
| 13:09:07、13:09:14,两份 | 13:10:16,59cc26a9 | 13:11:09,consumed 73 | 2 分 1 秒、1 分 54 秒 | 本组连续交易时段样本通过。 |
| 13:12:49、13:12:50,两份 | 13:15:16,c0b4d35c | 13:17:02,consumed 75 | 4 分 12 秒、4 分 12 秒 | 本组连续交易时段样本通过。 |
四份连续交易时段评析已具备生成、完整发布与实际消费的全链路证据。不能将午休六份按“收到”时间替代实际消费,也不能将该四份样本扩称全天十二分钟目标通过。保留原执行时段守卫,没有为了达标安排午休交易或伪造消费。后续仍需明确处理非交易时段的时延边界;本条记录事实,不自动修改原验收目标。
consumed 71、73、75 均来自正常自主扫描,24 只候选、selection_rank 1—24。名册顺序与消费指纹全部匹配,有效参数和持仓上下文正确。69、70、72、74 是收到记录,不计为实际消费。11:35 后没有新增成交或指令;今日两条用户命令指令仍 PROPOSED、exec_qty=0,两条上午网格卖出仍各 CONFIRMED、exec_qty=700。
版本、来源和运行核验
13:20 对 c0b4d35c 的最新、日期、固定版本查询一致。主榜 556、观察 598,全量名次、四类裁剪出口研究字段、截止时间与 32 路冻结来源通过。输入与配置指纹正确,其余来源沿用冻结内容。正常查询未重装配。部署中的 plan-refresh 仅重新读取评析索引,装配重放冻结来源,没有模型调用路径。基座自然生成评析与桥修订分开计量,不将两者混称零模型调用。
复用的晨版核验脚本保留了凌晨故障前的旧格式哈希断言,所以输出 ok=false。唯一失败项 old_legacy_hash_unchanged 对应已知缺失原件:当前 10-14 日期入口仍为 8e9d3996ef49ee9352d828177ded5142f35ff5258099b02f14735d6bf5e9ef07,与早间故障记录一致,没有再次变化。不能把该项改写为历史已恢复。其余 18 项检查通过,今日晨版与所有旧完整归档保持不变。
桥日志 11:35—13:15 的 21 次五分钟触发均返回 200,无 ERROR 或 Traceback;PMS 13:00—13:18 的 19 次正常执行扫描均成功。归档样本读取与调度并行,13:20:19 health 已指向随后发布的 b4a40be9,error=null、pending_codes=[]。该后续版本不纳入上表四份样本,不把采样先后差异当成发布不一致。下轮继续查其实际消费。
13:15:11,15 项参数、三票数量、成本与毛盈亏相对 11:31 基线逐项一致。QMT ONLINE、resync_flag=0、last_error 空、last_seq=1244993;只读对账 diffs=[]、errors=[]、severity=OK、streak=0。两处事实源覆盖差异继续单列,ws_first 未变。七条历史暂停指令仍 CANCELLED,24 条历史修复的数量、成交进度、子单与修复金额保持,审计仍 122+1。尚在等待的旧三花 DCA 只有正常择时说明更新,不是执行进度改变。威胜信息真实清仓事实与 -252.01 元已实现毛盈亏保持。
13:18:19 健康 status=ok、db_ok=true、trade_day=true、calendar_degraded=false。PMS 四容器仍是 11:31 的 a33ecb0 镜像,桥仍是 09:12 的 05aea00 镜像,未重启。178 十项服务均 running。本轮不改业务代码、配置或页面,188 未操作。
未判收项与接续
科士达提议仍 WAIT_USER、600 股。用户确认记录仍只有 10:02:49 和 10:04:24;修复后没有自然确认,不能替用户操作。新版重核的自然确认效果继续未判收。历史费用、峰值、旧批次、旧净值和其他超目标成交原因的边界不变。
原 automation-2 下一次调整为北京时间 14:15。接续自然确认、后续完整版本实际消费及非交易时段时延边界。XXL 137 与 PMS_PLAN_VERSION_RECHECK=True 保持。不增加五日观察,不因没有事件宣告完成。
证据在 155 ~/pms_logs/:runtime-and-ledger-20261016-1315.json、natural-events-20261016-1315.json、consumption-20261016-1315.json、consumption-20261016-1325.json、natural-review-latency-20261016-1325.json、consumption-runtime-20261016-1320.log。桥证据在 ~/akg_bridge_logs/:revision-evidence-20261016-1315.json、revision-evidence-20261016-1325.json、revision-contract-20261016-1325.json。固定报告验证在 178 ~/akg_logs/review-objects-20261016-1325.json。文件后缀是本轮标签,实际采集时刻以文件内 at 为准。桥访问日志含鉴权查询参数,展示和交接只用脱敏结果,不粘贴原文。
# 155 模拟 PMS 机 · ~/project/tradingSystem;只读,预期消费指纹与名册顺序断言通过
cd ~/project/tradingSystem
docker exec -e PYTHONPATH=/app -i pms-web python < ~/pms_logs/verify_consumption_20261016.py