数值筛选使用平台原始值,例如 Turnover 0.15 表示 15%。
+ 检查结果仅汇总已同步的平台检查;预检通过不代表可以提交,活动资格可用自定义标签记录。
@@ -929,6 +1061,29 @@ export function AlphaPage({
/>
+
setTagEditor(null)}
+ confirmLoading={busy === "tags"}
+ okText="保存标签"
+ onOk={() => void saveTags()}
+ >
+
+ 用逗号分隔多个标签,例如
+ PPAC、待活动提交。标签保存在本地,平台同步不会覆盖。
+
+
+ setTagEditor((current) =>
+ current ? { ...current, text } : current,
+ )
+ }
+ />
+
setBulk({ ...bulk, add_tags })}
/>
diff --git a/frontend/src/style.css b/frontend/src/style.css
index 077f9ab..b1ae9e6 100644
--- a/frontend/src/style.css
+++ b/frontend/src/style.css
@@ -301,6 +301,9 @@ label:not(.semi-checkbox):not(.semi-radio) {
.columns-picker {
padding: var(--space-3);
min-width: 192px;
+ max-height: min(420px, 50dvh);
+ overflow-y: auto;
+ overscroll-behavior: contain;
}
.columns-picker > strong {
display: block;
diff --git a/frontend/src/types.ts b/frontend/src/types.ts
index d781b2b..68fe82a 100644
--- a/frontend/src/types.ts
+++ b/frontend/src/types.ts
@@ -55,6 +55,14 @@ export type Alpha = {
date_created: string | null;
date_submitted: string | null;
synced_at: string;
+ check_type: "PENDING" | "PRE_CHECK" | "PASS" | "FAIL_1" | "FAIL_2";
+ failed_checks: string[];
+ neutralization: string | null;
+ sub_universe_sharpe: number | null;
+ robust_universe_sharpe: number | null;
+ two_year_sharpe: number | null;
+ prod_correlation: number | null;
+ pnl: number | null;
research: Research;
local_correlation: CorrelationSummary | null;
source_kinds: string[];
diff --git a/frontend/tests/workspace.spec.ts b/frontend/tests/workspace.spec.ts
index 668cf35..0b85c53 100644
--- a/frontend/tests/workspace.spec.ts
+++ b/frontend/tests/workspace.spec.ts
@@ -245,10 +245,17 @@ test("batch tags, column visibility, server pagination and saved preferences", a
await page.getByRole("button", { name: "显示列设置" }).click();
await page
.locator(".columns-picker")
- .getByText("本地标签", { exact: true })
+ .getByText("自定义标签", { exact: true })
.click();
await expect(
- page.getByRole("columnheader", { name: "本地标签", exact: true }),
+ page.getByRole("columnheader", { name: "自定义标签", exact: true }),
+ ).toHaveCount(0);
+ await page
+ .locator(".columns-picker")
+ .getByText("自定义标签", { exact: true })
+ .click();
+ await expect(
+ page.getByRole("columnheader", { name: "自定义标签", exact: true }),
).toBeVisible();
await page.getByRole("button", { name: "显示列设置" }).click();
await page.getByRole("button", { name: "重置", exact: true }).click();