This commit is contained in:
+7
-2
@@ -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 = []
|
||||
|
||||
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user