Files
KisStock/backend/tables.md
2026-02-01 20:24:04 +09:00

2.7 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: TEXT
  • providerType: TEXT (gemini | openai-compatible)
  • modelName: TEXT
  • baseUrl: TEXT (Nullable)

3. holdings (현재 보유 종목)

  • code: TEXT (PK)
  • name: TEXT
  • avgPrice: REAL
  • quantity: INTEGER
  • market: TEXT (Domestic | Overseas)

4. auto_trade_configs (자동매매 로봇)

  • id: TEXT (PK)
  • stockCode: TEXT (Nullable)
  • stockName: TEXT
  • groupId: TEXT (Nullable)
  • type: TEXT (ACCUMULATION | TRAILING_STOP)
  • quantity: INTEGER
  • frequency: TEXT (DAILY | WEEKLY | MONTHLY)
  • specificDay: INTEGER
  • executionTime: TEXT
  • trailingPercent: REAL
  • active: BOOLEAN
  • market: TEXT

5. reserved_orders (실시간 감시/예약 주문)

  • id: TEXT (PK)
  • stockCode: TEXT
  • stockName: TEXT
  • type: TEXT (BUY | SELL)
  • quantity: INTEGER
  • monitoringType: TEXT
  • triggerPrice: REAL
  • trailingType: TEXT
  • trailingValue: REAL
  • status: TEXT
  • createdAt: DATETIME
  • expiryDate: DATETIME

6. watchlist_groups (관심 종목 그룹)

  • id: TEXT (PK)
  • name: TEXT
  • codes: 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: REAL
  • buyRatio: INTEGER
  • sellRatio: INTEGER
  • foreignNetBuy: INTEGER
  • institutionalNetBuy: INTEGER
  • 용도: StockItem 테이블을 직접 확장하거나 별도 통계 테이블로 관리하여 발굴 데이터 조회 성능 최적화.

9. market_index_history (시장 지수 이력)

  • index_id: TEXT (PK - KOSPI, KOSDAQ, NASDAQ, SP500, USDKRW 등)
  • timestamp: DATETIME (PK - 1시간 단위 정규화된 시각)
  • value: REAL
  • change: REAL
  • change_percent: REAL
  • updated_at: DATETIME (실제 마지막 갱신 시각)
  • 용도: 트렌드 분석 및 대시보드 인덱스 카드 표시용. 백엔드가 5분 단위로 조회하되, DB에는 1시간 단위로 마지막 데이터를 Upsert 하여 누적.