fix(journal): 장중 일지 자동 생성 + 전략명 unknown + profit_factor 단위 오류

- 장중 10분 주기 journal_intraday_scheduler 신설 (SELECT 전용, 쓰기는 db_worker 큐)
  - 매도 후 3분 유예(JOURNAL_INTRADAY_GRACE_MIN), trade_id in-flight TTL 30분
  - order_id 로 해소된 trade_id 에 일지가 있으면 INSERT skip (중복 방지)
- 16:00 배치 enqueue_trade_journal 이 strategy_type 을 넘기지 않아 전 일지가 'unknown' 이던 결함 수정
- analyze_performance profit_factor 를 손익률(%) 합이 아닌 금액 기준으로 (1.22 → 0.62)
- 일지 대상 SELL 상태에 PARTIAL 포함 (성과 집계 필터는 불변)
- journals 단건 생성: 중복 행 시 500 대신 409, JOURNAL_SELL_STATUSES 사용
- 16:00 배치 조회일수 config 화, 손익 0 기간 PF 오경고 제거

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 17:00:05 +09:00
parent b4e958b477
commit e4346d30fb
7 changed files with 419 additions and 21 deletions

View File

@@ -356,6 +356,18 @@ class Settings(BaseSettings):
# 남긴다 — 적용은 운영자가 전략설정 UI 에서 수동으로 한다.
STRATEGY_AUTO_APPLY_ENABLED: bool = False
# 장중 매매일지 보충 생성 — 체결된 SELL 중 일지 없는 건을 N분 주기로 일지화한다.
# (16:00 배치만 있으면 장중 매도는 최대 6시간 뒤에야 일지가 생긴다. 2026-09-28~29 에
# 장중 일지가 있었던 것은 스케줄러가 아니라 수동 "일지 생성" 버튼 호출 때문이었다.)
JOURNAL_INTRADAY_ENABLED: bool = True
JOURNAL_INTRADAY_INTERVAL_MIN: int = 10
# 한 번에 훑는 과거 일수 (uncovered 판정은 trade_id 기준이라 멱등)
JOURNAL_LOOKBACK_DAYS: int = 7
# 장중 태스크는 created_at 이 이 시간(분) 이내인 SELL 을 건너뛴다 (즉시 생성 경로와의 경합 방지)
JOURNAL_INTRADAY_GRACE_MIN: int = 3
# in-flight 등록 기록 만료(분) — 큐 INSERT 가 DLQ 로 갔어도 이 시간 뒤엔 재시도된다
JOURNAL_ENQUEUE_TTL_MIN: int = 30
# ═════════════════════════════════════════════════════════════════════════════
# ⚠️ **백테스트 미검증 — True 로 바꾸지 말 것 (CLAUDE.md §8.1-4).**
# 이 전략은 SIDEWAYS 국면 전용이며, market_analyzer 의 SIDEWAYS 전면 차단(§6.1)을