- 重构数据访问层:引入DAO模式,支持MySQL/SQLite双数据库 - 新增数据库架构:完整的股票数据、AI分析、自选股管理表结构 - 升级AI分析服务:集成豆包大模型,支持多维度分析 - 优化API路由:分离市场数据API,提供更清晰的接口设计 - 完善项目文档:添加数据库迁移指南、新功能指南等 - 清理冗余文件:删除旧的缓存文件和无用配置 - 新增调度器:支持定时任务和数据自动更新 - 改进前端模板:简化的股票展示页面 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
128 lines
4.6 KiB
SQL
128 lines
4.6 KiB
SQL
-- Stock Monitor Database Schema
|
|
-- Database: stock_monitor
|
|
|
|
-- 1. Stocks table
|
|
CREATE TABLE IF NOT EXISTS stocks (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
stock_code VARCHAR(10) NOT NULL UNIQUE,
|
|
stock_name VARCHAR(50) NOT NULL,
|
|
market VARCHAR(10) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_stock_code (stock_code)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 2. Stock data table
|
|
CREATE TABLE IF NOT EXISTS stock_data (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
stock_code VARCHAR(10) NOT NULL,
|
|
data_date DATE NOT NULL,
|
|
|
|
-- Basic info
|
|
price DECIMAL(10,3) DEFAULT NULL,
|
|
change_percent DECIMAL(8,4) DEFAULT NULL,
|
|
market_value DECIMAL(12,3) DEFAULT NULL,
|
|
|
|
-- Valuation metrics
|
|
pe_ratio DECIMAL(8,4) DEFAULT NULL,
|
|
pb_ratio DECIMAL(8,4) DEFAULT NULL,
|
|
ps_ratio DECIMAL(8,4) DEFAULT NULL,
|
|
dividend_yield DECIMAL(8,4) DEFAULT NULL,
|
|
|
|
-- Financial metrics
|
|
roe DECIMAL(8,4) DEFAULT NULL,
|
|
gross_profit_margin DECIMAL(8,4) DEFAULT NULL,
|
|
net_profit_margin DECIMAL(8,4) DEFAULT NULL,
|
|
debt_to_assets DECIMAL(8,4) DEFAULT NULL,
|
|
revenue_yoy DECIMAL(8,4) DEFAULT NULL,
|
|
net_profit_yoy DECIMAL(8,4) DEFAULT NULL,
|
|
bps DECIMAL(8,4) DEFAULT NULL,
|
|
ocfps DECIMAL(8,4) DEFAULT NULL,
|
|
|
|
-- Metadata
|
|
from_cache BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
UNIQUE KEY uk_stock_date (stock_code, data_date),
|
|
INDEX idx_stock_code (stock_code),
|
|
INDEX idx_data_date (data_date),
|
|
FOREIGN KEY (stock_code) REFERENCES stocks(stock_code) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 3. Watchlist table
|
|
CREATE TABLE IF NOT EXISTS watchlist (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
stock_code VARCHAR(10) NOT NULL,
|
|
target_market_value_min DECIMAL(12,3) DEFAULT NULL,
|
|
target_market_value_max DECIMAL(12,3) DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
UNIQUE KEY uk_stock_code (stock_code),
|
|
FOREIGN KEY (stock_code) REFERENCES stocks(stock_code) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 4. AI Analysis table
|
|
CREATE TABLE IF NOT EXISTS ai_analysis (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
stock_code VARCHAR(10) NOT NULL,
|
|
analysis_type VARCHAR(20) NOT NULL,
|
|
analysis_date DATE NOT NULL,
|
|
|
|
-- Investment suggestions
|
|
investment_summary TEXT,
|
|
investment_action TEXT,
|
|
investment_key_points JSON,
|
|
|
|
-- Detailed analysis
|
|
valuation_analysis TEXT,
|
|
financial_analysis TEXT,
|
|
growth_analysis TEXT,
|
|
risk_analysis TEXT,
|
|
|
|
-- Price analysis
|
|
reasonable_price_min DECIMAL(10,3) DEFAULT NULL,
|
|
reasonable_price_max DECIMAL(10,3) DEFAULT NULL,
|
|
target_market_value_min DECIMAL(12,3) DEFAULT NULL,
|
|
target_market_value_max DECIMAL(12,3) DEFAULT NULL,
|
|
|
|
-- Metadata
|
|
from_cache BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
UNIQUE KEY uk_stock_type_date (stock_code, analysis_type, analysis_date),
|
|
INDEX idx_stock_code (stock_code),
|
|
INDEX idx_analysis_type (analysis_type),
|
|
INDEX idx_analysis_date (analysis_date),
|
|
FOREIGN KEY (stock_code) REFERENCES stocks(stock_code) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 5. System config table
|
|
CREATE TABLE IF NOT EXISTS system_config (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
config_key VARCHAR(50) NOT NULL UNIQUE,
|
|
config_value TEXT,
|
|
config_type VARCHAR(20) DEFAULT 'string',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
INDEX idx_config_key (config_key)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 6. Data update log table
|
|
CREATE TABLE IF NOT EXISTS data_update_log (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
data_type VARCHAR(20) NOT NULL,
|
|
stock_code VARCHAR(10) DEFAULT NULL,
|
|
update_status ENUM('success', 'failed', 'partial') NOT NULL,
|
|
update_message TEXT,
|
|
execution_time DECIMAL(8,3) DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
INDEX idx_data_type (data_type),
|
|
INDEX idx_stock_code (stock_code),
|
|
INDEX idx_update_status (update_status),
|
|
INDEX idx_created_at (created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; |