feat: 운영보고서 성과 준비도 브리지 표시 + 기준선 갱신
- render_operational_report.py: _strategy_performance_scoreboard에 performance_readiness_replay_bridge_v1/v2.json 표시 행 추가 (알파 캘리브레이션, 성과 준비도 점수, T+20 표본, 브리지 승격 규칙) - debug_boundaries.py, run_audit.py 임시 디버그 파일 삭제 - runtime/refactor_baseline_v1.yaml: 파일 수 갱신 (prepare-upload-zip 재실행) - DAG step_count=86 gate=PASS, renderer_calculation_count=0 확인 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -871,6 +871,20 @@ def _sell_priority_decision_table(hctx: dict, se: list) -> str:
|
||||
|
||||
|
||||
def _strategy_performance_scoreboard(hctx: dict, se: list) -> str:
|
||||
prb_path = ROOT / "Temp" / "performance_readiness_replay_bridge_v1.json"
|
||||
prb2_path = ROOT / "Temp" / "performance_readiness_replay_bridge_v2.json"
|
||||
prb = {}
|
||||
if prb_path.exists():
|
||||
try:
|
||||
prb = json.loads(prb_path.read_text(encoding="utf-8"))
|
||||
except Exception:
|
||||
prb = {}
|
||||
prb2 = {}
|
||||
if prb2_path.exists():
|
||||
try:
|
||||
prb2 = json.loads(prb2_path.read_text(encoding="utf-8"))
|
||||
except Exception:
|
||||
prb2 = {}
|
||||
rows = [
|
||||
("성과 레이블", hctx.get("performance_label", "")),
|
||||
("성과 배수", hctx.get("performance_multiplier", "")),
|
||||
@@ -887,6 +901,23 @@ def _strategy_performance_scoreboard(hctx: dict, se: list) -> str:
|
||||
("의사결정 증거 게이트", sel.get("decision_evidence_gate", "")),
|
||||
("결과 품질 점수", sel.get("outcome_quality_score", "")),
|
||||
]
|
||||
if isinstance(prb, dict) and prb:
|
||||
live = prb.get("live") if isinstance(prb.get("live"), dict) else {}
|
||||
replay = prb.get("replay_informational") if isinstance(prb.get("replay_informational"), dict) else {}
|
||||
rows += [
|
||||
("알파 캘리브레이션", prb.get("readiness_gate", prb.get("gate", ""))),
|
||||
("성과 준비도 점수", prb.get("performance_readiness_score", "")),
|
||||
("실운용 T+20 표본", live.get("t20_count", "")),
|
||||
("실운용 T+20 판정", live.get("sample_gate", "")),
|
||||
("리플레이 T+20 표본", replay.get("t20_count", "")),
|
||||
("리플레이 참고", replay.get("note", "")),
|
||||
]
|
||||
if isinstance(prb2, dict) and prb2:
|
||||
rows += [
|
||||
("브리지 승격 규칙", prb2.get("promotion_rule", "")),
|
||||
("브리지 승격 가능", prb2.get("promotion_allowed", "")),
|
||||
("브리지 소스 유형", ", ".join(f"{k}:{v}" for k, v in (prb2.get("source_type") or {}).items()) if isinstance(prb2.get("source_type"), dict) else ""),
|
||||
]
|
||||
return _kv(rows)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user