Skip to content

Commit 2d1acbb

Browse files
committed
feat: 대시보드 v2 — 웹 입금 기록 + UI 전면 개편
월 적립 기록까지 명령어로 하는 건 취미 운영에 과하다 — 웹에서 되게 했다. 웹 입금: - POST /api/deposit + 상단 [적립 입금] 버튼 → 모달(바스켓 선택 · 5만/10만/20만 프리셋 · 메모) → 토스트 + 즉시 갱신 - GET /api/cash_flows: pocket 카드에 최근 입금 3건 표시 - 안전선: 웹 쓰기는 입금 기록 하나뿐(매매·설정 변경 없음). CLI와 동일한 공유 검증 함수(record_basket_deposit — 양수·바스켓 존재·TWR 체인 보호), occurred_at 서버 시각 고정(소급 조작 불가), 바인딩 127.0.0.1 유지 UI 개편(2026-07): - 벤토 그리드 + 다크 글래스(blur 상단바·radial 배경), Pretendard 타이포 - 내 자산이 첫 화면: 바스켓별 히어로 카드(평가금 크게 · 원금(입금 포함) · 원금 대비 손익(원) · TWR · MDD · 현금 · 배치율 · 보유) - 승격 진행률을 프로그레스 바로(n/60 + 커버리지 + 이슈 인라인) - 차트 그라데이션 + 계정 선택(기본 = 첫 바스켓), 웹소켓 갭·레거시 기본 계정은 details로 접음, 토스트/라이브 도트/반응형 검증: - 실브라우저(운영 DB, 조회만): 두 바스켓 실데이터 렌더, 진행률 바, 입금 모달 열림/닫힘 확인. MDD 0의 +0.00% 부호 표시 결함 즉시 수정 - 격리 DB HTTP 테스트: 입금 성공/금액 0·미존재 바스켓·비JSON 400/내역 조회 - CLI를 공유 함수로 리팩터 — 기존 CLI 테스트 전부 통과 전체 스위트 1638 통과.
1 parent a699e3f commit 2d1acbb

4 files changed

Lines changed: 690 additions & 352 deletions

File tree

database/repositories.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,30 @@ def get_cash_flows(account_key: str = "") -> list:
834834
session.close()
835835

836836

837+
@with_retry
838+
def get_recent_cash_flows(account_key: str = "", limit: int = 12) -> list:
839+
"""최근 입금/출금 내역 [{occurred_at, amount, note}...] 최신순 — 대시보드 표시용."""
840+
session = get_session()
841+
try:
842+
rows = (
843+
session.query(CashFlow)
844+
.filter(CashFlow.account_key == (account_key or ""))
845+
.order_by(CashFlow.occurred_at.desc())
846+
.limit(int(limit))
847+
.all()
848+
)
849+
return [
850+
{
851+
"occurred_at": str(r.occurred_at)[:16],
852+
"amount": float(r.amount or 0),
853+
"note": r.note or "",
854+
}
855+
for r in rows
856+
]
857+
finally:
858+
session.close()
859+
860+
837861
@with_retry
838862
def get_cash_flow_total(
839863
account_key: str = "",

0 commit comments

Comments
 (0)