5.2 KiB
提议采纳失败排查与修复
记录时间:2026-10-16 14:05,北京时间。仅操作155模拟仓,188未操作。
事实与原因
科士达13:27因依据变化完成重新评估。用户13:39:02再次确认时依据相同,version_check=passed,生成唯一指令 INS_20261016_002518SZ_OPEN_001,600股。操作日志276和动作账本6796对应成功。13:59仍PROPOSED、执行0股。本次自然操作补齐“依据未变直接通过”的验收,未由开发助手采纳。
瑞芯微13:40:00被重新研判拒绝。共享研判审计的created_at原值为05:40:00 UTC,与PMS北京时间响应吻合。结论PMS_REJECT;只读缓存确认把握度72。原理由为“实时主力净占比-4.04%且历史多次净流出,250日高位赔率-0.40,5日看空,开新仓证据反对。”这是当时研判系统的判断,不是本次开发重新作出的投资建议。
旧代码在重核拒绝时只返回“新版重新评估未通过”,真实原因仅放在details,页面不展示。旧提议也没有保存本次失败,继续显示上午“需人工确认”的意见。由13:39:10重新取计划到13:40响应约50秒。本次请求是明确的业务拒绝,未见请求超时。另发现潜在等待缺陷:浏览器60秒超时早于后端研判90秒上限。
修复内容与边界
功能提交4f6b192。失败原因按原返回内容提取,区分规则、研判、策略和候选不足。最近失败保存在现有提议JSON,以原内容和WAIT_USER状态做条件更新。原数量、原批准依据和提议状态保持。失败不生成指令,不写影响自动判断的拒绝账本。具体错误由原操作日志记录。已失败提议须重新核验,不能因组合恰好回到旧值而复用旧批准。
确认框保留错误信息,卡片提供再次查看入口。新版建议在同一框显示数量及理由,清空旧选择后重新确认。等待期间防止重复点击,并说明正在核验。浏览器等待为有效研判超时加60秒,最低120秒;当前为150秒。未收到结果时不自动重发,也不声称后端已经失败。没有改动准入、仓位、交易时段、研判结论或执行规则。
13:40旧失败没有自动补写回原提议。其原因已从审计找回并记在本报告。新失败记录从上线后生效,不以新检查冒充旧检查。
测试、部署与实测
本地24个专项、44批隔离禁网回归通过,含三页面守卫。前端Node替身覆盖错误保留、更新后确认、未知结果、重复点击和异常释放。155候选镜像在--network none下运行全部44批测试通过。
13:59:00四容器统一重建为sha256:6ee444e1c734dc454a8564c9e6ae8f05c5e0c4b25ba9282049f61234a1db10af,标签pms:proposal-feedback-4f6b192。镜像与运行容器Python指纹均为63b3e303084e。四个变更源码的SHA与本地一致。页面SHA为4ba2ed96f0b207ac2a7b6b2bfb952d956420f85d05e61b28ef85ec257e1c8543。开发机Python总指纹包含两个既有未跟踪探针,不能与纯归档镜像直接混比。
13:59:33前后15项参数、三票数量成本毛盈亏、24条历史指令进度、当日指令、提议及成交记录一致。修复审计仍122+1。对账diffs=[]、errors=[]、severity=OK、streak=0。QMT ONLINE、resync_flag=0、last_error空,last_seq=1245545。健康正常、db_ok=true、交易日历未降级。原两处事实源覆盖差异仍单列,不改ws_first。
浏览器独立标签核验页面正常、既有风格保持、错误日志为空。用户原标签及未提交确认框保留。自动审批拒绝打开“采纳”确认框,理由是会话不允许代点采纳。因此未在真实页面提交或代测采纳;确认框交互由离线替身验证。上线后自然失败提示的完整浏览器效果仍待正常用户事件,不能用只读页面检查替代。原心跳14:30接续,不为验收制造交易。
可复核命令
# 开发机 · tradingSystem 根目录;预期24 tests、OK
/private/tmp/pms-codex-20261012-venv/bin/python scripts/unit_test_guard.py scripts/test_batch38_units.py
node scripts/test_proposal_dialog.cjs
# 155模拟PMS机 · ~/project/tradingSystem;只读,核对自然用户事件
cd ~/project/tradingSystem
docker exec -e PYTHONPATH=/app -i pms-web python < ~/pms_logs/verify_proposal_rejection_20261016.py
证据与回退
证据在155 ~/pms_logs/。proposal-feedback-build-20261016.log、proposal-feedback-tests-20261016.log记录候选镜像验证;proposal-feedback-deploy-20261016.log记录重建。proposal-feedback-before-deploy-20261016.json和after-deploy文件为运行参数账本;events-before和events-after为提议、指令、成交与历史修复审计;before-20261016.sha256保存写前摘要;comparison文件保存逐项对照。proposal-web-20261016-1345.log和proposal-rejection-audit-20261016.json为本次问题证据。日志展示先脱敏,不打印鉴权参数。
回退镜像pms:rollback-before-proposal-feedback-20261016,指向a33ecb004e285ed7991b1492477e222703d1ec89892e36ee7cb51ee2d555b3c8。155挂载/app,回退须开发机反向提交后服务器git pull,再以匹配镜像重建四容器;不能只换镜像。保留新增检查记录、真实成交和七条历史取消状态,不以回退为由恢复续单。