56 lines
3.6 KiB
Markdown
56 lines
3.6 KiB
Markdown
# 买卖方向冲突修复开发规格
|
||
|
||
2026-10-19,北京时间。用户已授权修复并检查其他流程。
|
||
|
||
## 目标与已核实反例
|
||
|
||
科士达旧建仓目标600股,累计买入400股。今天09:51风控清仓400股,卖出200股。
|
||
旧建仓仍活跃,剩余200股可能隔日再买。实际子委托均已成交,页面却写已挂单。
|
||
原始卖出理由在audit_reason及component_scores.reason,PMS解析遗漏。
|
||
证据保存在155 ~/pms_logs/kstar-conflict-20261019-1402.json及kstar-signal-20261019.json。
|
||
|
||
## 实现与边界
|
||
|
||
1. 停止依据追加到动作账本,不依赖可被并发覆盖的进度JSON。下发回写不得复活终态指令。
|
||
全部完整清仓指令在执行前统一停买入侧。复用既有策略、提议、指令撤销路径。
|
||
覆盖信号自动清仓、命令清仓、人工采纳、技术面离场及跟踪止盈。
|
||
每跳重试未完成收尾,也覆盖上线前遗留的清仓指令。不修改已成交数量、成本或盈亏。
|
||
2. 同票有活跃EXIT或TRIM时,买入发出前再检查。查询失败停止买入。
|
||
普通减仓只暂缓买入,不永久撤销建仓或策略。做T自身T0_ROUND不当清仓。
|
||
完整清仓期间,做T买回也不能抵消清仓;没有清仓时原有配对流程不变。
|
||
3. 待确认卖出仅阻止新的自主增持提议,不自动撤销已有买单。
|
||
用户采纳买入前核对已生效的卖出指令,冲突时保留提议和说明,不写已采纳。
|
||
4. 出口队列先处理撤单,认领时排除待撤单。发送前重查买入冲突及父指令状态。
|
||
尚未发出且已失效的买单本地作废,已经发出的买单走撤单回执。
|
||
撤单受理不冒充成交撤回,迟到成交继续按已有逐笔路径记账。
|
||
5. 页面读取实际子委托状态。没有活跃子单时显示等待下一批、等待可卖或执行等待。
|
||
技术单号只在详情出现。卖出理由采用原文,不新调用模型。
|
||
|
||
## 预判与验证
|
||
|
||
先建立科士达跨日反例,再验证各入口共用的执行终检。
|
||
覆盖部分成交、T+1、普通减仓、T0配对、撤单失败重试、排队后清仓、查询失败、重复执行。
|
||
页面验证已发出且终态的子单不能显示为挂单,取数失败明确为状态待核实。
|
||
全部测试使用配置隔离与禁网入口。运行三页面守卫。
|
||
155部署前保存参数、账务、指令与镜像证据。只修模拟实例,188不动。
|
||
上线后先查自然调度清理旧建仓,保留真实400股买入与200股卖出。
|
||
不采纳提议、不制造成交,不改交易时段或业务阈值。
|
||
|
||
## 回退
|
||
|
||
保留成交与撤销审计。155挂载/app,须反向提交、git pull后重建四容器。
|
||
回退不恢复已经撤销的买入指令。撤销前保存旧镜像与证据。
|
||
|
||
## 本地验证记录
|
||
|
||
22项专项回归通过,覆盖五类清仓入口共用执行器、撤单失败与旧进度覆盖、T0不误挡、人工确认被拦时保持待确认。
|
||
45批配置隔离、禁止联网的回归通过,包含三页面守卫。生产状态另记部署判收。
|
||
原临时虚拟环境被系统清理,本轮另建 /private/tmp/pms-conflict-20261019-venv。
|
||
|
||
## 人工清仓补查
|
||
|
||
人工采纳EXIT原来按当日可卖量裁剪,T+1可卖量为零时会返回已采纳却不留清仓指令。
|
||
改为按已确认数量与当前总持仓取较小值,执行器继续按当日可卖量分批,不扩大用户授权数量。
|
||
持仓已经归零时不再生成卖单,但仍停止未完成的旧买入。普通减仓保持按可卖量处理。
|
||
增加两项回归,专项共24例。此项为代码发现的边界,尚无自然人工确认事件判收。
|