zlt
51815d5588
三源合议工作包二(四):接入下单链路(合议分流·增持门·质地排序·提议卡合议行)
...
把三块大脑接进新建仓与持仓的下单链路,每处守开关关掉即逐字回旧:
- 新建仓扫描前批量装配合议挂候选;scan_open 按合议路由分流
(跳过/观察不占名额、观察带 wait_tech、交人强制确认、放行照常、缺合议退旧路)
- 合议开着时定档改用 advise_v2 仓位矩阵;六键进硬数字但不进送研判白名单
- 持仓增持门:合议看空停三类、技术面看空停回踩补足与盈利加仓、基本面看空停补仓,减持不受影响
- 候选先按基本面立场分桶再按分数;观察档质地看多进池开关(默认关)
- 提议卡加合议行与详情弹窗;候选处置新增「等技术面开口」
台账 007/008/009;第二十九批 24 例,本地全量 ALL SUITES PASS。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 16:28:32 +08:00
zlt
0dd5b68e11
三源合议工作包二(三):advise_v2 基本面×技术面仓位矩阵
...
方案附录乙的仓位矩阵, 叠在现有 advise 的基本面维度上加技术面维度, 旧 advise 原样保留:
- 基本面看多×技术面看多/中性 → 标准仓 5/2.5/2.5; 估值贵或共识已定价 → 减半, 共识已定价还首批推迟
- 基本面看多/中性×技术面看空 → 观察(route), 已持仓只停增持
- 基本面中性×技术面看多/中性 → 标准仓 3/3.5/3.5
- 基本面看空×技术面看多 → 试探仓1%一批交人, 配紧止盈与SAR线(tight_trail)
- 基本面看空技术面非多 / 无读数 → 不建
- 保留既有: 逻辑存疑不建、赔率低降试探、高位兑现首批推迟
batch28 加矩阵八例, 现 37 例。扫描接入路由、增持门、页面合议行随后。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 14:50:45 +08:00
zlt
be7884da46
三源合议工作包二(二):装配服务与批量读昨夜定性
...
- downstream_repo.fetch_nightly_verdicts: 批量读 strategy_daily_results.signal_type (择时那票的源)
- consensus_service: 给候选/持仓行凑齐基本面/技术面/择时四块意见, hard_keys 折成六个硬数字键
- 参数登记 PMS_FUND_REQUIRED/STALE_DAYS/CONSENSUS_GOOD_MIN、PMS_CONSENSUS_ROUTE
- batch28 加装配三例 (脱库桩参数与映射), 现 29 例
装配层不改下单链路。advise_v2 仓位矩阵、扫描接入路由、增持门、页面合议行随后。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 14:33:58 +08:00
zlt
84207d53b8
三源合议工作包二(一):基本面/择时/合议三个纯逻辑模块
...
方案第四节的三个纯逻辑判定,零外部依赖好单测:
- fund_rules 基本面立场:质地好看多/质地中两好零差看多/差或硬疑点看空/缺或超120天无读数/
十视角好≥8且估值贵打共识已定价标记
- timing_rules 择时立场:昨夜 BUY/WATCH/SELL 映射 + 盘中转多升级
- consensus 合议与路由:多数决方向、强弱、附录丙路由表逐条
batch28 二十六例。装配服务 consensus_service 与 advise_v2、扫描接入、增持门、页面合议行随后。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 14:17:04 +08:00
zlt
5fa68817dc
修技术面分页:按 matched 拉完,不再用页大小判最后一页
...
真机(2026-09-11)接口 limit 上限 1000 < 页大小 1500,旧逻辑第一页 got=1000<1500 就判
最后一页,只落 1000/4991。改为优先按 matched 终止、空页停、页大小设 1000。batch27 加一例。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 14:06:57 +08:00
zlt
f30d1a1d0a
修技术面落表 SQL:ON DUPLICATE 子句改用 VALUES(列)
...
真机首验(2026-09-11)抓到: upsert_daily 的 ON DUPLICATE KEY UPDATE 用 :col 绑定参数,
pymysql executemany 对 INSERT...ON DUPLICATE 做多行合并优化时只展开 VALUES 子句占位符,
UPDATE 子句的 %s 不展开却仍算参数, 5000 行批量落表参数错位、SQL 留裸 % 报 1064。
改用 VALUES(列) 引用插入值。batch27 加哨兵钉住(脱库单测 mock 落表测不到)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 14:01:11 +08:00
zlt
a33bae5e20
修 batch20 提议卡守卫断言:propVerdictLine 重构后移进详情弹窗
...
提议卡重构把 propVerdictLine 从卡面(参数 p)移进弹窗(参数 propDetailP),
断言按字面查 "propVerdictLine(p)" 失配。放宽为只要求用到 propVerdictLine。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 13:54:18 +08:00
zlt
0d3984582c
技术面接入工作包一(后端):取数落表、相位合成与映射打通
...
方案见 docs/技术面接入与三源合议方案_2026-09-11.md 第五节。让每只票多一份结构化
技术面立场,数据取自决策系统全市场技术面接口(布林线/多空布林线/SAR)。
- 新表 pms_tech_daily 存全市场每日读数,保留 40 个交易日
- core/tech_rules 相位合成(纯逻辑)、repo/tech_repo 单表访问、services/tech_service 分页取数落表与每早映射
- 调度加 06:30 tech_pull;plan_pull 拉完计划后补拉一次并重建映射
- 三接口:技术面状态、手动拉取(管理员)、单票研究面
- 参数 PMS_TECH_* 登记;哨兵同步(DDL 表数 20、调度位、路由清单)
- batch27 二十七例,开发机全量 ALL SUITES PASS;相位与五个阈值记台账 006
页面七处建议并入工作包二;合议(二)、离场(三)、选股打分(四)未做。未真机判收。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 12:32:00 +08:00
zlt
cabcf04397
修 batch25 一条钉住排版而非行为的断言;硬风险排在重问之后
...
batch25 那条断言写的是 `'or bool(reask_why))' in src`,它把「reask_why 必须是
force_queue 那一行的最后一项」也一起钉住了 —— 而那只是当时的排版,不是这条规矩的
内容。往一票否决里加「上游标了硬风险的候选也交人」之后,那一行结尾变成
`bool(risk_why))`,断言就红了,而被它保护的行为一个字都没变。改成取出那一行、
只看 reask_why 在不在里面。
同时把交人原因的次序改回来:重问放行仍排最前(2026-09-09 拍板),硬风险紧随其后。
原先我把硬风险排到了最前,那等于顺手推翻上一次拍板 —— 而两者实际上几乎不会同时
出现(上游标了硬风险的票判决多半不是「候选」,走不到重问那一步),这个次序之争
是空的,不值得为它改口径。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 13:47:04 +08:00
zlt
c9b468e7a2
数量按建议档位重算:卡上写试探仓 1%,采纳后就真的只买 1%
...
一、问题。155 实测 8 张待确认提议,7 张卡上写「建议方案:试探仓(目标 1.0%,
分批 100%)」,而每一张采纳后实际会买 3.00%(标准仓 6% 的第一批),正好三倍。
只有 300118.SZ 那张标准仓的是自洽的。
根因是次序。候选产出时 advise() 的档位是进过数量的(params_for 把 target_pct
塞进 stock_target_default,action_engine 据此拆批)。但研判回来之后 apply_judge
还会再降一档 —— 把握度低或结论不可用就降成试探仓 —— 那一步只改档位文字,数量
已经算完了。apply_judge 的说明原文写着「不改数量, 数量交人」,而页面上采纳按钮
根本没有填数量的地方,这个「交人」无处兑现;采纳时后端直接抄提议里的股数原样
落单(web/main.py 只有卖出侧会按可卖量重算)。
二、改法。新增 advice_service.resize_to_advice,在 apply_judge 降档之后重算这一批
的股数,并把 target_pct / target_amount / base_amount / batch_scheme 一起改掉 ——
否则卡上那三个数字仍然是旧口径。总规模不另外读参数表,直接从硬数字里的
target_amount ÷ target_pct 反推,保证与当初算数量用的是同一个规模。
买不足一手时抬到一手:300604.SZ 现价 264.81,1% 只有 75 股,抬到 100 股实际
占 1.32%,仍远小于机械档 6%。但一手金额不许超过机械档 —— 超过说明这只票对当前
规模本来就太贵,那就不改数量、把原因留在卡上,不默默按旧数量下单。
三、一并补上持仓的目标仓位。pms_position.target_pct 这一列全库从来没有任何一处
写过,而动作引擎算补仓与加仓金额时先读它、读不到退全局 6%。不补的话会得到一个
更难看的组合:第一笔只买 1%,随后系统自己按 6% 一路补,试探仓的意思当场作废。
现在在建仓成交入账时记一次,且只记第一次(目标仓位是建这只仓时定的意思,
后续加仓不该改)。记不上绝不拦成交入账。
四、补一个洞:上游标了硬风险的候选一律交人,哪怕档位是 full。
这一条原先只写在 _verdict_auto_exec_why 那条更窄的旁路里(第四条「上游风险列表
为空」),而一票否决那条链完全不看 risk。后果是反的:档位是 propose_only 时旁路
会拦住带风险的票,一旦档位改成 full,那条旁路根本不走,带硬风险的候选反而畅通
无阻直接落指令 —— 越放开越不设防。交人原因也把硬风险排到最前,不再笼统说
「档位 propose_only」。
硬风险是选股系统在候选卡上标的三类:昨夜给出卖出/回避/已剔除信号、用的传导快照日
与计划日不符、吸筹为高位派发。
五、方向。这一批改动只会让发出去的钱变少或不变,不会变多:同一张卡从 1200 股
58,260 元降到 400 股 19,420 元;硬风险那条是把自动执行改成必须人点头。
新增 test_batch26_units.py 十七例,D 组专门钉「重算之后的金额一定不超过原来那一笔」。
前端跟上两种结果:重算成功了说一声「数量已按试探仓重算:1200 股 → 400 股」,
重算不成的把原因摆在卡上。两道页面守卫通过。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 13:42:39 +08:00
zlt
9359056d04
修页面白屏:十一个显示函数没交给模板,并加一道接线守卫
...
现象。持仓管理系统页面整页白屏,控制台只有一句
propVerdictLine is not a function。
根因。这批函数在 setup() 里定义好了、模板里也在用,但没有写进 setup()
末尾那份 return 清单,模板拿到的是 undefined,当函数调用就抛异常、整棵
组件树渲染失败。一共漏了十一个:propVerdictLine、propBasis、propLogic、
propLogicMore、propText、propHeads、hardCn、opCn、paramsCn、dropCn、
plainCheck,全部出自 2026-09-04 的 bcf5783 那批文案改造。
为什么隔了六天才炸。这几行都挂着 v-if,条件是「这条提议带选股判决」。
平时提议队列是空的、条件不成立,函数一次都不会被调用。09-10 早上队列里
出现八条新建仓提议(09:32 到 09:52,全是 WAIT_USER),第一次真的调到它。
修法。把十一个名字补进 return 清单。页面走 FileResponse 每次读盘,
155 是源码挂载,所以 git pull 之后浏览器强刷即生效,不用重启容器。
守卫。新增 scripts/test_page_wiring_guard.py,查两件事:模板引用了、
setup 里定义了、却没 return 的名字;以及 return 清单里写了、setup 里
找不到的名字。不用维护名单,从文件本身推。已在把修复回退的副本上验过,
报满十一处、退出码 1。已登记进 run_tests.py 的 SUITES 与清单说明。
index.html 二十七万字节、没有任何单测,原有的 test_page_enum_guard.py
守的是文案有没有翻译,守不到接线,所以要单独这一道。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 11:06:39 +08:00
zlt
e30b333a1c
pms-ws 启动横幅与联调面板改读运行参数表, 与运行逻辑同源
...
pms-ws 的启动横幅原来直接读 settings (.env 层) 的 PMS_QMT_WS_ENABLED 与
PMS_QMT_WS_URL, 而进程实际的启停与端点由运行参数表 pms_runtime_param 决定。
两个源不一致时横幅就说反话: 参数表里通道开着, 横幅却打「未启用 (空转)」,
下一行紧接着就是握手成功、ONLINE、心跳、每 5 分钟拉快照。
改成与 _refresh_params 同一个取值源 (param_store 优先, 读不到退回 .env 初值,
并明说这行是初值)。同批把 ws_smoke.py status 面板的端点显示一并对齐 ——
同一类误导, 排错时最先看的就是它。
只改日志与取值源, 不碰连接、握手与下发逻辑。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 16:10:39 +08:00
zlt
6f416ead6b
解锁重问:判定、取数、接线、参数、单测(台账 055 第二件之 PMS 侧)
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 15:13:09 +08:00
zlt
5cdb3b0ee4
资金异动方向两套写法都认
2026-09-09 14:59:11 +08:00
zlt
3c43f7814f
资金异动方向翻成中文:时间线五路混排,方向要同一套说法
2026-09-09 14:58:01 +08:00
zlt
7e46d49cfc
单测的风控卖出流用真实毫秒当流 id
2026-09-09 14:55:17 +08:00
zlt
9b525be3b8
单测断言按流的倒序修正
2026-09-09 14:54:49 +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
3c186ac217
测试按 PMS 自己的代码形态取键
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-09 12:17:26 +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
ac78693987
单测钉住 rule_gate.BAD_Y_SIGNALS 与另外两处同集合
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 13:31:05 +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
417d135cb7
第二十二批例数按实跑改为 15,全套 676
2026-09-07 14:40:06 +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
d8daaa034f
低把握驳回用例:断言改查提议的研判理由字段
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:58:16 +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
9a45df38a3
翻译表按清点结果补齐;修守卫把两套同名枚举混成一组的错
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 15:17:06 +08:00
zlt
66e82909a0
提议卡的断言跟上:不印判决词、改说原因,并钉住缺失项要被渲染
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 14:45:14 +08:00
zlt
bcf5783b4c
PMS 文案第三批:页面枚举直出,并加一道静态守卫
...
页面是三千行的单文件,没有任何测试,改错了不会有东西报警。所以这一批先写守卫,
再靠守卫把问题扫出来——它比人工照清单改可靠,实际也确实多抓出了四处清单里没有的。
改掉的直出点:
- 操作日志印的是函数名式的操作码(issue_command:EXIT_STOCK 这类)。冒号前是做了
什么、冒号后是对象,后半段复用页面已有的翻译组,英文码退到悬浮提示。
- 持仓表的冻结原因没走翻译,而同一份文件里另一处走了,是执行漏网。
- 提议卡两处印判决词。判决词本身不告诉人能不能买,句子主干换成原因。这里顺带
接上了 missing 字段——它一路从后端带到前端却从没被渲染过,"关注"态终于说得出
到底缺什么。
- 规则闸未通过项与裁决理由带着大写判据码。前端加一份剥前缀的实现,与后端
app/core/copy.py 同口径。
- 账本那一列原先叫「硬数字」,把整个字典打出来。改成只念人要读的几项,完整原文
退到悬浮提示。同一行的动作与研判两列也是英文原值,一起走翻译。
- 候选池落选明细、命令参数、安全垫状态、自主档位,都是直接印原值。
- 翻译兜底原先是原样返回,会让一个英文词单独立在页面上当句子。改成退到括号里。
守卫检查四件事:枚举字段直出、判据码没剥前缀、把整个对象打给交易员看、翻译兜底
裸奔。运维面板里那些有意显示原始数据的地方逐条登记放行,每条写明在哪个面板、
为什么放行。
例数 654 到 655,测试入口的例数表与哨兵位置清单同改——新增会送到页面的枚举字段
要往守卫的名单里登记一行,不登记等于不检查。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 14:43:22 +08:00
zlt
06fcc552bd
三条断言跟上新文案:冻结来路分开、判据码显示层剥掉、接口地址只进日志
...
三条钉的都是旧写法,而且都是这批要改掉的东西:
- 冻结原因原先断言以「禁增持」结尾,现在按三种来路分开写,改成断言语义并加一条
禁止枚举值出现的检查。
- 行业名额那条原先断言消息里含 SECTOR_NAMES,现在判据码在显示层被剥掉了(码仍
留在句首供账本去重与原因聚类用),改成按中文关键词断言。
- 取数报错那条原先断言消息里带接口地址,那正是把排查信息塞给用户看的写法。改成
断言消息里说清「选股系统」怎么了,同时断言接口地址、异常类名、异常原文一个都
不许出现。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 13:31:30 +08:00
zlt
c6afce2a38
用例的样例文字跟上新的判决依据写法
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 10:30:12 +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
15b6eea906
补一处漏改的断言:仅展示名单已带判决依据
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 10:11:47 +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
a507e7afbc
通道弃洞自愈+参数列放宽TEXT+运维清标记按钮+iPad浮层teleport与触屏直连+信号计划标
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-01 09:18:00 +08:00
zlt
3e2a243678
修复公示导出:模板残留隐藏行把合计行与图表整段藏掉;红绿条件格式按最终行位重建;净值+仓位双系列带标记图表
2026-08-28 17:20:58 +08:00
zlt
88592bb349
修复公示导出:标的名按名字接口真实形状(简称/全称字典)提取为字符串
2026-08-28 16:35:40 +08:00
zlt
4329340287
哨兵登记:调度名单+净值快照、DDL 表数 18→19
2026-08-28 15:52:56 +08:00
zlt
8a3362a3d7
添加每日导出按钮
2026-08-28 15:45:30 +08:00
zlt
51bd6dc150
模拟库和正式库分离
2026-08-28 14:34:00 +08:00