programgarden 1.37.4__tar.gz → 1.37.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {programgarden-1.37.4 → programgarden-1.37.6}/PKG-INFO +1 -1
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/executor.py +21 -3
- {programgarden-1.37.4 → programgarden-1.37.6}/pyproject.toml +1 -1
- {programgarden-1.37.4 → programgarden-1.37.6}/README.md +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/__init__.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/binding_validator.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/client.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/code_worker.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/context.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/database/__init__.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/database/checkpoint_manager.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/database/fill_reconciler.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/database/query_builder.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/database/workflow_position_tracker.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/database/workflow_risk_tracker.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/deep_fixtures.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/futures_pnl.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/node_runner.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/order_lifecycle.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/plugin/__init__.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/plugin/sandbox.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/providers/__init__.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/providers/llm_errors.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/providers/llm_provider.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/reconnect_handler.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/resolver.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/resource/__init__.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/resource/context.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/resource/limiter.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/resource/monitor.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/resource/throttle.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/semantic_rules.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/tools/__init__.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/tools/credential_tools.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/tools/definition_tools.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/tools/event_tools.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/tools/job_tools.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/tools/registry_tools.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/tools/sqlite_tools.py +0 -0
- {programgarden-1.37.4 → programgarden-1.37.6}/programgarden/validation_recommender.py +0 -0
|
@@ -24469,12 +24469,24 @@ class WorkflowJob:
|
|
|
24469
24469
|
RECONCILE_MIN_ORDER_AGE_SEC = 60.0
|
|
24470
24470
|
|
|
24471
24471
|
def _find_account_tracker_entry(self) -> Optional[Dict[str, Any]]:
|
|
24472
|
-
"""재조정에 쓸 해외주식 계좌 추적기 엔트리(있으면).
|
|
24472
|
+
"""재조정에 쓸 이 잡의 해외주식 계좌 추적기 엔트리(있으면).
|
|
24473
24473
|
|
|
24474
24474
|
추적기는 이미 60초 주기로 잔고를 들고 있다 — 유령 포지션 대조에 쓸 보유수량과
|
|
24475
24475
|
매도 추정에 쓸 평균매입가를 **추가 브로커 호출 없이** 여기서 얻는다.
|
|
24476
|
+
|
|
24477
|
+
🔴 레지스트리는 `BrokerNodeExecutor` 의 **클래스 속성**이지 WorkflowJob 의 것이
|
|
24478
|
+
아니다. 종전엔 `self._active_trackers` 로 읽어 prod 에서 매 주기
|
|
24479
|
+
`AttributeError: 'WorkflowJob' object has no attribute '_active_trackers'` 가 났다
|
|
24480
|
+
(2026-09-14 실관측). 단위 테스트가 그 속성을 직접 만들어 넣는 바람에 가려졌다.
|
|
24481
|
+
|
|
24482
|
+
키는 `f"{job_id}_{node_id}"` 이고 레지스트리는 프로세스 전역이다 — 한 프로세스에
|
|
24483
|
+
여러 잡이 뜨면 **남의 계좌 추적기를 집을 수 있으므로** job_id 로 거른다. 그건
|
|
24484
|
+
다른 계좌의 잔고로 이 잡의 유령 포지션을 판정하는 것이라 조용히 틀린다.
|
|
24476
24485
|
"""
|
|
24477
|
-
|
|
24486
|
+
prefix = f"{self.job_id}_"
|
|
24487
|
+
for key, entry in BrokerNodeExecutor._active_trackers.items():
|
|
24488
|
+
if not str(key).startswith(prefix):
|
|
24489
|
+
continue
|
|
24478
24490
|
if not isinstance(entry, dict):
|
|
24479
24491
|
continue
|
|
24480
24492
|
if entry.get("type") != "account_tracker":
|
|
@@ -24521,9 +24533,15 @@ class WorkflowJob:
|
|
|
24521
24533
|
|
|
24522
24534
|
ls = entry["ls"]
|
|
24523
24535
|
node_id = "fill_reconciler"
|
|
24536
|
+
# 🔴 체결 조회는 `NewOrderNodeExecutor` 의 메서드다 — WorkflowJob 의 것이 아니다.
|
|
24537
|
+
# `self._query_...` 로 부르면 AttributeError 로 매 주기 죽는다(2026-09-14 실관측).
|
|
24538
|
+
# 같은 부류로 `_active_trackers`(BrokerNodeExecutor) 도 한 번 틀렸다. 이 파일은
|
|
24539
|
+
# 한 모듈에 여러 클래스가 있어 `self.` 이 어느 클래스인지 눈으로는 안 보인다 —
|
|
24540
|
+
# test_fill_reconcile_wiring.py 의 소유자 검증 테스트가 이걸 잠근다.
|
|
24541
|
+
order_executor = NewOrderNodeExecutor()
|
|
24524
24542
|
|
|
24525
24543
|
async def _fetch(order_date: str) -> Dict[str, Dict[str, Any]]:
|
|
24526
|
-
return await
|
|
24544
|
+
return await order_executor._query_overseas_stock_fills_by_date(
|
|
24527
24545
|
ls, order_date, self.context, node_id
|
|
24528
24546
|
)
|
|
24529
24547
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{programgarden-1.37.4 → programgarden-1.37.6}/programgarden/database/workflow_position_tracker.py
RENAMED
|
File without changes
|
{programgarden-1.37.4 → programgarden-1.37.6}/programgarden/database/workflow_risk_tracker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|