80 lines
2.7 KiB
Markdown
80 lines
2.7 KiB
Markdown
# BatchuKis Database Schema Definition
|
|
|
|
이 문서는 데이터베이스 설계를 위한 테이블 명세서입니다. 모든 컬럼명은 [models.md](./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 하여 누적.
|