한국투자증권 Open API를 통해 계좌의 자산 현황을 주기적으로 조회하고 디스코드 웹훅으로 전송하는 자동화 도구.
- 다중 계정 관리: 최대 4개의 한국투자증권 계정 등록 및 동적 활성화 지원.
- 토큰 자동 갱신: SQLite 데이터베이스를 연동하여 만료 마진 내의 액세스 토큰 자동 재사용 및 갱신 기능 제공.
- 자산 현황 요약 보고: 매입금액합계, 순자산총금액, 예수금액 등 25개의 전체 자산 정보 중 0원이 아닌 항목을 선별해 마크다운 형태로 디스코드 전송.
- PM2 크론 스케줄링: 15분 주기로 백그라운드 자동 기동 및 자산 보고 수행.
의존성 규칙이 중심부인 Domain을 향하도록 설계된 클린 아키텍처 구조임.
graph TD
subgraph Presentation [Presentation Layer]
CLI[issue-token, report-balance]
end
subgraph Application [Application Layer]
IT[IssueTokens]
RAB[ReportAccountBalance]
TP[TokenProvider]
end
subgraph Domain [Domain Layer]
T[Token Interfaces]
AB[AccountBalance Interfaces]
N[Notifier Interface]
end
subgraph Infrastructure [Infrastructure Layer]
HTI[HantuTokenIssuer]
HABL[HantuAccountBalanceLoader]
STR[SqliteTokenRepository]
DN[DiscordNotifier]
end
CLI --> IT
CLI --> RAB
CLI --> TP
IT --> T
RAB --> AB
RAB --> N
RAB --> TP
TP --> T
HTI -.->|implements| T
HABL -.->|implements| AB
STR -.->|implements| T
DN -.->|implements| N
src/domain/: 핵심 비즈니스 모델 및 인터페이스 (토큰, 자산 정보, 알림 등)src/application/: 토큰 발급, 자산 조회 및 보고 유스케이스 서비스src/infrastructure/: SQLite DB 연동, 한투 API 통신, 디스코드 웹훅 전송 및 환경 설정src/presentation/: 토큰 발급 및 자산 보고 실행을 위한 CLI 엔트리포인트
.env 파일에 다음 항목을 작성함.
WEBHOOK_ID: 디스코드 웹훅 IDWEBHOOK_TOKEN: 디스코드 웹훅 토큰HANTU_XX_NO: 계정 번호 (XX =01~04)HANTU_XX_AK: 한국투자증권 App Key (XX =01~04)HANTU_XX_SK: 한국투자증권 App Secret (XX =01~04)
pnpm installpnpm tokenpnpm start # 프로덕션 서비스 기동 (15분 주기, 영업일 08:30 - 16:30만 발송)
pnpm start:dev # 개발용 서비스 기동 (5분 주기, 시간 제한 없이 항상 발송)
pnpm stop # PM2 서비스 중지
pnpm logs # 서비스 실행 로그 tailing의존성 없이 Node.js 내장 test runner와 assertion을 사용해 검증함.
pnpm test- MIT License 적용. 자유로운 이용 및 수정 가능.