Commit Graph

100 Commits

Author SHA1 Message Date
zlt 6f416ead6b 解锁重问:判定、取数、接线、参数、单测(台账 055 第二件之 PMS 侧)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 15:13:09 +08:00
zlt e83422e7ab 解锁重问的判定逻辑与取数:纯逻辑模块 + 当日成交量与五日均量
量比的折算分母是**分钟线实际覆盖的时段**,不是从开盘算的已过时段。实测 09-09 15:00
四方股份的分钟线首根是 10:11 —— db13 那张 key 是滚动窗口,不保证从开盘存起;按当前
时刻算分母会把没存进来的那段也算上,量比被系统性压低,量能确认这条永远过不了。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 15:05:20 +08:00
zlt 5cdb3b0ee4 资金异动方向两套写法都认 2026-09-09 14:59:11 +08:00
zlt 3c43f7814f 资金异动方向翻成中文:时间线五路混排,方向要同一套说法 2026-09-09 14:58:01 +08:00
zlt 0c8d2a7d6c 点股票看它今天的全部信号:按代码回扫接口、抽屉、遮罩空白四处修复(台账 055 第一件)
信号栏一行等于上游流里的一条原始消息,一只活跃票一天十来条散在好几个分组里。
现在点一下票名就能把它今天的全部信号按时间倒序摊开。

后端:
- upstream_signals.by_code() 按代码回扫五个上游源。快照口径注定不全(告警每类只留
  最新 20 条),到下午一只活跃票早盘的信号早被挤掉,所以这条路径分页倒序回扫(每页
  500 条,上限 PMS_UPSTREAM_BYCODE_SCAN 默认 5000):两条按日期分键的流整键就是今天,
  两条不分键的流扫到今天零点为止且不算截断。同源同分钟同值合并计数,跨源永不合并。
  按票缓存八秒防连点,单源失败不拖垮整体且逐源标明。实况分没有时间,只进快照段不
  编时间戳。只读纪律与快照相同:一律 XREVRANGE/ZREVRANGE,不建消费组、不 ACK、不写。
- GET /api/upstream/signals/{ts_code},只能点击触发,绝不进轮询。

前端:
- 抽屉两段取数:先用手上的快照渲染,第一帧就有内容;同时发回扫请求,回来替换成完整
  版并把口径说明从「可能不全」翻成「已回扫到今天开盘」。补全失败保留快照挂黄条带重试。
- 三处入口:信号栏每行票名(14 处,@click.stop 免得顺手翻开风控卖出的理由条)、持仓表
  「今天的信号」列(连「今天没有」也可点,速览口径下的「没有」可能是假的)、消息栏两处。
- 遮罩空白四处修复:整体失败不再抹平成空数据(原来失败时页面显示「今天没有信号」,
  在风控面板上这是最危险的一种谎);告警派生的三个分组补失败角标、各路空文案给失败
  态让位;失败角标的样式选择器漏了信号栏;错误横幅在遮罩之上再浮一份;抽屉层级写死
  3000 压住浮层 2010 与遮罩 2005,打开前先收浮层。选股计划抽屉补加载提示。

测试:新增 scripts/test_batch24_units.py(9 例),已在 run_tests.py 的清单与例数表、
test_wiring.py 的路由清单三处登记。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 14:53:29 +08:00
zlt 0724509624 公司质地与建议方案接入:公司深度两键透传、整句送研判可关、建议方案矩阵与研判补档、持仓页一行、三个运行参数、单测(台账 053)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-09 12:15:03 +08:00
zlt 499b1342e4 行业催化只进提议卡与账本,不送研判;单测(台账 051)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 15:21:21 +08:00
zlt 7dcf039cf3 相关快讯透传:解析层、硬数字、送研判白名单、提议卡一行、单测(台账 050)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 14:07:19 +08:00
zlt 0fa4a5a2ff 量价研判链:研判应答归一带出两个期限的头进提议硬数字与提议卡;驳回行记把握度;接口契约 V1.2(第二十二批加一例,全套 680) 2026-09-08 12:29:39 +08:00
zlt 7d670b364c 量价研判链 3.5:催化事件与定价状态随候选进硬数字与提议卡,两句整句送研判;提议卡补显示安全边际整句(第二十二批加一例,全套 679) 2026-09-08 11:44:33 +08:00
zlt 48a562f170 参考目标价:状态应答里的估值子字典归一,持仓页只显示中性情景不触发(第二十二批加一例,全套 678) 2026-09-07 16:34:37 +08:00
zlt fbad890b7d 第四件 PMS 侧:安全边际整句随候选透传到硬数字与提议卡,不送研判(第二十二批加一例,全套 677) 2026-09-07 15:47:27 +08:00
zlt 99ea218f2f 第三件 PMS 侧:按逻辑状态分流,入场论点随持仓走
新模块 logic_state_service:早上拉完计划后对在持票查一次逻辑状态(桥的 /logic_state),
写进运行参数 PMS_LOGIC_STATE_MAP,取不到留空绝不折成存疑;按结果暂停或恢复策略买入腿
(来源 logic,不动风控与定性停的);把当日态挂到持仓行;持仓视图两栏(当初为什么买 /
现在证据还在不在),三种情形都说得出话。
plan_feed:解析层收 logic_state(出处最多三条),候选 items 带它;加按代码查询与应答解析。
action_engine:硬数字带 logic_state(研判白名单不收);判决候选而逻辑存疑的新建仓强制交人;
持仓存疑停增持侧;新求值器 eval_weak_research(默认关,开了必交人,按可卖量夹紧)排在
保垫减仓前;同轮减持优先级改为到价清仓 > 研究走弱 > 保垫减仓。
proposal_service:扫描参数加三个旋钮,扫描前挂逻辑状态。scheduler.plan_pull 顺带取回。
param_store:四个运行参数(分流开关默认开、减持提议默认关、比例三分之一、映射只读)。
pms_repo.ledger_by_ref 与 FakeRepo 同签名;api_positions 加两块;页面加两列。
测试:新建 test_batch22_units.py 十四例并登记;第十二批求值器名单钉子同步。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 14:37:35 +08:00
zlt 27d0862011 第二件 PMS 侧:新建仓的低把握驳回按证据不足交人
择时决策系统对新建仓的口径此前是"不确定就拒",把"我不知道"折成了"不该做",弱市里连续
29 条新建仓全被拒、零提议。择时层的提示词已改成"证据不足以判断回不可用",这里是第二道
保险:模型未必每次守得住,但它给的把握度是现成读数,驳回且把握度低于阈值的按不可用处理
——进人的待确认队列,不记驳回、不杀提议。

只对新建仓;加仓类的驳回口径不动。阈值 PMS_JUDGE_REJECT_CONF_MIN 默认 60,一次定死,
不按复盘读数回调;没带把握度的驳回不猜,照旧驳回。参数已进参数表说明。

测试第二十批加一例(四种情形:低把握入队、高把握照旧驳回、无把握照旧驳回、阈值可调),
例数 660 到 661。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:56:08 +08:00
zlt db2bca4d90 第零件甲组:PMS 目标价那条路的四个缺陷,加裁决理由服务端强制
独立审查(09-07)报的两条高严重度与两条中严重度,都在目标价这条路上,都违背 09-03
写下的「目标价必交人、系统不自动卖」。

一,跨轮减持抢在人前面卖。同轮只发一条减持只管一次扫描;下一分钟到价清仓已成在途、
按(代码,动作)被跳过,保垫减仓单独产出、不需确认、卖出方向又不走强制入队,于是
自动卖掉三分之一,人随后采纳的清仓单永远等不到可卖量。修法两处互为保险:动作引擎里
同票只要有任何一条减持在跳过集合里,本轮其余减持一律让路;提议服务的在途集合对减持侧
按代码去重,一条在途两种减持一起记。

二,到价提议挂着时高置信止损被吞。在途检查把等人拍板的到价清仓算作在途,止损整条不落。
到价提议的来源写在硬数字里,按来源区分:等人拍板的止盈不挡止损。止损落单后把还挂着的
到价提议作废并在账本记一行,免得人再点采纳对一只已清掉的票再发清仓。

三,到价当天有买入成交时清仓被整条拒。原先按总持仓报数,规则闸一句「卖出 > T+1 可卖」
拒掉再被当日去重挡住,人当天看不到。改按可卖量报数,与执行器口径对齐;可卖为零不产出。
采纳路径同样按拍板那一刻的可卖量重算。

四,挂了交易方案的票目标价永不触发。原先整只跳过,策略层又没有任何地方读目标价。
改成策略票仍评目标价,其余四类不评。目标价是用户的命令,优先级高于自动挂上的方案。

另收第五件里的一小项:裁决理由改为服务端强制,空理由直接拒绝请求。此前必填只在浏览器
里成立,任何脚本都能写出一条默认文案的裁决记录。

测试:第四批加三例(跨轮让路、策略票评目标价、按可卖量报数),第二十一批加两例
(到价提议不挡止损并被作废、非到价来源的在途仍挡),例数 655 到 660。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:22:05 +08:00
zlt 4077b57e35 PMS 文案第二批:规则闸、仓位约束、资金、计划取数
抽了一个公共的显示层函数 app/core/copy.py,把句首那个大写判据码剥掉再给人看。

这一步是有讲究的。那些判据码是承重的:账本靠它取去重键(同一条被拒指令当日只记一条),
命令进度靠它做原因聚类。2026-07-29 账本被同一条指令按分钟灌满,病根就是去重键失效。
所以码必须留在句首,只能在显示层剥。此前后端两处各写了一份剥前缀的逻辑,现在共用一份。

改写的文案:

规则闸六句。冻结原因原先写「该股处于 COMMAND_HALT, 禁止增持」,既印了枚举值,也没分开
三种来路——你下的命令、你手设的、系统刹车期间,对交易员是三件不同的事。昨夜信号原先写
「决策系统昨夜定性 SELL (形态恶化)」,SELL 是枚举值,而「形态恶化」是给三种信号硬安的
定性,回避未必是形态问题。

仓位约束六句,原先全是「加后总仓 82.3% > 上限 80%」这种电报体。大于号要人翻译,而且
没说清百分比是占什么。行业占比那条还漏了设计要点——两条都超才拦,不写会被当成误拦
来投诉。

资金四句改在源头。这个字段有三个下游都直接显示给人看,改一处三处一起干净。异常原文
只进日志。

计划取数两句会渲染成页面顶部整条红色横幅。原先网络抖一下就顶一条异常原文给基金经理
看。改成说清三件事:现在拿不到什么、多久之后重试有意义、还不行找谁。其中「过 1 分钟
再试」不能省——失败结果会被缓存一分钟,早于这个点重读拿到的还是同一条失败。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 13:27:45 +08:00
zlt d85fe6731b "今天没建仓的"那一栏只写原因,右侧不再打印计数字典
两处都是用户指出来的。

第一处,那一栏原先写「选股系统判为仅展示,不出提议:门槛未过:started」。
「仅展示」「不出提议」是内部说法,started 是门槛在代码里的变量名,绕了两层还是
没说清为什么不买。现在直接用判决依据那一句完整中文,例如「当日涨幅 -3.2%,没到
3% 的启动线」。旧版计划没有这个字段时退回一句大白话,不留空。

第二处,右侧显示过「落选明细 {'held': 0, 'black': 0, ... 'display': 83}」——
把计数字典原样拼进了字符串,键全是英文,值为零的也全列出来,读的人要在十一个
数字里自己找哪个不是零。现在只念不为零的那几项,按筛选实际发生的顺序写成一句话:
「今天考察了 83 只票,一只都没留下:选股系统判定今天不买 83 只。」

测试:改两条钉旧文案的断言,新增一条钉住计数字典不许再原样打印,另在跳过原因那条
用例里加了对代码名与内部说法的逐词检查。例数从 653 到 654。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 10:28:35 +08:00
zlt 68b8046540 仅展示的跳过原因写出这一只自己的判决依据
页面上"今天没建仓的"那一栏,三只票原因完全不同却写成同一句话"选股系统判为
仅展示,不出提议"。09-04 实测的三只:天合光能是差一个当日涨幅(跌 3.21%,
门槛要涨 3%)、蓝黛科技是吸筹只到"潜在吸筹"没过确认线、上海港湾是被择时决策
系统昨夜的 SELL 信号一票否决。前两种明天可能就翻过来,第三种是技术面在走坏,
处置完全不同,而人从页面上看不出来。

判决依据是选股系统判决时当场写下的一句话,09-04 上午已经随计划下发到 PMS。
这次把它接到跳过原因上。改了三处:计划筛选层的仅展示名单从一串代码改成带判决
依据的行;提议服务照新形状读,旧形状兼容着读;动作引擎新增一个纯函数拼这句话,
判决依据缺失时退回原来那句固定文案,不让这一栏空掉。

测试:新增一例钉住"三种来路必须写出三句互不相同的话",另改一条断言跟上新形状。
例数从 652 到 653,测试入口的例数表同改。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 10:10:16 +08:00
zlt fd74dd197f PMS 补收研究理由:判决依据与因果论断到达人眼前
选股系统每行已带判决依据与因果论断,但计划解析只收五个键,研究结论走到 PMS 门口就断了。现在增收这两个键:判决依据是一句话解释,因果论断带出处与披露日、截三条(与上游封顶同数)。两者只进评审账本与提议卡给人看,不参与任何判定;绝不进送研判的键清单,产业逻辑不归择时决策系统判,单测钉住这条边界。提议卡新增一行显示研报说了什么,并标出还有几条。
空列表与缺键分得开:上游说这票没论断是空列表,上游没给这个字段才是 None,与既有五键一个口径。
测试:全套 ALL SUITES PASS,例数 652。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 23:50:44 +08:00
zlt 4589539a0c PMS 页面显示:用户设的止损价与目标价单独成列,参考位列标明来源
问题是系统每天早上重算参考位会盖掉用户设的止损价,而命令状态仍显示生效,页面那一列因此误导人。修法只动显示不动重算:把用户设的两个价作为独立字段从命令表带到页面,两张持仓表各加一列,参考位列的来源改用中文说明而不是内部取值;设价弹框先摆出当前已设的值。字段名有意与动作引擎并到持仓快照上的名字区分,避免页面用的行被误喂进引擎。价格小于等于零当作未设,与规则检查和到价判定同口径。
测试:全套 ALL SUITES PASS,例数 651。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 16:30:49 +08:00
zlt c6034a6220 PMS 两处安全修复:强制交人改为一票否决不再被卖出方向短路;目标价与止损价接通且必定交人
卖出侧:原判定把卖出方向放在或运算左边,强制交人的标记被整个短路。改为强制交人一票否决排在方向与档位之前。真正需要自动卖的两条路(风控高置信止损、用户命令清仓)不经提议分流,不受影响。
目标价:接通而非摘掉入口。到价产出清仓提议但必定交人,文案写明系统不自动卖;拿不到现价时不动。止损价参与规则检查,只告警不拦截。填 0 即取消,已写进命令说明与页面提示。
复核发现并修:同一轮可能同时产出保垫减仓与到价清仓,前者当场执行后者等人拍板,等人采纳时数量已超过实际持仓会被整条驳回。改为同轮只发一条减持,用户设的目标价优先。
测试:全套 ALL SUITES PASS,例数 626 增至 650。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 16:06:27 +08:00
zlt 0610a7e328 PMS 接通选股系统判决:计划解析增读判决五键、按判决分流新建仓、研判键放行与必答题、人工裁决理由必填、信号来源区分、会话密钥补进密钥名单
按判决分流(PMS_PLAN_ROUTE_BY_VERDICT,默认开):候选走自动流程,关注强制人工确认,仅展示不出提议;上游无判决或开关关闭时与旧行为一致。自动执行开关(PMS_OPEN_AUTO_EXEC_ON_VERDICT,默认关)留给一致性检查通过后再开。
测试:新增第二十批 15 例,第七批 32 到 35 例,全套 626 例 ALL SUITES PASS;例数表按实跑校正(原记 591 已过期)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 11:51:42 +08:00
zlt 3e2a243678 修复公示导出:模板残留隐藏行把合计行与图表整段藏掉;红绿条件格式按最终行位重建;净值+仓位双系列带标记图表 2026-08-28 17:20:58 +08:00
zlt 88592bb349 修复公示导出:标的名按名字接口真实形状(简称/全称字典)提取为字符串 2026-08-28 16:35:40 +08:00
zlt fa00abe7e8 修复公示导出:标的名按名字接口真实形状(简称/全称字典)提取为字符串 2026-08-28 16:06:42 +08:00
zlt 88df8762b0 修复公示导出:字符串参数走 ParamStore 真实存在的 get() 2026-08-28 16:02:13 +08:00
zlt 8a3362a3d7 添加每日导出按钮 2026-08-28 15:45:30 +08:00
zlt 51bd6dc150 模拟库和正式库分离 2026-08-28 14:34:00 +08:00
zlt 02e73f4d01 模拟库和正式库分离 2026-08-28 14:01:17 +08:00
zlt 7e06e43334 代码全面修改 2026-08-28 13:07:27 +08:00
zlt 8372c388a3 修改前端页面 2026-08-26 10:29:31 +08:00
zlt e794d8520d 添加交易逻辑 2026-08-26 10:11:29 +08:00
zlt e03e41a32b 添加交易逻辑 2026-08-26 10:01:30 +08:00
zlt 43ccc9bf0f 添加交易逻辑 2026-08-25 14:25:45 +08:00
zlt f6aac0ca17 添加交易逻辑 2026-08-25 14:07:42 +08:00
zlt e4c23ec238 添加交易逻辑 2026-08-25 13:57:16 +08:00
zlt f4123d36d3 添加交易逻辑 2026-08-25 13:45:51 +08:00
zlt 7d25be41c9 修改前端页面部分问题 2026-08-25 11:09:58 +08:00
zlt 9a1b93a6d2 处理命令冲突的问题 2026-08-20 11:09:33 +08:00
zlt be92b2be8a 处理命令冲突的问题 2026-08-20 10:23:33 +08:00
zlt 5fb030135e 加入股汇参数和相应逻辑 2026-08-19 10:04:20 +08:00
zlt 940f4ea688 开始处理系统整体细节 2026-08-18 14:10:26 +08:00
zlt 48a3267299 开始处理系统整体细节 2026-08-18 13:34:20 +08:00
zlt 3a02bc00ff 开始处理系统整体细节 2026-08-17 15:09:37 +08:00
zlt 2cb2e1a29c 前端库本地自带(Vue生产版/ElementPlus压缩版,去unpkg依赖); 策略术语改写(已武装→回落即止盈,未平回→在手T仓等) 2026-08-14 16:04:35 +08:00
zlt 1fde77f728 PMS信号区: 默认折叠+级别筛选跨刷新保留; mtf资金异动拆data取真实字段(方向/异动z/净额),去空级别列 2026-08-14 14:00:05 +08:00
zlt ae022f960d PMS告警面板: 加时间窗分钟龄+超龄置灰(默认60min), 三参数注册进RUNTIME_EXTRA可实时调 2026-08-14 09:41:33 +08:00
zlt 2315ac3bd3 处理自动刷新时间 2026-08-13 15:37:21 +08:00
zlt ac2509958f 修改页面布局样式 2026-08-13 13:12:10 +08:00
zlt cd9c90dee0 修改页面布局样式 2026-08-13 10:45:04 +08:00