diff --git a/.gitignore b/.gitignore index fe70846..a683084 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,9 @@ # 依赖目录 (如果使用 vendor 模式) # vendor/ -config.yaml \ No newline at end of file + +# 本地运行配置,包含数据库账号密码,不提交到仓库 +/config.yaml +/config.yml +/config/config.yaml +/config/config.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..850cd6d --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# level + +## 本地配置 + +服务启动时会读取项目根目录的 `config.yaml`,也兼容读取 `config/config.yaml`。该文件包含数据库账号密码,已加入 `.gitignore`,不要提交到 Git 仓库。 + +配置格式如下: + +```yaml +database: + user: "your_mysql_user" + password: "your_mysql_password" + host: "localhost" + port: 3306 + dbname: "level" + charset: "utf8mb4" + collation: "utf8mb4_unicode_ci" + +server: + port: 18080 +``` + +如果 `config.yaml` 已经被远程仓库跟踪过,仅添加 `.gitignore` 不会自动停止跟踪,需要执行: + +```bash +git rm --cached config.yaml +git commit -m "chore: stop tracking local config" +``` + +这只会从 Git 索引中移除配置文件,本地文件仍会保留。若远程历史里已经包含真实密码,需要同时更换相关密码;如需彻底清理 Git 历史,可再用 `git filter-repo` 或 BFG 处理。 + +## 数据库 DDL + +当前代码使用的表结构保存在 `database/ddl/current_tables.sql`。这些表包括: + +- `trade_calendar` +- `stock_daily` +- `stock_basic` +- `limit_list_d` +- `stock_limit_combined_data` + +该文件由本地 `level` 库执行 `SHOW CREATE TABLE` 导出。 diff --git a/config.yaml b/config.yaml deleted file mode 100644 index 47d78c0..0000000 --- a/config.yaml +++ /dev/null @@ -1,22 +0,0 @@ -## 阿里云数据库 -#database: -# user: "yangfan" -# password: "aA%8023321088" -# host: "8.159.129.156" -# port: 10836 -# dbname: "level" -# charset: "utf8mb4" -# collation: "utf8mb4_unicode_ci" - -# 本地数据库 -database: - user: "yangfan" - password: "admin" - host: "localhost" - port: 3306 - dbname: "level" - charset: "utf8mb4" - collation: "utf8mb4_unicode_ci" - -server: - port: 18080 diff --git a/database/ddl/current_tables.sql b/database/ddl/current_tables.sql new file mode 100644 index 0000000..636f56a --- /dev/null +++ b/database/ddl/current_tables.sql @@ -0,0 +1,114 @@ +-- DDL exported from local MySQL with SHOW CREATE TABLE. +-- Database: level + +CREATE TABLE `trade_calendar` ( + `cal_date` date NOT NULL, + `exchange` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL, + `is_open` tinyint DEFAULT NULL, + `pretrade_date` date DEFAULT NULL, + PRIMARY KEY (`cal_date`,`exchange`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE `stock_daily` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `ts_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, + `symbol` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL, + `trade_date` date NOT NULL, + `open` decimal(16,4) DEFAULT NULL, + `high` decimal(16,4) DEFAULT NULL, + `low` decimal(16,4) DEFAULT NULL, + `close` decimal(16,4) DEFAULT NULL, + `pre_close` decimal(16,4) DEFAULT NULL, + `change_val` decimal(16,4) DEFAULT NULL, + `pct_chg` decimal(10,4) DEFAULT NULL, + `vol` bigint DEFAULT NULL, + `amount` bigint DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uniq_code_date` (`ts_code`,`trade_date`) +) ENGINE=InnoDB AUTO_INCREMENT=9372644 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE `stock_basic` ( + `ts_code` text COLLATE utf8mb4_unicode_ci, + `symbol` text COLLATE utf8mb4_unicode_ci, + `name` text COLLATE utf8mb4_unicode_ci, + `area` text COLLATE utf8mb4_unicode_ci, + `industry` text COLLATE utf8mb4_unicode_ci, + `fullname` text COLLATE utf8mb4_unicode_ci, + `enname` text COLLATE utf8mb4_unicode_ci, + `cnspell` text COLLATE utf8mb4_unicode_ci, + `market` text COLLATE utf8mb4_unicode_ci, + `exchange` text COLLATE utf8mb4_unicode_ci, + `curr_type` text COLLATE utf8mb4_unicode_ci, + `list_status` text COLLATE utf8mb4_unicode_ci, + `list_date` text COLLATE utf8mb4_unicode_ci, + `delist_date` text COLLATE utf8mb4_unicode_ci, + `is_hs` text COLLATE utf8mb4_unicode_ci, + `act_name` text COLLATE utf8mb4_unicode_ci, + `act_ent_type` text COLLATE utf8mb4_unicode_ci +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE `limit_list_d` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `trade_date` date NOT NULL COMMENT '交易日期', + `ts_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '股票代码', + `industry` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '所属行业', + `name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '股票名称', + `close` decimal(16,4) DEFAULT NULL COMMENT '收盘价', + `pct_chg` decimal(10,4) DEFAULT NULL COMMENT '涨跌幅', + `amount` decimal(24,4) DEFAULT NULL COMMENT '成交额', + `limit_amount` decimal(24,4) DEFAULT NULL COMMENT '板上成交金额', + `float_mv` decimal(24,4) DEFAULT NULL COMMENT '流通市值', + `total_mv` decimal(24,4) DEFAULT NULL COMMENT '总市值', + `turnover_ratio` decimal(10,4) DEFAULT NULL COMMENT '换手率', + `fd_amount` decimal(24,4) DEFAULT NULL COMMENT '封单金额', + `first_time` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '首次封板时间', + `last_time` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最后封板时间', + `open_times` int DEFAULT NULL COMMENT '打开次数', + `up_stat` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '涨停统计', + `limit_times` int DEFAULT NULL COMMENT '连板数', + `limit` varchar(1) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'D跌停 U涨停 Z炸板', + PRIMARY KEY (`id`), + UNIQUE KEY `uniq_trade_code_limit` (`trade_date`,`ts_code`,`limit`), + KEY `idx_trade_date` (`trade_date`), + KEY `idx_ts_code` (`ts_code`), + KEY `idx_limit` (`limit`) +) ENGINE=InnoDB AUTO_INCREMENT=154380 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE `stock_limit_combined_data` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `trade_date` date NOT NULL COMMENT '交易日期', + `symbol` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '股票代码,以stock_daily为准', + `ts_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'TS股票代码,以stock_daily为准', + `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '股票名称,以stock_daily关联基础表为准', + `final_status` tinyint NOT NULL COMMENT '融合状态:1-涨停,2-炸板', + `source_count` int NOT NULL DEFAULT '0' COMMENT '命中的数据源数量', + `source_flags` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '命中的数据源:calc,tushare', + `calc_status` tinyint DEFAULT NULL COMMENT '本地行情计算状态:1-涨停,2-炸板', + `calc_limit_price` decimal(16,4) DEFAULT NULL COMMENT '本地行情计算涨停价', + `calc_high` decimal(16,4) DEFAULT NULL COMMENT 'stock_daily最高价', + `calc_close` decimal(16,4) DEFAULT NULL COMMENT 'stock_daily收盘价', + `calc_pre_close` decimal(16,4) DEFAULT NULL COMMENT 'stock_daily前收盘价', + `calc_vol` bigint DEFAULT NULL COMMENT 'stock_daily成交量', + `market` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '所属板块', + `tushare_limit_type` varchar(1) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tushare-D跌停U涨停Z炸板', + `tushare_industry` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tushare-所属行业', + `tushare_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tushare-名称', + `tushare_close` decimal(16,4) DEFAULT NULL COMMENT 'Tushare-收盘价', + `tushare_pct_chg` decimal(10,4) DEFAULT NULL COMMENT 'Tushare-涨跌幅', + `tushare_amount` decimal(24,4) DEFAULT NULL COMMENT 'Tushare-成交额', + `tushare_limit_amount` decimal(24,4) DEFAULT NULL COMMENT 'Tushare-板上成交金额', + `tushare_float_mv` decimal(24,4) DEFAULT NULL COMMENT 'Tushare-流通市值', + `tushare_total_mv` decimal(24,4) DEFAULT NULL COMMENT 'Tushare-总市值', + `tushare_turnover_ratio` decimal(10,4) DEFAULT NULL COMMENT 'Tushare-换手率', + `tushare_fd_amount` decimal(24,4) DEFAULT NULL COMMENT 'Tushare-封单金额', + `tushare_first_time` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tushare-首次封板时间', + `tushare_last_time` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tushare-最后封板时间', + `tushare_open_times` int DEFAULT NULL COMMENT 'Tushare-炸板/开板次数', + `tushare_up_stat` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tushare-涨停统计', + `tushare_limit_times` int DEFAULT NULL COMMENT 'Tushare-连板数', + PRIMARY KEY (`id`), + UNIQUE KEY `uniq_date_code` (`trade_date`,`ts_code`), + KEY `idx_trade_date` (`trade_date`), + KEY `idx_symbol` (`symbol`), + KEY `idx_trade_date_status` (`trade_date`,`final_status`) +) ENGINE=InnoDB AUTO_INCREMENT=167035 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;