|
|
|
|
|
generator client {
|
|
|
|
|
|
provider = "prisma-client-js"
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
datasource db {
|
|
|
|
|
|
provider = "mysql"
|
|
|
|
|
|
url = env("DATABASE_URL")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
// 基础数据表
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
|
|
|
|
|
|
// 交易日历表
|
|
|
|
|
|
model TradeDate {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
date DateTime @unique @db.Date
|
|
|
|
|
|
week Int @default(0)
|
|
|
|
|
|
isTrade Boolean @default(true) @map("is_trade")
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@index([date])
|
|
|
|
|
|
@@index([isTrade])
|
|
|
|
|
|
@@map("trade_dates")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 股票基础信息表(新表)
|
|
|
|
|
|
model StockBasic {
|
|
|
|
|
|
id String @id @default(uuid())
|
|
|
|
|
|
code String @unique
|
|
|
|
|
|
name String
|
|
|
|
|
|
// 东财行业分类
|
|
|
|
|
|
blemind2 String? @map("blemind2") // 东财行业指数2级
|
|
|
|
|
|
blemind3 String? @map("blemind3") // 东财行业指数3级
|
|
|
|
|
|
// 上市信息
|
|
|
|
|
|
listDate DateTime? @map("list_date") // 首发上市日期
|
|
|
|
|
|
tradeDays Int @default(0) @map("trade_days") // 上市天数
|
|
|
|
|
|
// 机构持股
|
|
|
|
|
|
agenciesHold Float? @map("agencies_hold") // 机构持股比例(%)
|
|
|
|
|
|
// 市场信息
|
|
|
|
|
|
market String? // 所属市场(SH/SZ/BJ)
|
|
|
|
|
|
industry String? // 所属行业
|
|
|
|
|
|
// 关联数据
|
|
|
|
|
|
dailyQuotes StockDailyQuote[]
|
|
|
|
|
|
momentumRecords StockMomentum[]
|
|
|
|
|
|
limitRecords StockLimit[]
|
|
|
|
|
|
newRecords StockNewRecord[]
|
|
|
|
|
|
// 时间戳
|
|
|
|
|
|
updatedAt DateTime @updatedAt @map("updated_at")
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@index([code])
|
|
|
|
|
|
@@index([blemind2])
|
|
|
|
|
|
@@index([blemind3])
|
|
|
|
|
|
@@index([listDate])
|
|
|
|
|
|
@@map("stock_basics")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
// 交易数据表
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
|
|
|
|
|
|
// 股票日行情数据表(基础数据,从数据服务获取)
|
|
|
|
|
|
model StockDailyQuote {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
stock StockBasic @relation(fields: [stockCode], references: [code], onDelete: Cascade)
|
|
|
|
|
|
tradeDay DateTime @map("trade_day") @db.Date
|
|
|
|
|
|
|
|
|
|
|
|
// 基础价格数据
|
|
|
|
|
|
open Float // 开盘价
|
|
|
|
|
|
close Float // 收盘价
|
|
|
|
|
|
high Float // 最高价
|
|
|
|
|
|
low Float // 最低价
|
|
|
|
|
|
|
|
|
|
|
|
// 成交量额
|
|
|
|
|
|
volume BigInt // 成交量
|
|
|
|
|
|
amount BigInt // 成交额
|
|
|
|
|
|
|
|
|
|
|
|
// 涨跌幅
|
|
|
|
|
|
differrange Float // 当日涨跌幅(%)
|
|
|
|
|
|
|
|
|
|
|
|
// 状态标记
|
|
|
|
|
|
isLimit Boolean @default(false) @map("is_limit") // 是否涨停
|
|
|
|
|
|
isDrop Boolean @default(false) @map("is_drop") // 是否跌停
|
|
|
|
|
|
|
|
|
|
|
|
// 关联的多周期涨跌幅
|
|
|
|
|
|
returns StockReturn[]
|
|
|
|
|
|
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([stockCode, tradeDay])
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([tradeDay])
|
|
|
|
|
|
@@index([stockCode, tradeDay])
|
|
|
|
|
|
@@map("stock_daily_quotes")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 股票多周期涨跌幅表(计算数据)
|
|
|
|
|
|
model StockReturn {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
quoteId Int @map("quote_id")
|
|
|
|
|
|
quote StockDailyQuote @relation(fields: [quoteId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
tradeDay DateTime @map("trade_day") @db.Date
|
|
|
|
|
|
|
|
|
|
|
|
// 多周期涨跌幅
|
|
|
|
|
|
period Int // 周期(1,3,5,10,15,20,30,60)
|
|
|
|
|
|
returnRate Float @map("return_rate") // 涨跌幅(%)
|
|
|
|
|
|
|
|
|
|
|
|
// 计算来源
|
|
|
|
|
|
basePrice Float @map("base_price") // 基准价格(N日前收盘价)
|
|
|
|
|
|
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([stockCode, tradeDay, period])
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([tradeDay])
|
|
|
|
|
|
@@index([period])
|
|
|
|
|
|
@@index([stockCode, tradeDay])
|
|
|
|
|
|
@@map("stock_returns")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 涨停跌停记录表
|
|
|
|
|
|
model StockLimit {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
stock StockBasic @relation(fields: [stockCode], references: [code], onDelete: Cascade)
|
|
|
|
|
|
tradeDay DateTime @map("trade_day") @db.Date
|
|
|
|
|
|
blemind2 String? @map("blemind2")
|
|
|
|
|
|
|
|
|
|
|
|
isLimit Boolean @default(false) @map("is_limit") // 是否涨停
|
|
|
|
|
|
isDrop Boolean @default(false) @map("is_drop") // 是否跌停
|
|
|
|
|
|
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([stockCode, tradeDay])
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([tradeDay])
|
|
|
|
|
|
@@index([blemind2])
|
|
|
|
|
|
@@map("stock_limits")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 新高新低记录表
|
|
|
|
|
|
model StockNewRecord {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
stock StockBasic @relation(fields: [stockCode], references: [code], onDelete: Cascade)
|
|
|
|
|
|
tradeDay DateTime @map("trade_day") @db.Date
|
|
|
|
|
|
blemind2 String? @map("blemind2")
|
|
|
|
|
|
|
|
|
|
|
|
isHigh Boolean @default(false) @map("is_high") // 是否300天新高
|
|
|
|
|
|
isLow Boolean @default(false) @map("is_low") // 是否300天新低
|
|
|
|
|
|
daysToHigh Int @default(0) @map("days_to_high") // 距离前高天数
|
|
|
|
|
|
daysToLow Int @default(0) @map("days_to_low") // 距离前低天数
|
|
|
|
|
|
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([stockCode, tradeDay])
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([tradeDay])
|
|
|
|
|
|
@@index([blemind2])
|
|
|
|
|
|
@@map("stock_new_records")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
// 动量计算结果表
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
|
|
|
|
|
|
// 动量个股表(计算结果)
|
|
|
|
|
|
model StockMomentum {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
stock StockBasic @relation(fields: [stockCode], references: [code], onDelete: Cascade)
|
|
|
|
|
|
tradeDay DateTime @map("trade_day") @db.Date
|
|
|
|
|
|
|
|
|
|
|
|
// 动量排名信息
|
|
|
|
|
|
sort Int // 排名
|
|
|
|
|
|
type Int // 动量数据类型(1,3,5,10,15,20,30,60日)
|
|
|
|
|
|
|
|
|
|
|
|
// 股票基本信息(冗余存储,便于查询)
|
|
|
|
|
|
name String?
|
|
|
|
|
|
blemind2 String? @map("blemind2")
|
|
|
|
|
|
blemind3 String? @map("blemind3")
|
|
|
|
|
|
|
|
|
|
|
|
// 价格数据
|
|
|
|
|
|
open Float? // 开盘价
|
|
|
|
|
|
close Float? // 收盘价
|
|
|
|
|
|
differrange Float? @map("differrange") // 当日涨跌幅
|
|
|
|
|
|
|
|
|
|
|
|
// 多周期涨跌幅
|
|
|
|
|
|
differrange10 Float? @map("differrange10")
|
|
|
|
|
|
differrange20 Float? @map("differrange20")
|
|
|
|
|
|
differrange60 Float? @map("differrange60")
|
|
|
|
|
|
|
|
|
|
|
|
// 最大回撤
|
|
|
|
|
|
backdifferrange10 Float? @map("backdifferrange10")
|
|
|
|
|
|
backdifferrange20 Float? @map("backdifferrange20")
|
|
|
|
|
|
backdifferrange60 Float? @map("backdifferrange60")
|
|
|
|
|
|
|
|
|
|
|
|
// 筛选条件(记录当时的数据)
|
|
|
|
|
|
tradeDays Int? @map("trade_days") // 上市天数
|
|
|
|
|
|
agenciesHold Float? @map("agencies_hold") // 机构持股比例
|
|
|
|
|
|
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([stockCode, tradeDay, type])
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([tradeDay])
|
|
|
|
|
|
@@index([type])
|
|
|
|
|
|
@@index([tradeDay, type])
|
|
|
|
|
|
@@index([blemind2, tradeDay, type])
|
|
|
|
|
|
@@index([sort])
|
|
|
|
|
|
@@map("stock_momentum")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 板块动量结果表
|
|
|
|
|
|
model SectorMomentum {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
tradeDay DateTime @map("trade_day") @db.Date
|
|
|
|
|
|
|
|
|
|
|
|
blemind2 String @map("blemind2") // 所属东财行业指数2级
|
|
|
|
|
|
|
|
|
|
|
|
// 动量计算结果
|
|
|
|
|
|
stocksCount Int @map("stocks_count") // 动量个股数量
|
|
|
|
|
|
totalStocks Int @map("total_stocks") // 板块总个股数
|
|
|
|
|
|
trendValue Float @map("trend_value") // 动量值 = (stocksCount^2) / totalStocks
|
|
|
|
|
|
trendValueChange Float? @map("trend_value_change") // 动量值变化
|
|
|
|
|
|
|
|
|
|
|
|
// 排名信息
|
|
|
|
|
|
sort Int // 板块排名
|
|
|
|
|
|
sortChange Int @map("sort_change") // 板块排名变化
|
|
|
|
|
|
|
|
|
|
|
|
// 动量类型
|
|
|
|
|
|
type Int // 动量数据类型(1,3,5,10,15,20,30,60日)
|
|
|
|
|
|
|
|
|
|
|
|
// 昨日数据快照(用于计算变化)
|
|
|
|
|
|
lastTrendValue Float? @map("last_trend_value")
|
|
|
|
|
|
lastSort Int? @map("last_sort")
|
|
|
|
|
|
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([tradeDay, blemind2, type])
|
|
|
|
|
|
@@index([tradeDay])
|
|
|
|
|
|
@@index([blemind2])
|
|
|
|
|
|
@@index([type])
|
|
|
|
|
|
@@index([tradeDay, type])
|
|
|
|
|
|
@@index([sort])
|
|
|
|
|
|
@@map("sector_momentum")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
// 系统配置和任务表
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
|
|
|
|
|
|
// 数据同步任务记录
|
|
|
|
|
|
model DataSyncTask {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
taskType String @map("task_type") // 任务类型(daily_quote/momentum/etc)
|
|
|
|
|
|
tradeDay DateTime? @map("trade_day") @db.Date
|
|
|
|
|
|
status String // pending/running/completed/failed
|
|
|
|
|
|
startTime DateTime? @map("start_time")
|
|
|
|
|
|
endTime DateTime? @map("end_time")
|
|
|
|
|
|
message String? // 执行信息/错误信息
|
|
|
|
|
|
recordCount Int? @map("record_count") // 处理记录数
|
|
|
|
|
|
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@index([taskType])
|
|
|
|
|
|
@@index([status])
|
|
|
|
|
|
@@index([tradeDay])
|
|
|
|
|
|
@@map("data_sync_tasks")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
// 保留原有表(保持兼容性)
|
|
|
|
|
|
// ============================================
|
|
|
|
|
|
|
|
|
|
|
|
// 市场指数
|
|
|
|
|
|
model MarketIndex {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
name String @unique
|
|
|
|
|
|
code String @unique
|
|
|
|
|
|
current Float
|
|
|
|
|
|
change Float
|
|
|
|
|
|
changePercent Float
|
|
|
|
|
|
volume BigInt
|
|
|
|
|
|
turnover BigInt
|
|
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
|
|
|
|
|
|
|
|
@@index([code])
|
|
|
|
|
|
@@map("market_indices")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 版块信息(系统板块)- 保留原表名
|
|
|
|
|
|
model Sector {
|
|
|
|
|
|
id String @id @default(uuid())
|
|
|
|
|
|
name String @unique
|
|
|
|
|
|
code String @unique
|
|
|
|
|
|
stocks Stock[]
|
|
|
|
|
|
quotes SectorQuote[]
|
|
|
|
|
|
klines SectorKLine[]
|
|
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
|
|
|
|
|
|
|
|
@@index([code])
|
|
|
|
|
|
@@map("sectors")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 版块行情(兼容原表)
|
|
|
|
|
|
model SectorQuote {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
sectorCode String @map("sector_code")
|
|
|
|
|
|
sector Sector @relation(fields: [sectorCode], references: [code])
|
|
|
|
|
|
current Float
|
|
|
|
|
|
change Float
|
|
|
|
|
|
changePercent Float
|
|
|
|
|
|
volume BigInt
|
|
|
|
|
|
turnover BigInt
|
|
|
|
|
|
momentumScore Float @default(50)
|
|
|
|
|
|
rank Int @default(0)
|
|
|
|
|
|
previousRank Int @default(0) @map("previous_rank")
|
|
|
|
|
|
quoteTime DateTime @map("quote_time")
|
|
|
|
|
|
|
|
|
|
|
|
@@index([sectorCode])
|
|
|
|
|
|
@@index([quoteTime])
|
|
|
|
|
|
@@map("sector_quotes")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 版块K线数据(兼容原表)
|
|
|
|
|
|
model SectorKLine {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
sectorCode String @map("sector_code")
|
|
|
|
|
|
sector Sector @relation(fields: [sectorCode], references: [code])
|
|
|
|
|
|
period String // day/week/month
|
|
|
|
|
|
date DateTime
|
|
|
|
|
|
open Float
|
|
|
|
|
|
high Float
|
|
|
|
|
|
low Float
|
|
|
|
|
|
close Float
|
|
|
|
|
|
volume BigInt
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([sectorCode, period, date])
|
|
|
|
|
|
@@index([sectorCode])
|
|
|
|
|
|
@@index([date])
|
|
|
|
|
|
@@map("sector_klines")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 股票信息(兼容原表)
|
|
|
|
|
|
model Stock {
|
|
|
|
|
|
id String @id @default(uuid())
|
|
|
|
|
|
code String @unique
|
|
|
|
|
|
name String
|
|
|
|
|
|
sectorCode String? @map("sector_code")
|
|
|
|
|
|
sector Sector? @relation(fields: [sectorCode], references: [code])
|
|
|
|
|
|
marketCap BigInt? @map("market_cap")
|
|
|
|
|
|
pe Float?
|
|
|
|
|
|
pb Float?
|
|
|
|
|
|
quotes StockQuote[]
|
|
|
|
|
|
klines StockKLine[]
|
|
|
|
|
|
favorites UserFavorite[]
|
|
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
|
|
|
|
|
|
|
|
@@index([code])
|
|
|
|
|
|
@@index([sectorCode])
|
|
|
|
|
|
@@map("stocks")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 股票行情(兼容原表)
|
|
|
|
|
|
model StockQuote {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
stock Stock @relation(fields: [stockCode], references: [code])
|
|
|
|
|
|
price Float
|
|
|
|
|
|
open Float
|
|
|
|
|
|
high Float
|
|
|
|
|
|
low Float
|
|
|
|
|
|
preClose Float @map("pre_close")
|
|
|
|
|
|
volume BigInt
|
|
|
|
|
|
turnover BigInt
|
|
|
|
|
|
changePercent Float @map("change_percent")
|
|
|
|
|
|
turnoverRate Float? @map("turnover_rate")
|
|
|
|
|
|
amplitude Float?
|
|
|
|
|
|
quoteTime DateTime @map("quote_time")
|
|
|
|
|
|
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([quoteTime])
|
|
|
|
|
|
@@map("stock_quotes")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 股票K线数据(兼容原表)
|
|
|
|
|
|
model StockKLine {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
stock Stock @relation(fields: [stockCode], references: [code])
|
|
|
|
|
|
period String // day/week/month
|
|
|
|
|
|
date DateTime
|
|
|
|
|
|
open Float
|
|
|
|
|
|
high Float
|
|
|
|
|
|
low Float
|
|
|
|
|
|
close Float
|
|
|
|
|
|
volume BigInt
|
|
|
|
|
|
ma5 Float?
|
|
|
|
|
|
ma10 Float?
|
|
|
|
|
|
ma20 Float?
|
|
|
|
|
|
ma30 Float?
|
|
|
|
|
|
ma60 Float?
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([stockCode, period, date])
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([date])
|
|
|
|
|
|
@@map("stock_klines")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 用户
|
|
|
|
|
|
model User {
|
|
|
|
|
|
id String @id @default(uuid())
|
|
|
|
|
|
username String @unique
|
|
|
|
|
|
email String @unique
|
|
|
|
|
|
password String
|
|
|
|
|
|
favorites UserFavorite[]
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
updatedAt DateTime @updatedAt @map("updated_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@map("users")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 用户自选股
|
|
|
|
|
|
model UserFavorite {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
userId String @map("user_id")
|
|
|
|
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
stock Stock @relation(fields: [stockCode], references: [code])
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([userId, stockCode])
|
|
|
|
|
|
@@index([userId])
|
|
|
|
|
|
@@map("user_favorites")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 新高新低股票记录(保留原表兼容性)
|
|
|
|
|
|
model HighLowStock {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
type String // high/low
|
|
|
|
|
|
price Float
|
|
|
|
|
|
date DateTime
|
|
|
|
|
|
daysToHighLow Int @map("days_to_highlow")
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([type])
|
|
|
|
|
|
@@index([date])
|
|
|
|
|
|
@@map("high_low_stocks")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 动量股票推荐(保留原表兼容性)
|
|
|
|
|
|
model MomentumStock {
|
|
|
|
|
|
id Int @id @default(autoincrement())
|
|
|
|
|
|
stockCode String @map("stock_code")
|
|
|
|
|
|
momentumScore Float @map("momentum_score")
|
|
|
|
|
|
tags String? // JSON array
|
|
|
|
|
|
volumeRatio Float @map("volume_ratio")
|
|
|
|
|
|
breakThrough Boolean @default(false) @map("break_through")
|
|
|
|
|
|
date DateTime
|
|
|
|
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
|
|
|
|
|
|
|
|
|
|
@@unique([stockCode, date])
|
|
|
|
|
|
@@index([stockCode])
|
|
|
|
|
|
@@index([date])
|
|
|
|
|
|
@@map("momentum_stocks")
|
|
|
|
|
|
}
|