import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function main() { console.log('Start seeding...'); // 创建版块数据 const sectors = [ { name: '半导体', code: '880491' }, { name: '新能源', code: '880952' }, { name: '医药生物', code: '880122' }, { name: '白酒', code: '880381' }, { name: '银行', code: '880471' }, { name: '证券', code: '880472' }, { name: '保险', code: '880473' }, { name: '房地产', code: '880482' }, { name: '汽车', code: '880391' }, { name: '电子', code: '880494' }, { name: '计算机', code: '880952' }, { name: '通信', code: '880495' }, { name: '传媒', code: '880952' }, { name: '军工', code: '880954' }, { name: '有色金属', code: '880324' }, { name: '钢铁', code: '880318' }, { name: '煤炭', code: '880952' }, { name: '化工', code: '880336' }, { name: '建筑材料', code: '880344' }, { name: '机械设备', code: '880952' }, ]; for (const sector of sectors) { await prisma.sector.upsert({ where: { code: sector.code }, update: {}, create: sector, }); } console.log(`Created ${sectors.length} sectors`); // 创建市场指数 const indices = [ { name: '上证指数', code: '000001', current: 3050.32, change: 15.23, changePercent: 0.5, volume: BigInt(450000000), turnover: BigInt(4200000000), sortOrder: 1 }, { name: '深证成指', code: '399001', current: 9850.15, change: -25.6, changePercent: -0.26, volume: BigInt(520000000), turnover: BigInt(5100000000), sortOrder: 2 }, { name: '创业板指', code: '399006', current: 1950.45, change: 8.75, changePercent: 0.45, volume: BigInt(180000000), turnover: BigInt(2100000000), sortOrder: 3 }, { name: '科创50', code: '000688', current: 850.32, change: -5.23, changePercent: -0.61, volume: BigInt(65000000), turnover: BigInt(950000000), sortOrder: 4 }, ]; for (const index of indices) { await prisma.marketIndex.upsert({ where: { code: index.code }, update: {}, create: index, }); } console.log(`Created ${indices.length} market indices`); // 创建示例股票数据 const stocks = [ { code: '000001', name: '平安银行', sectorCode: '880471' }, { code: '000002', name: '万科A', sectorCode: '880482' }, { code: '000063', name: '中兴通讯', sectorCode: '880495' }, { code: '000100', name: 'TCL科技', sectorCode: '880494' }, { code: '000333', name: '美的集团', sectorCode: '880952' }, { code: '000568', name: '泸州老窖', sectorCode: '880381' }, { code: '000651', name: '格力电器', sectorCode: '880952' }, { code: '000725', name: '京东方A', sectorCode: '880494' }, { code: '000768', name: '中航西飞', sectorCode: '880954' }, { code: '000858', name: '五粮液', sectorCode: '880381' }, { code: '600000', name: '浦发银行', sectorCode: '880471' }, { code: '600009', name: '上海机场', sectorCode: '880952' }, { code: '600016', name: '民生银行', sectorCode: '880471' }, { code: '600028', name: '中国石化', sectorCode: '880952' }, { code: '600030', name: '中信证券', sectorCode: '880472' }, { code: '600031', name: '三一重工', sectorCode: '880952' }, { code: '600036', name: '招商银行', sectorCode: '880471' }, { code: '600048', name: '保利发展', sectorCode: '880482' }, { code: '600050', name: '中国联通', sectorCode: '880495' }, { code: '600104', name: '上汽集团', sectorCode: '880391' }, { code: '600196', name: '复星医药', sectorCode: '880122' }, { code: '600276', name: '恒瑞医药', sectorCode: '880122' }, { code: '600309', name: '万华化学', sectorCode: '880336' }, { code: '600519', name: '贵州茅台', sectorCode: '880381' }, { code: '600900', name: '长江电力', sectorCode: '880952' }, { code: '601012', name: '隆基绿能', sectorCode: '880952' }, { code: '601088', name: '中国神华', sectorCode: '880952' }, { code: '601166', name: '兴业银行', sectorCode: '880471' }, { code: '601288', name: '农业银行', sectorCode: '880471' }, { code: '601318', name: '中国平安', sectorCode: '880473' }, { code: '601398', name: '工商银行', sectorCode: '880471' }, { code: '601888', name: '中国中免', sectorCode: '880952' }, { code: '603288', name: '海天味业', sectorCode: '880952' }, { code: '688981', name: '中芯国际', sectorCode: '880491' }, ]; for (const stock of stocks) { await prisma.stock.upsert({ where: { code: stock.code }, update: {}, create: { ...stock, marketCap: BigInt(Math.floor(Math.random() * 1000000000000) + 10000000000), pe: Number((Math.random() * 50 + 5).toFixed(2)), pb: Number((Math.random() * 10 + 0.5).toFixed(2)), }, }); } console.log(`Created ${stocks.length} stocks`); console.log('Seeding finished'); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });