Files
qlib/scripts
Simon 50a1030afa fix(web): 参数表单收束 + 一句话说明改多行(按截图实测修两处失调)
用户给了真实截图,指出两处肉眼可见的不协调,逐项定位后修复:

1. 「一句话说明」是单行 input 被塞进 ~360px 的格子,placeholder
   「例:全市场股息率最高的 2」直接截断 —— 内容太多、框太小。
   → 改为整宽多行 <textarea>(rows=2、min-height 64px、可纵向拉伸),
     与定宽 340px 的策略名并排(.params-meta flex),窄屏自动上下堆叠;
     实时字数 (N/300) 已在提示里。

2. 「太多地方没有对齐」的根因:表单铺满 ~1900px 内容区,5 列各 ~360px,
   控件拉得太开;因子下拉用 1fr 撑到 ~1500px 而权重框才 118px,比例失调;
   数字输入还有 max-width:180px 上限,比同行下拉窄一截。
   → .params-form 约束到 ~1100px(每列 ~210px,所有控件按 1fr 等宽,
     左右边缘严格对齐);移除已多余的 max-width:180px(限宽后它反而
     制造新的不等宽),数值/日期改为填满单元格;因子行首列封顶 460px、
     整行限宽 720px,条件行同理(首列 ≤360px、限宽 760px);
     复权口径选项去掉括号里的「股息策略推荐」(已在 hint 说明),不再截断。

验证方式也升级了:这次是**截图后用 read_image 看渲染像素**确认,而不只量几何。
对齐自检同步把 textarea(高度随行数变、本就该比单行高)排除出「同排等高 /
高度归一」比较,并把数字过宽阈值调到 240px(限宽后 ~210px 属正常)。

门禁:tsc 0 错误、图表单测 7/7、next build 成功、页面 200、
对齐自检 140/140、契约自检 59/59;/backtest 与 /strategies 截图复核通过。
2026-09-30 19:56:40 +08:00
..

scripts

数据同步 / 运维 / 自检脚本。

自检脚本(改完对应部分就跑一遍)

脚本 检查什么 用法
verify_strategy_workspace.py 策略库 / 回测 / 归档链路的端到端契约(含按 kind 逐类验证归档页) python3 scripts/verify_strategy_workspace.py(--skip-job 跳过真实回测)
verify_backtest_page_contract.py 回测页与后端字段契约(净值点数、个股曲线数、收益口径) python3 scripts/verify_backtest_page_contract.py
verify_ui_alignment.py UI 对齐与控件一致性:同排控件等高、尺寸归一、点击目标、标签与无障碍名、圆角/字号一致、无横向溢出、提示不裁切 python3 scripts/verify_ui_alignment.py(--dump 打印几何明细,--width 375 只测小屏)
qlib_verify.py pyqlib 安装与数据落盘基线 cd backend && uv run python ../scripts/qlib_verify.py

verify_ui_alignment.py 用系统 Chrome + 原生 CDP(仅标准库实现,不依赖 playwright), 独占随机端口与临时 profile,不会干扰你正在用的浏览器。

数据 / 运维

脚本 用途
run_dividend_case.py 复现高股息案例(全市场股息率 TopN、每 m 月择股)
migrate_sqlite_to_mysql.py 历史 SQLite 数据迁移到本机 MariaDB
grant_local_mysql_user.sql / mysql_recover_and_grants.sh 本机 MariaDB 账号与权限
dev.sh 一键起后端 + 前端(开发用)