fix: 无本地同地区基准时自相关通过并记为零
Deploy production / deploy (push) Successful in 56s

This commit is contained in:
yuxuanhui
2026-09-10 13:16:52 +08:00
parent 758925edb8
commit 37e390a073
4 changed files with 58 additions and 4 deletions
+7 -2
View File
@@ -515,7 +515,7 @@ class Runner:
async def check_correlations(self, job_id, alpha_ids):
"""Check fixed targets against same-region submitted caches, with per-target recovery.
Missing references are reported as incomplete coverage. Authentication,
An empty same-region reference set passes locally with correlation zero. Authentication,
transient upstream errors and cancellation retain the task for retry.
"""
await self.checkpoint(job_id, {"total": len(alpha_ids)})
@@ -564,7 +564,12 @@ class Runner:
result["reason"] = "平台未提供目标 Alpha 的地区"
elif not reference_ids:
result = calculate_correlation([], [])
result["reason"] = "没有同地区已提交 Alpha 可供比较,请先同步已提交 Alpha"
# A local policy default, not a measured Pearson coefficient.
result.update(
status="low",
max_correlation=0.0,
reason="没有同地区已提交 Alpha 可供比较,按本地规则视为通过,自相关值记为 0",
)
else:
target = await self.correlation_pnl(job_id, alpha_id)
references = []
+37
View File
@@ -353,3 +353,40 @@ async def test_scoped_date_query_parameters_and_no_platform_check(settings):
assert "status!" in second and second["hidden"] == "true"
assert all(r.method == "GET" and r.url.path == "/users/self/alphas" for r in requests)
await client.close()
@pytest.mark.parametrize("region", ["USA", None])
async def test_empty_region_reference_set_passes_with_zero_but_missing_region_does_not(
app, logged_in, region
):
runner = app.state.runner # No credentials or PnL; this branch must stay local.
async with runner.sessions.begin() as db:
for raw in (
alpha("target", settings={"region": region}),
alpha("pending", settings={"region": "USA"}),
alpha("other-region", status="ACTIVE", settings={"region": "CHN"}),
):
await upsert_alpha(db, raw)
job = (
await logged_in.post(
f"{PREFIX}/sync-jobs", json={"kind": "self_correlation", "alpha_ids": ["target"]}
)
).json()
await runner.execute(job["id"])
assert (await result(runner, job["id"])).status == "completed"
report = (await logged_in.get(f"{PREFIX}/alphas/target/self-correlation")).json()["result"]
assert report["candidate_count"] == report["compared_count"] == report["skipped_count"] == 0
assert report["status"] == ("low" if region else "insufficient_data")
assert report["max_correlation"] == (0.0 if region else None)
assert not report["stale"] and report["matches"] == []
summary = (await logged_in.get(f"{PREFIX}/alphas?q=target")).json()["items"][0]["local_correlation"]
assert summary["status"] == report["status"]
assert summary["max_correlation"] == report["max_correlation"]
state = (await logged_in.get(f"{PREFIX}/alphas/target/submission")).json()
assert state["can_check"] is bool(region)
if region:
async with runner.sessions.begin() as db:
await upsert_alpha(db, alpha("new-peer", status="ACTIVE"))
report = (await logged_in.get(f"{PREFIX}/alphas/target/self-correlation")).json()["result"]
assert report["stale"]
assert not (await logged_in.get(f"{PREFIX}/alphas/target/submission")).json()["can_check"]