2.2 KiB
2.2 KiB
BatchuKis Database Schema Definition
이 문서는 데이터베이스 설계를 위한 테이블 명세서입니다. 모든 컬럼명은 models.md의 필드명과 일치해야 합니다.
1. api_settings (사용자 및 API 설정)
- 단일 사용자 환경이므로
id=1레코드만 사용. aiConfigs는 별도의ai_configs테이블과 Join하여 처리.
2. ai_configs (AI 엔진 프로필)
id: TEXT (PK)name: TEXTproviderType: TEXT (gemini | openai-compatible)modelName: TEXTbaseUrl: TEXT (Nullable)
3. holdings (현재 보유 종목)
code: TEXT (PK)name: TEXTavgPrice: REALquantity: INTEGERmarket: TEXT (Domestic | Overseas)
4. auto_trade_configs (자동매매 로봇)
id: TEXT (PK)stockCode: TEXT (Nullable)stockName: TEXTgroupId: TEXT (Nullable)type: TEXT (ACCUMULATION | TRAILING_STOP)quantity: INTEGERfrequency: TEXT (DAILY | WEEKLY | MONTHLY)specificDay: INTEGERexecutionTime: TEXTtrailingPercent: REALactive: BOOLEANmarket: TEXT
5. reserved_orders (실시간 감시/예약 주문)
id: TEXT (PK)stockCode: TEXTstockName: TEXTtype: TEXT (BUY | SELL)quantity: INTEGERmonitoringType: TEXTtriggerPrice: REALtrailingType: TEXTtrailingValue: REALstatus: TEXTcreatedAt: DATETIMEexpiryDate: DATETIME
6. watchlist_groups (관심 종목 그룹)
id: TEXT (PK)name: TEXTcodes: TEXT (JSON String Array - e.g. '["005930", "NVDA"]')market: TEXT
7. [NEW] discovery_rank_cache (발굴 랭킹 캐시)
category: TEXT (PK - VOLUME, VALUE 등)market: TEXT (PK)rank_json: TEXT (JSON String - StockItem 리스트 보관)updated_at: DATETIME- 용도: 랭킹 연산은 리소스가 많이 들므로 1~5분 단위로 배치 처리 후 캐시된 데이터를 API로 제공.
8. [NEW] stock_stats (종목별 확장 통계)
code: TEXT (PK)tradingValue: REALbuyRatio: INTEGERsellRatio: INTEGERforeignNetBuy: INTEGERinstitutionalNetBuy: INTEGER- 용도:
StockItem테이블을 직접 확장하거나 별도 통계 테이블로 관리하여 발굴 데이터 조회 성능 최적화.