diff --git a/.gitea/workflows/ci-cd.yml b/.gitea/workflows/ci-cd.yml
index bec9e99..83f6b5e 100644
--- a/.gitea/workflows/ci-cd.yml
+++ b/.gitea/workflows/ci-cd.yml
@@ -50,12 +50,13 @@ jobs:
exit 1
fi
echo "✅ 本次 push commit 标签齐全"
- - name: pytest 冒烟 (venv310 数据层+组合引擎)
+ - name: pytest 冒烟 (venv310 数据层+组合引擎+因子评估)
run: |
PY=/Users/chufeng/.openclaw/sanguo_projects/sanguo_vnpy_v2/venv310/bin/python
# 2026-08-22 起扩跑 tests/portfolio(issue#35 方案 B):原 13 个 Mac 环境失败
# 已被依赖治理顺带清零(实测 440 绿 1.74s);组合引擎 440 题进 CI 门禁
- PYTHONPATH="$GITHUB_WORKSPACE" $PY -m pytest tests/data_platform tests/portfolio -q
+ # 2026-08-25 起加 tests/factor(因子评估层纯逻辑小测,本地62绿)
+ PYTHONPATH="$GITHUB_WORKSPACE" $PY -m pytest tests/data_platform tests/portfolio tests/factor -q
# ---------- NAS 部署(后端代码 + 前端 dist + restart 容器) ----------
nas-deploy:
diff --git a/frontend/src/views/factor/BatchEval.vue b/frontend/src/views/factor/BatchEval.vue
index 8107dca..09bf0ce 100644
--- a/frontend/src/views/factor/BatchEval.vue
+++ b/frontend/src/views/factor/BatchEval.vue
@@ -1,18 +1,158 @@
@@ -29,39 +169,76 @@ async function submit() {
01股票池
与实盘可交易域一致 · 退市股保留(无幸存者偏差)
-
+
+
+
+
+ 已识别 {{ parsedCustomSymbols.length }} 只股票
+
+
@@ -70,20 +247,25 @@ async function submit() {
03时间窗与口径
日频因子值 · RankIC · 前瞻收益 1/5/10 日
-
+
→
-
+
- 全量预估 ~2.5h (NAS) · 建议晚间错峰
+ 全量约 4400 只 × 8.5 年,预计 1–3 小时,完成后结果进 IC 排行榜
+
+
+
{{ loading ? '提交中…' : '提交评估任务' }}
- 提交后进入任务中心排队 · 完成自动生成「2026-08-25 批次」排行榜
+ 提交后进入任务中心排队 · 完成自动生成「{{ autoLabel }}」排行榜
@@ -335,4 +517,38 @@ async function submit() {
.btn.primary:hover:not(:disabled) {
background: #33ecff;
}
+
+.custom-input {
+ width: 100%;
+ font-family: var(--mono);
+ font-size: 12px;
+ color: var(--text);
+ border: 1px solid var(--border);
+ border-radius: var(--r-sm);
+ padding: 8px 12px;
+ background: var(--panel);
+ resize: vertical;
+}
+
+.btn-sm {
+ font-size: 11.5px;
+ font-weight: 600;
+ border-radius: var(--r-sm);
+ padding: 5px 12px;
+ border: 1px solid var(--border);
+ color: var(--text-2);
+ background: var(--bg-card);
+ transition: all 0.15s var(--ease);
+ cursor: pointer;
+}
+
+.btn-sm:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+.btn-sm:hover:not(:disabled) {
+ border-color: var(--cyan-dim);
+ color: var(--brand);
+}
diff --git a/frontend/src/views/factor/LeaderboardDetail.vue b/frontend/src/views/factor/LeaderboardDetail.vue
index fe94898..5646b0a 100644
--- a/frontend/src/views/factor/LeaderboardDetail.vue
+++ b/frontend/src/views/factor/LeaderboardDetail.vue
@@ -80,7 +80,7 @@ function renderMonthlyChart() {
name: '月度 IC',
data: icValues,
itemStyle: {
- color: (params) => (params.data as number) >= 0 ? 'var(--up)' : 'var(--down)',
+ color: (params: any) => (params.data as number) >= 0 ? 'var(--up)' : 'var(--down)',
},
},
{