Skip to content

Commit e4da584

Browse files
Pigbibicodex
andcommitted
chore: point lifecycle gateway metadata to platform kit
Co-Authored-By: Codex <noreply@openai.com>
1 parent 68c8ad7 commit e4da584

2 files changed

Lines changed: 67 additions & 4 deletions

File tree

src/quant_platform_kit/strategy_lifecycle/ai_provider.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
Architecture::
44
5-
QuantStrategyLifecycle AiGateway (VPS, single service)
5+
QuantPlatformKit lifecycle AiGateway (VPS, single service)
66
─────────────────── ─────────────────────────────────
77
AiServiceClient │
88
├─ review() ──────────────────────┤──▶ POST /v1/ai/review (multi-model)
@@ -212,15 +212,15 @@ def _call_local(self, provider: AiProviderConfig, prompt: str, timeout: float) -
212212
"model": provider.model,
213213
"prompt": prompt,
214214
"timeout_seconds": int(timeout),
215-
"source_repository": os.environ.get("AI_GATEWAY_SOURCE_REPO", "QuantStrategyLab/QuantStrategyLifecycle"),
215+
"source_repository": os.environ.get("AI_GATEWAY_SOURCE_REPO", "QuantStrategyLab/QuantPlatformKit"),
216216
"source_ref": "main",
217217
"mode": "review_only",
218218
}).encode("utf-8")
219219

220220
req = _urllib_req.Request(
221221
f"{base_url}/v1/ai/execute/jobs", data=payload, method="POST",
222222
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json",
223-
"Accept": "application/json", "User-Agent": "quant-strategy-lifecycle"},
223+
"Accept": "application/json", "User-Agent": "quant-platform-kit-lifecycle"},
224224
)
225225
with _urllib_req.urlopen(req, timeout=30) as resp:
226226
result = _json.loads(resp.read().decode("utf-8"))
@@ -236,7 +236,7 @@ def _call_local(self, provider: AiProviderConfig, prompt: str, timeout: float) -
236236
req2 = _urllib_req.Request(
237237
f"{base_url}/v1/ai/execute/jobs/{job_id}", method="GET",
238238
headers={"Authorization": f"Bearer {token}", "Accept": "application/json",
239-
"User-Agent": "quant-strategy-lifecycle"},
239+
"User-Agent": "quant-platform-kit-lifecycle"},
240240
)
241241
try:
242242
with _urllib_req.urlopen(req2, timeout=30) as resp2:
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
"""Tests for strategy_lifecycle.ai_provider gateway fallback payloads."""
2+
3+
from __future__ import annotations
4+
5+
import json
6+
import unittest
7+
from unittest.mock import patch
8+
9+
from quant_platform_kit.strategy_lifecycle import ai_provider
10+
11+
12+
class _FakeResponse:
13+
def __init__(self, payload: dict):
14+
self._payload = payload
15+
16+
def __enter__(self):
17+
return self
18+
19+
def __exit__(self, *_exc_info):
20+
return False
21+
22+
def read(self) -> bytes:
23+
return json.dumps(self._payload).encode("utf-8")
24+
25+
26+
class AiProviderGatewayFallbackTests(unittest.TestCase):
27+
28+
def test_local_gateway_payload_defaults_to_quant_platform_kit(self) -> None:
29+
requests = []
30+
31+
def fake_urlopen(request, timeout):
32+
requests.append(request)
33+
if request.full_url.endswith("/v1/ai/execute/jobs"):
34+
return _FakeResponse({"job_id": "job-1"})
35+
return _FakeResponse({"status": "succeeded", "output": "ok"})
36+
37+
with patch.dict(
38+
ai_provider.os.environ,
39+
{"CODEX_AUDIT_SERVICE_URL": "https://gateway.example"},
40+
clear=True,
41+
), patch.object(ai_provider, "_fetch_oidc_token", return_value="token"), patch(
42+
"urllib.request.urlopen", side_effect=fake_urlopen
43+
), patch("time.sleep", return_value=None):
44+
client = ai_provider.AiServiceClient(
45+
ai_provider.AiServiceConfig.reliability(
46+
primary=ai_provider.AiProviderConfig.codex_vps()
47+
)
48+
)
49+
result = client._call_local(
50+
ai_provider.AiProviderConfig.codex_vps(), "review this", 1.0
51+
)
52+
53+
self.assertTrue(result.success)
54+
payload = json.loads(requests[0].data.decode("utf-8"))
55+
self.assertEqual(payload["source_repository"], "QuantStrategyLab/QuantPlatformKit")
56+
self.assertEqual(
57+
dict(requests[0].header_items()).get("User-agent"),
58+
"quant-platform-kit-lifecycle",
59+
)
60+
61+
62+
if __name__ == "__main__":
63+
unittest.main()

0 commit comments

Comments
 (0)