data-collector fixed

This commit is contained in:
2025-06-21 08:46:45 +08:00
parent 2e6603e29a
commit b52a9befee
28 changed files with 4097 additions and 57 deletions

View File

@@ -1,17 +1,357 @@
2025-06-04 18:03:49,612 - INFO - 数据库连接成功
2025-06-04 18:03:49,613 - INFO - 股票数据采集器启动
2025-06-04 18:03:49,613 - INFO - 定时任务已启动,每 5 分钟采集一次
2025-06-04 18:03:49,613 - INFO - 开始执行股票数据采集...image.png
2025-06-04 18:03:49,706 - INFO - 成功获取股票 sz300630 数据: 普利退
2025-06-04 18:03:50,248 - INFO - 成功获取股票 sh600998 数据: 九州通
2025-06-04 18:03:50,791 - INFO - 成功获取股票 sh600371 数据: 万向德
2025-06-04 18:03:51,331 - INFO - 成功获取股票 sz000876 数据: 新 希 望
2025-06-04 18:03:51,873 - INFO - 成功获取股票 sz002714 数据: 牧原股份
2025-06-04 18:03:52,414 - INFO - 成功获取股票 sh600519 数据: 贵州茅台
2025-06-04 18:03:52,956 - INFO - 成功获取股票 sz000858 数据: 五 粮 液
2025-06-04 18:03:53,498 - INFO - 成功获取股票 sh600887 数据: 伊利股份
2025-06-04 18:03:54,038 - INFO - 成功获取股票 sz002304 数据: 洋河股份
2025-06-04 18:03:54,580 - INFO - 成功获取股票 sh600036 数据: 招商银行
2025-06-04 18:03:55,081 - INFO - 本次采集完成,共获取 10 只股票数据
2025-06-04 18:03:55,106 - INFO - 成功保存 10 条股票数据到数据库
2025-06-04 18:03:55,106 - INFO - 数据采集完成,共处理 10 只股票
2025-06-18 08:46:19,433 - INFO - 数据库连接成功
2025-06-18 08:46:19,433 - INFO - 股票数据采集器启动
2025-06-18 08:46:19,434 - INFO - 定时任务已启动,每 5 分钟采集一次
2025-06-18 08:46:19,434 - INFO - 开始执行股票数据采集...
2025-06-18 08:46:19,537 - INFO - 成功获取股票 sz300189 数据: 神农种业
2025-06-18 08:46:20,127 - INFO - 成功获取股票 sz000713 数据: 丰乐种业
2025-06-18 08:46:20,719 - INFO - 成功获取股票 sh600313 数据: 农发种业
2025-06-18 08:46:21,393 - INFO - 成功获取股票 bj837403 数据: 康农种业
2025-06-18 08:46:22,105 - INFO - 成功获取股票 sz200505 数据: 京粮B
2025-06-18 08:46:22,754 - INFO - 成功获取股票 sz300268 数据: *ST佳沃
2025-06-18 08:46:23,483 - INFO - 成功获取股票 sz000930 数据: 中粮科技
2025-06-18 08:46:24,082 - INFO - 成功获取股票 sz002299 数据: 圣农发展
2025-06-18 08:46:24,703 - INFO - 成功获取股票 sh600371 数据: 万向德农
2025-06-18 08:46:25,297 - INFO - 成功获取股票 sh600598 数据: 北大荒
2025-06-18 08:46:25,902 - INFO - 成功获取股票 sh603609 数据: 禾丰股份
2025-06-18 08:46:26,508 - INFO - 成功获取股票 bj831087 数据: 秋乐种业
2025-06-18 08:46:27,113 - INFO - 成功获取股票 sh603363 数据: 傲农生物
2025-06-18 08:46:27,721 - INFO - 成功获取股票 sh603336 数据: 宏辉果蔬
2025-06-18 08:46:28,304 - INFO - 成功获取股票 sh600354 数据: 敦煌种业
2025-06-18 08:46:28,890 - INFO - 成功获取股票 sz002385 数据: 大北农
2025-06-18 08:46:29,466 - INFO - 成功获取股票 sz000048 数据: 京基智农
2025-06-18 08:46:30,061 - INFO - 成功获取股票 sh600251 数据: 冠农股份
2025-06-18 08:46:30,673 - INFO - 成功获取股票 sz002321 数据: 华英农业
2025-06-18 08:46:31,278 - INFO - 成功获取股票 sz000505 数据: 京粮控股
2025-06-18 08:46:31,875 - INFO - 成功获取股票 sz001366 数据: 播恩集团
2025-06-18 08:46:32,492 - INFO - 成功获取股票 sz002772 数据: 众兴菌业
2025-06-18 08:46:33,083 - INFO - 成功获取股票 sz002041 数据: 登海种业
2025-06-18 08:46:33,672 - INFO - 成功获取股票 sh600127 数据: 金健米业
2025-06-18 08:46:34,277 - INFO - 成功获取股票 sz002548 数据: 金新农
2025-06-18 08:46:34,865 - INFO - 成功获取股票 sh605296 数据: 神农集团
2025-06-18 08:46:35,464 - INFO - 成功获取股票 sh600359 数据: 新农开发
2025-06-18 08:46:36,062 - INFO - 成功获取股票 sh601952 数据: 苏垦农发
2025-06-18 08:46:36,661 - INFO - 成功获取股票 sh600975 数据: 新五丰
2025-06-18 08:46:37,270 - INFO - 成功获取股票 sz300505 数据: 川金诺
2025-06-18 08:46:37,859 - INFO - 成功获取股票 sh600141 数据: 兴发集团
2025-06-18 08:46:38,459 - INFO - 成功获取股票 sz000893 数据: 亚钾国际
2025-06-18 08:46:39,058 - INFO - 成功获取股票 sh600691 数据: 阳煤化工
2025-06-18 08:46:39,645 - INFO - 成功获取股票 sh600470 数据: 六国化工
2025-06-18 08:46:40,233 - INFO - 成功获取股票 sh000912 数据: 300消费
2025-06-18 08:46:40,839 - INFO - 成功获取股票 sz000408 数据: 藏格矿业
2025-06-18 08:46:41,437 - INFO - 成功获取股票 sz000902 数据: 新洋丰
2025-06-18 08:46:42,043 - INFO - 成功获取股票 sz002539 数据: 云图控股
2025-06-18 08:46:42,655 - INFO - 成功获取股票 sz002599 数据: 盛通股份
2025-06-18 08:46:43,236 - INFO - 成功获取股票 sz002545 数据: 东方铁塔
2025-06-18 08:46:43,847 - INFO - 成功获取股票 sz300387 数据: 富邦科技
2025-06-18 08:46:44,446 - INFO - 成功获取股票 sz002274 数据: 华昌化工
2025-06-18 08:46:45,050 - INFO - 成功获取股票 sz002470 数据: 金正大
2025-06-18 08:46:45,655 - INFO - 成功获取股票 sz002538 数据: 司尔特
2025-06-18 08:46:46,247 - INFO - 成功获取股票 sz000731 数据: 四川美丰
2025-06-18 08:46:46,834 - INFO - 成功获取股票 sh600078 数据: 澄星股份
2025-06-18 08:46:47,422 - INFO - 成功获取股票 sh600227 数据: 赤天化
2025-06-18 08:46:48,026 - INFO - 成功获取股票 sh603395 数据: 红四方
2025-06-18 08:46:48,628 - INFO - 成功获取股票 sz002588 数据: 史丹利
2025-06-18 08:46:49,206 - INFO - 成功获取股票 sz000422 数据: 湖北宜化
2025-06-18 08:46:49,787 - INFO - 成功获取股票 sz002556 数据: 辉隆股份
2025-06-18 08:46:50,401 - INFO - 成功获取股票 sz002312 数据: 川发龙蟒
2025-06-18 08:46:50,982 - INFO - 成功获取股票 sz002170 数据: 芭田股份
2025-06-18 08:46:51,597 - INFO - 成功获取股票 sz000792 数据: 盐湖股份
2025-06-18 08:46:52,201 - INFO - 成功获取股票 sh600096 数据: 云天化
2025-06-18 08:46:52,782 - INFO - 成功获取股票 sz001231 数据: 农心科技
2025-06-18 08:46:53,372 - INFO - 成功获取股票 sz002731 数据: 萃华珠宝
2025-06-18 08:46:53,979 - INFO - 成功获取股票 sz200553 数据: 安道麦B
2025-06-18 08:46:54,584 - INFO - 成功获取股票 sh603810 数据: 丰山集团
2025-06-18 08:46:55,183 - INFO - 成功获取股票 sh603970 数据: 中农立华
2025-06-18 08:46:55,800 - INFO - 成功获取股票 sz301035 数据: 润丰股份
2025-06-18 08:46:56,414 - INFO - 成功获取股票 sz002868 数据: *ST绿康
2025-06-18 08:46:57,026 - INFO - 成功获取股票 sz003042 数据: 中农联合
2025-06-18 08:46:57,619 - INFO - 成功获取股票 sz002391 数据: 长青股份
2025-06-18 08:46:58,222 - INFO - 成功获取股票 bj870866 数据: 绿亨科技
2025-06-18 08:46:58,805 - INFO - 成功获取股票 sz301665 数据: 泰禾股份
2025-06-18 08:46:59,412 - INFO - 成功获取股票 sh600486 数据: 扬农化工
2025-06-18 08:46:59,913 - INFO - 本次采集完成,共获取 67 只股票数据
2025-06-18 08:46:59,925 - INFO - 插入股票 sz300189 数据
2025-06-18 08:46:59,928 - INFO - 插入股票 sz000713 数据
2025-06-18 08:46:59,930 - INFO - 插入股票 sh600313 数据
2025-06-18 08:46:59,932 - INFO - 插入股票 bj837403 数据
2025-06-18 08:46:59,934 - INFO - 插入股票 sz200505 数据
2025-06-18 08:46:59,936 - INFO - 插入股票 sz300268 数据
2025-06-18 08:46:59,939 - INFO - 插入股票 sz000930 数据
2025-06-18 08:46:59,941 - INFO - 插入股票 sz002299 数据
2025-06-18 08:46:59,943 - INFO - 插入股票 sh600371 数据
2025-06-18 08:46:59,946 - INFO - 插入股票 sh600598 数据
2025-06-18 08:46:59,947 - INFO - 插入股票 sh603609 数据
2025-06-18 08:46:59,949 - INFO - 插入股票 bj831087 数据
2025-06-18 08:46:59,951 - INFO - 插入股票 sh603363 数据
2025-06-18 08:46:59,953 - INFO - 插入股票 sh603336 数据
2025-06-18 08:46:59,955 - INFO - 插入股票 sh600354 数据
2025-06-18 08:46:59,956 - INFO - 插入股票 sz002385 数据
2025-06-18 08:46:59,959 - INFO - 插入股票 sz000048 数据
2025-06-18 08:46:59,961 - INFO - 插入股票 sh600251 数据
2025-06-18 08:46:59,963 - INFO - 插入股票 sz002321 数据
2025-06-18 08:46:59,964 - INFO - 插入股票 sz000505 数据
2025-06-18 08:46:59,966 - INFO - 插入股票 sz001366 数据
2025-06-18 08:46:59,968 - INFO - 插入股票 sz002772 数据
2025-06-18 08:46:59,969 - INFO - 插入股票 sz002041 数据
2025-06-18 08:46:59,970 - INFO - 插入股票 sh600127 数据
2025-06-18 08:46:59,972 - INFO - 插入股票 sz002548 数据
2025-06-18 08:46:59,974 - INFO - 插入股票 sh605296 数据
2025-06-18 08:46:59,976 - INFO - 插入股票 sh600359 数据
2025-06-18 08:46:59,977 - INFO - 插入股票 sh601952 数据
2025-06-18 08:46:59,978 - INFO - 插入股票 sh600975 数据
2025-06-18 08:46:59,980 - INFO - 插入股票 sz300505 数据
2025-06-18 08:46:59,982 - INFO - 插入股票 sh600141 数据
2025-06-18 08:46:59,984 - INFO - 插入股票 sz000893 数据
2025-06-18 08:46:59,985 - INFO - 插入股票 sh600691 数据
2025-06-18 08:46:59,987 - INFO - 插入股票 sh600470 数据
2025-06-18 08:46:59,988 - INFO - 插入股票 sh000912 数据
2025-06-18 08:46:59,990 - INFO - 插入股票 sz000408 数据
2025-06-18 08:46:59,992 - INFO - 插入股票 sz000902 数据
2025-06-18 08:46:59,993 - INFO - 插入股票 sz002539 数据
2025-06-18 08:46:59,995 - INFO - 插入股票 sz002599 数据
2025-06-18 08:46:59,997 - INFO - 插入股票 sz002545 数据
2025-06-18 08:46:59,998 - INFO - 插入股票 sz300387 数据
2025-06-18 08:47:00,000 - INFO - 插入股票 sz002274 数据
2025-06-18 08:47:00,002 - INFO - 插入股票 sz002470 数据
2025-06-18 08:47:00,003 - INFO - 插入股票 sz002538 数据
2025-06-18 08:47:00,004 - INFO - 插入股票 sz000731 数据
2025-06-18 08:47:00,005 - INFO - 插入股票 sh600078 数据
2025-06-18 08:47:00,007 - INFO - 插入股票 sh600227 数据
2025-06-18 08:47:00,009 - INFO - 插入股票 sh603395 数据
2025-06-18 08:47:00,010 - INFO - 插入股票 sz002588 数据
2025-06-18 08:47:00,012 - INFO - 插入股票 sz000422 数据
2025-06-18 08:47:00,014 - INFO - 插入股票 sz002556 数据
2025-06-18 08:47:00,015 - INFO - 插入股票 sz002312 数据
2025-06-18 08:47:00,017 - INFO - 插入股票 sz002170 数据
2025-06-18 08:47:00,019 - INFO - 插入股票 sz000792 数据
2025-06-18 08:47:00,021 - INFO - 插入股票 sh600096 数据
2025-06-18 08:47:00,022 - INFO - 插入股票 sz001231 数据
2025-06-18 08:47:00,024 - INFO - 插入股票 sz002731 数据
2025-06-18 08:47:00,026 - INFO - 插入股票 sz200553 数据
2025-06-18 08:47:00,028 - INFO - 插入股票 sh603810 数据
2025-06-18 08:47:00,031 - INFO - 插入股票 sh603970 数据
2025-06-18 08:47:00,032 - INFO - 插入股票 sz301035 数据
2025-06-18 08:47:00,034 - INFO - 插入股票 sz002868 数据
2025-06-18 08:47:00,035 - INFO - 插入股票 sz003042 数据
2025-06-18 08:47:00,037 - INFO - 插入股票 sz002391 数据
2025-06-18 08:47:00,038 - INFO - 插入股票 bj870866 数据
2025-06-18 08:47:00,040 - INFO - 插入股票 sz301665 数据
2025-06-18 08:47:00,042 - INFO - 插入股票 sh600486 数据
2025-06-18 08:47:00,048 - INFO - 成功处理 67 条股票数据到数据库
2025-06-18 08:47:00,049 - INFO - 数据采集完成,共处理 67 只股票
2025-06-18 08:51:20,157 - INFO - 开始执行股票数据采集...
2025-06-18 08:51:20,278 - INFO - 成功获取股票 sz300189 数据: 神农种业
2025-06-18 08:51:20,886 - INFO - 成功获取股票 sz000713 数据: 丰乐种业
2025-06-18 08:51:21,481 - INFO - 成功获取股票 sh600313 数据: 农发种业
2025-06-18 08:51:22,094 - INFO - 成功获取股票 bj837403 数据: 康农种业
2025-06-18 08:51:22,722 - INFO - 成功获取股票 sz200505 数据: 京粮B
2025-06-18 08:51:23,375 - INFO - 成功获取股票 sz300268 数据: *ST佳沃
2025-06-18 08:51:23,978 - INFO - 成功获取股票 sz000930 数据: 中粮科技
2025-06-18 08:51:24,672 - INFO - 成功获取股票 sz002299 数据: 圣农发展
2025-06-18 08:51:25,277 - INFO - 成功获取股票 sh600371 数据: 万向德农
2025-06-18 08:51:25,906 - INFO - 成功获取股票 sh600598 数据: 北大荒
2025-06-18 08:51:26,508 - INFO - 成功获取股票 sh603609 数据: 禾丰股份
2025-06-18 08:51:27,112 - INFO - 成功获取股票 bj831087 数据: 秋乐种业
2025-06-18 08:51:27,692 - INFO - 成功获取股票 sh603363 数据: 傲农生物
2025-06-18 08:51:28,282 - INFO - 成功获取股票 sh603336 数据: 宏辉果蔬
2025-06-18 08:51:28,897 - INFO - 成功获取股票 sh600354 数据: 敦煌种业
2025-06-18 08:51:29,502 - INFO - 成功获取股票 sz002385 数据: 大北农
2025-06-18 08:51:30,081 - INFO - 成功获取股票 sz000048 数据: 京基智农
2025-06-18 08:51:30,671 - INFO - 成功获取股票 sh600251 数据: 冠农股份
2025-06-18 08:51:31,266 - INFO - 成功获取股票 sz002321 数据: 华英农业
2025-06-18 08:51:31,860 - INFO - 成功获取股票 sz000505 数据: 京粮控股
2025-06-18 08:51:32,465 - INFO - 成功获取股票 sz001366 数据: 播恩集团
2025-06-18 08:51:33,063 - INFO - 成功获取股票 sz002772 数据: 众兴菌业
2025-06-18 08:51:33,669 - INFO - 成功获取股票 sz002041 数据: 登海种业
2025-06-18 08:51:34,269 - INFO - 成功获取股票 sh600127 数据: 金健米业
2025-06-18 08:51:34,875 - INFO - 成功获取股票 sz002548 数据: 金新农
2025-06-18 08:51:35,457 - INFO - 成功获取股票 sh605296 数据: 神农集团
2025-06-18 08:51:36,061 - INFO - 成功获取股票 sh600359 数据: 新农开发
2025-06-18 08:51:36,660 - INFO - 成功获取股票 sh601952 数据: 苏垦农发
2025-06-18 08:51:37,246 - INFO - 成功获取股票 sh600975 数据: 新五丰
2025-06-18 08:51:37,832 - INFO - 成功获取股票 sz300505 数据: 川金诺
2025-06-18 08:51:38,432 - INFO - 成功获取股票 sh600141 数据: 兴发集团
2025-06-18 08:51:39,032 - INFO - 成功获取股票 sz000893 数据: 亚钾国际
2025-06-18 08:51:39,630 - INFO - 成功获取股票 sh600691 数据: 阳煤化工
2025-06-18 08:51:40,229 - INFO - 成功获取股票 sh600470 数据: 六国化工
2025-06-18 08:51:40,814 - INFO - 成功获取股票 sh000912 数据: 300消费
2025-06-18 08:51:41,407 - INFO - 成功获取股票 sz000408 数据: 藏格矿业
2025-06-18 08:51:41,988 - INFO - 成功获取股票 sz000902 数据: 新洋丰
2025-06-18 08:51:42,574 - INFO - 成功获取股票 sz002539 数据: 云图控股
2025-06-18 08:51:43,175 - INFO - 成功获取股票 sz002599 数据: 盛通股份
2025-06-18 08:51:43,752 - INFO - 成功获取股票 sz002545 数据: 东方铁塔
2025-06-18 08:51:44,359 - INFO - 成功获取股票 sz300387 数据: 富邦科技
2025-06-18 08:51:44,952 - INFO - 成功获取股票 sz002274 数据: 华昌化工
2025-06-18 08:51:45,558 - INFO - 成功获取股票 sz002470 数据: 金正大
2025-06-18 08:51:46,159 - INFO - 成功获取股票 sz002538 数据: 司尔特
2025-06-18 08:51:46,749 - INFO - 成功获取股票 sz000731 数据: 四川美丰
2025-06-18 08:51:47,345 - INFO - 成功获取股票 sh600078 数据: 澄星股份
2025-06-18 08:51:47,924 - INFO - 成功获取股票 sh600227 数据: 赤天化
2025-06-18 08:51:48,524 - INFO - 成功获取股票 sh603395 数据: 红四方
2025-06-18 08:51:49,116 - INFO - 成功获取股票 sz002588 数据: 史丹利
2025-06-18 08:51:49,718 - INFO - 成功获取股票 sz000422 数据: 湖北宜化
2025-06-18 08:51:50,306 - INFO - 成功获取股票 sz002556 数据: 辉隆股份
2025-06-18 08:51:50,888 - INFO - 成功获取股票 sz002312 数据: 川发龙蟒
2025-06-18 08:51:51,496 - INFO - 成功获取股票 sz002170 数据: 芭田股份
2025-06-18 08:51:52,089 - INFO - 成功获取股票 sz000792 数据: 盐湖股份
2025-06-18 08:51:52,674 - INFO - 成功获取股票 sh600096 数据: 云天化
2025-06-18 08:51:53,275 - INFO - 成功获取股票 sz001231 数据: 农心科技
2025-06-18 08:51:53,875 - INFO - 成功获取股票 sz002731 数据: 萃华珠宝
2025-06-18 08:51:54,481 - INFO - 成功获取股票 sz200553 数据: 安道麦B
2025-06-18 08:51:55,089 - INFO - 成功获取股票 sh603810 数据: 丰山集团
2025-06-18 08:51:55,690 - INFO - 成功获取股票 sh603970 数据: 中农立华
2025-06-18 08:51:56,283 - INFO - 成功获取股票 sz301035 数据: 润丰股份
2025-06-18 08:51:56,889 - INFO - 成功获取股票 sz002868 数据: *ST绿康
2025-06-18 08:51:57,486 - INFO - 成功获取股票 sz003042 数据: 中农联合
2025-06-18 08:51:58,097 - INFO - 成功获取股票 sz002391 数据: 长青股份
2025-06-18 08:51:58,694 - INFO - 成功获取股票 bj870866 数据: 绿亨科技
2025-06-18 08:51:59,298 - INFO - 成功获取股票 sz301665 数据: 泰禾股份
2025-06-18 08:51:59,895 - INFO - 成功获取股票 sh600486 数据: 扬农化工
2025-06-18 08:52:00,396 - INFO - 本次采集完成,共获取 67 只股票数据
2025-06-18 08:52:00,399 - ERROR - 保存数据到数据库失败: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 16
2025-06-18 08:52:00,401 - INFO - 数据采集完成,共处理 67 只股票
2025-06-18 08:53:22,391 - INFO - 收到停止信号,正在关闭...
2025-06-18 08:53:22,391 - INFO - 股票数据采集器已停止
2025-06-18 08:53:24,484 - INFO - 数据库连接成功
2025-06-18 08:53:24,484 - INFO - 股票数据采集器启动
2025-06-18 08:53:24,485 - INFO - 定时任务已启动,每 5 分钟采集一次
2025-06-18 08:53:24,486 - INFO - 开始执行股票数据采集...
2025-06-18 08:53:24,579 - INFO - 成功获取股票 sz300189 数据: 神农种业
2025-06-18 08:53:25,181 - INFO - 成功获取股票 sz000713 数据: 丰乐种业
2025-06-18 08:53:25,792 - INFO - 成功获取股票 sh600313 数据: 农发种业
2025-06-18 08:53:26,396 - INFO - 成功获取股票 bj837403 数据: 康农种业
2025-06-18 08:53:27,000 - INFO - 成功获取股票 sz200505 数据: 京粮B
2025-06-18 08:53:27,606 - INFO - 成功获取股票 sz300268 数据: *ST佳沃
2025-06-18 08:53:28,218 - INFO - 成功获取股票 sz000930 数据: 中粮科技
2025-06-18 08:53:28,819 - INFO - 成功获取股票 sz002299 数据: 圣农发展
2025-06-18 08:53:29,422 - INFO - 成功获取股票 sh600371 数据: 万向德农
2025-06-18 08:53:30,013 - INFO - 成功获取股票 sh600598 数据: 北大荒
2025-06-18 08:53:30,597 - INFO - 成功获取股票 sh603609 数据: 禾丰股份
2025-06-18 08:53:31,176 - INFO - 成功获取股票 bj831087 数据: 秋乐种业
2025-06-18 08:53:31,771 - INFO - 成功获取股票 sh603363 数据: 傲农生物
2025-06-18 08:53:32,366 - INFO - 成功获取股票 sh603336 数据: 宏辉果蔬
2025-06-18 08:53:32,958 - INFO - 成功获取股票 sh600354 数据: 敦煌种业
2025-06-18 08:53:33,568 - INFO - 成功获取股票 sz002385 数据: 大北农
2025-06-18 08:53:34,176 - INFO - 成功获取股票 sz000048 数据: 京基智农
2025-06-18 08:53:34,785 - INFO - 成功获取股票 sh600251 数据: 冠农股份
2025-06-18 08:53:35,430 - INFO - 成功获取股票 sz002321 数据: 华英农业
2025-06-18 08:53:36,098 - INFO - 成功获取股票 sz000505 数据: 京粮控股
2025-06-18 08:53:36,715 - INFO - 成功获取股票 sz001366 数据: 播恩集团
2025-06-18 08:53:37,300 - INFO - 成功获取股票 sz002772 数据: 众兴菌业
2025-06-18 08:53:37,894 - INFO - 成功获取股票 sz002041 数据: 登海种业
2025-06-18 08:53:38,524 - INFO - 成功获取股票 sh600127 数据: 金健米业
2025-06-18 08:53:39,134 - INFO - 成功获取股票 sz002548 数据: 金新农
2025-06-18 08:53:39,715 - INFO - 成功获取股票 sh605296 数据: 神农集团
2025-06-18 08:53:40,328 - INFO - 成功获取股票 sh600359 数据: 新农开发
2025-06-18 08:53:40,929 - INFO - 成功获取股票 sh601952 数据: 苏垦农发
2025-06-18 08:53:41,542 - INFO - 成功获取股票 sh600975 数据: 新五丰
2025-06-18 08:53:42,141 - INFO - 成功获取股票 sz300505 数据: 川金诺
2025-06-18 08:53:42,736 - INFO - 成功获取股票 sh600141 数据: 兴发集团
2025-06-18 08:53:43,341 - INFO - 成功获取股票 sz000893 数据: 亚钾国际
2025-06-18 08:53:43,931 - INFO - 成功获取股票 sh600691 数据: 阳煤化工
2025-06-18 08:53:44,532 - INFO - 成功获取股票 sh600470 数据: 六国化工
2025-06-18 08:53:45,129 - INFO - 成功获取股票 sh000912 数据: 300消费
2025-06-18 08:53:45,734 - INFO - 成功获取股票 sz000408 数据: 藏格矿业
2025-06-18 08:53:46,337 - INFO - 成功获取股票 sz000902 数据: 新洋丰
2025-06-18 08:53:46,928 - INFO - 成功获取股票 sz002539 数据: 云图控股
2025-06-18 08:53:47,530 - INFO - 成功获取股票 sz002599 数据: 盛通股份
2025-06-18 08:53:48,133 - INFO - 成功获取股票 sz002545 数据: 东方铁塔
2025-06-18 08:53:48,727 - INFO - 成功获取股票 sz300387 数据: 富邦科技
2025-06-18 08:53:49,329 - INFO - 成功获取股票 sz002274 数据: 华昌化工
2025-06-18 08:53:49,935 - INFO - 成功获取股票 sz002470 数据: 金正大
2025-06-18 08:53:50,535 - INFO - 成功获取股票 sz002538 数据: 司尔特
2025-06-18 08:53:51,118 - INFO - 成功获取股票 sz000731 数据: 四川美丰
2025-06-18 08:53:51,711 - INFO - 成功获取股票 sh600078 数据: 澄星股份
2025-06-18 08:53:52,317 - INFO - 成功获取股票 sh600227 数据: 赤天化
2025-06-18 08:53:52,907 - INFO - 成功获取股票 sh603395 数据: 红四方
2025-06-18 08:53:53,495 - INFO - 成功获取股票 sz002588 数据: 史丹利
2025-06-18 08:53:54,099 - INFO - 成功获取股票 sz000422 数据: 湖北宜化
2025-06-18 08:53:54,679 - INFO - 成功获取股票 sz002556 数据: 辉隆股份
2025-06-18 08:53:55,282 - INFO - 成功获取股票 sz002312 数据: 川发龙蟒
2025-06-18 08:53:55,888 - INFO - 成功获取股票 sz002170 数据: 芭田股份
2025-06-18 08:53:56,505 - INFO - 成功获取股票 sz000792 数据: 盐湖股份
2025-06-18 08:53:57,112 - INFO - 成功获取股票 sh600096 数据: 云天化
2025-06-18 08:53:57,699 - INFO - 成功获取股票 sz001231 数据: 农心科技
2025-06-18 08:53:58,300 - INFO - 成功获取股票 sz002731 数据: 萃华珠宝
2025-06-18 08:53:58,884 - INFO - 成功获取股票 sz200553 数据: 安道麦B
2025-06-18 08:53:59,488 - INFO - 成功获取股票 sh603810 数据: 丰山集团
2025-06-18 08:54:00,099 - INFO - 成功获取股票 sh603970 数据: 中农立华
2025-06-18 08:54:00,690 - INFO - 成功获取股票 sz301035 数据: 润丰股份
2025-06-18 08:54:01,284 - INFO - 成功获取股票 sz002868 数据: *ST绿康
2025-06-18 08:54:01,889 - INFO - 成功获取股票 sz003042 数据: 中农联合
2025-06-18 08:54:02,476 - INFO - 成功获取股票 sz002391 数据: 长青股份
2025-06-18 08:54:03,079 - INFO - 成功获取股票 bj870866 数据: 绿亨科技
2025-06-18 08:54:03,683 - INFO - 成功获取股票 sz301665 数据: 泰禾股份
2025-06-18 08:54:04,295 - INFO - 成功获取股票 sh600486 数据: 扬农化工
2025-06-18 08:54:04,796 - INFO - 本次采集完成,共获取 67 只股票数据
2025-06-18 08:54:04,803 - INFO - 更新股票 sz300189 数据
2025-06-18 08:54:04,806 - INFO - 更新股票 sz000713 数据
2025-06-18 08:54:04,807 - INFO - 更新股票 sh600313 数据
2025-06-18 08:54:04,809 - INFO - 更新股票 bj837403 数据
2025-06-18 08:54:04,812 - INFO - 更新股票 sz200505 数据
2025-06-18 08:54:04,813 - INFO - 更新股票 sz300268 数据
2025-06-18 08:54:04,815 - INFO - 更新股票 sz000930 数据
2025-06-18 08:54:04,817 - INFO - 更新股票 sz002299 数据
2025-06-18 08:54:04,819 - INFO - 更新股票 sh600371 数据
2025-06-18 08:54:04,820 - INFO - 更新股票 sh600598 数据
2025-06-18 08:54:04,821 - INFO - 更新股票 sh603609 数据
2025-06-18 08:54:04,822 - INFO - 更新股票 bj831087 数据
2025-06-18 08:54:04,824 - INFO - 更新股票 sh603363 数据
2025-06-18 08:54:04,826 - INFO - 更新股票 sh603336 数据
2025-06-18 08:54:04,829 - INFO - 更新股票 sh600354 数据
2025-06-18 08:54:04,831 - INFO - 更新股票 sz002385 数据
2025-06-18 08:54:04,832 - INFO - 更新股票 sz000048 数据
2025-06-18 08:54:04,833 - INFO - 更新股票 sh600251 数据
2025-06-18 08:54:04,835 - INFO - 更新股票 sz002321 数据
2025-06-18 08:54:04,836 - INFO - 更新股票 sz000505 数据
2025-06-18 08:54:04,837 - INFO - 更新股票 sz001366 数据
2025-06-18 08:54:04,839 - INFO - 更新股票 sz002772 数据
2025-06-18 08:54:04,840 - INFO - 更新股票 sz002041 数据
2025-06-18 08:54:04,841 - INFO - 更新股票 sh600127 数据
2025-06-18 08:54:04,842 - INFO - 更新股票 sz002548 数据
2025-06-18 08:54:04,845 - INFO - 更新股票 sh605296 数据
2025-06-18 08:54:04,847 - INFO - 更新股票 sh600359 数据
2025-06-18 08:54:04,848 - INFO - 更新股票 sh601952 数据
2025-06-18 08:54:04,849 - INFO - 更新股票 sh600975 数据
2025-06-18 08:54:04,851 - INFO - 更新股票 sz300505 数据
2025-06-18 08:54:04,852 - INFO - 更新股票 sh600141 数据
2025-06-18 08:54:04,853 - INFO - 更新股票 sz000893 数据
2025-06-18 08:54:04,855 - INFO - 更新股票 sh600691 数据
2025-06-18 08:54:04,856 - INFO - 更新股票 sh600470 数据
2025-06-18 08:54:04,857 - INFO - 更新股票 sh000912 数据
2025-06-18 08:54:04,859 - INFO - 更新股票 sz000408 数据
2025-06-18 08:54:04,862 - INFO - 更新股票 sz000902 数据
2025-06-18 08:54:04,864 - INFO - 更新股票 sz002539 数据
2025-06-18 08:54:04,866 - INFO - 更新股票 sz002599 数据
2025-06-18 08:54:04,867 - INFO - 更新股票 sz002545 数据
2025-06-18 08:54:04,868 - INFO - 更新股票 sz300387 数据
2025-06-18 08:54:04,869 - INFO - 更新股票 sz002274 数据
2025-06-18 08:54:04,872 - INFO - 更新股票 sz002470 数据
2025-06-18 08:54:04,873 - INFO - 更新股票 sz002538 数据
2025-06-18 08:54:04,874 - INFO - 更新股票 sz000731 数据
2025-06-18 08:54:04,876 - INFO - 更新股票 sh600078 数据
2025-06-18 08:54:04,878 - INFO - 更新股票 sh600227 数据
2025-06-18 08:54:04,879 - INFO - 更新股票 sh603395 数据
2025-06-18 08:54:04,881 - INFO - 更新股票 sz002588 数据
2025-06-18 08:54:04,882 - INFO - 更新股票 sz000422 数据
2025-06-18 08:54:04,883 - INFO - 更新股票 sz002556 数据
2025-06-18 08:54:04,884 - INFO - 更新股票 sz002312 数据
2025-06-18 08:54:04,885 - INFO - 更新股票 sz002170 数据
2025-06-18 08:54:04,887 - INFO - 更新股票 sz000792 数据
2025-06-18 08:54:04,888 - INFO - 更新股票 sh600096 数据
2025-06-18 08:54:04,889 - INFO - 更新股票 sz001231 数据
2025-06-18 08:54:04,891 - INFO - 更新股票 sz002731 数据
2025-06-18 08:54:04,893 - INFO - 更新股票 sz200553 数据
2025-06-18 08:54:04,895 - INFO - 更新股票 sh603810 数据
2025-06-18 08:54:04,897 - INFO - 更新股票 sh603970 数据
2025-06-18 08:54:04,898 - INFO - 更新股票 sz301035 数据
2025-06-18 08:54:04,900 - INFO - 更新股票 sz002868 数据
2025-06-18 08:54:04,901 - INFO - 更新股票 sz003042 数据
2025-06-18 08:54:04,903 - INFO - 更新股票 sz002391 数据
2025-06-18 08:54:04,904 - INFO - 更新股票 bj870866 数据
2025-06-18 08:54:04,905 - INFO - 更新股票 sz301665 数据
2025-06-18 08:54:04,906 - INFO - 更新股票 sh600486 数据
2025-06-18 08:54:04,912 - INFO - 成功处理 67 条股票数据到数据库
2025-06-18 08:54:04,912 - INFO - 数据采集完成,共处理 67 只股票
2025-06-18 08:54:30,695 - INFO - 收到停止信号,正在关闭...
2025-06-18 08:54:30,696 - INFO - 股票数据采集器已停止

View File

@@ -41,16 +41,75 @@ class StockCrawler:
# 农业类股票代码列表(示例)
self.agricultural_stocks = [
'sz300630', # 普利制药
'sh600998', # 九州通
'sh600371', # 万向钱潮
'sz000876', # 新希望
'sz002714', # 牧原股份
'sh600519', # 贵州茅台
'sz000858', # 五粮液
'sh600887', # 伊利股份
'sz002304', # 洋河股份
'sh600036', # 招商银行
'sz300189', # 神农种业
'sz000713', # 丰乐钟业
'sh600313', # 农发种业
'bj837403', # 康农种业
'sz200505', # 京粮B
'sz300268', # st佳沃
'sz000930', # 中粮科技
'sz002299', # 圣农发展
'sh600371', # 万向德农
'sh600598', # 北大荒
'sh603609', # 禾丰股份
'bj831087',
'sh603363',
'sh603336',
'sh600354',
'sz002385',
'sz000048',
'sh600251',
'sz002321',
'sz000505',
'sz001366',
'sz002772',
'sz002041',
'sh600127',
'sz002548',
'sh605296',
'sh600359',
'sh601952',
'sh600975',
# 新增股票代码
'sz300505',
'sh600141',
'sz000893',
'sh600691',
'sh600470',
'sh000912',
'sz000408',
'sz000902',
'sz002539',
'sz002599',
'sz002545',
'sz300387',
'sz002274',
'sz002470',
'sz002538',
'sz000731',
'sh600078',
'sh600227',
'sh603395',
'sz002588',
'sz000422',
'sz002556',
'sz002312',
'sz002170',
'sz000792',
'sh600096',
# 农药兽药类股票
'sz001231',
'sz002731',
'sz200553',
'sh603810',
'sh603970',
'sz301035',
'sz002868',
'sz003042',
'sz002391',
'bj870866',
'sz301665',
'sh600486',
]
# 初始化数据库连接
@@ -212,25 +271,59 @@ class StockCrawler:
try:
cursor = self.db_connection.cursor()
# 构建插入SQL
insert_sql = """
INSERT INTO stock_data (
stock_code, stock_name, open_price, close_price, high_price, low_price,
volume, turnover, change_percent, change_amount, pe_ratio, pb_ratio,
market_cap, float_market_cap, trade_date, create_time
) VALUES (
%(stock_code)s, %(stock_name)s, %(open_price)s, %(current_price)s,
%(high_price)s, %(low_price)s, %(volume)s, %(turnover)s,
%(change_percent)s, %(change_amount)s, %(pe_ratio)s, %(pb_ratio)s,
%(market_cap)s, %(float_market_cap)s, NOW(), NOW()
)
"""
# 获取当前日期
today = datetime.now().strftime('%Y-%m-%d')
for stock_data in stock_data_list:
# 查询今天是否已有该股票数据
check_sql = """
SELECT COUNT(*) FROM stock_data
WHERE stock_code = %s AND DATE(trade_date) = %s
"""
cursor.execute(check_sql, (stock_data['stock_code'], today))
count = cursor.fetchone()[0]
if count > 0:
# 已有数据使用UPDATE更新
update_sql = """
UPDATE stock_data SET
stock_name = %(stock_name)s,
open_price = %(open_price)s,
close_price = %(current_price)s,
high_price = %(high_price)s,
low_price = %(low_price)s,
volume = %(volume)s,
turnover = %(turnover)s,
change_percent = %(change_percent)s,
change_amount = %(change_amount)s,
pe_ratio = %(pe_ratio)s,
pb_ratio = %(pb_ratio)s,
market_cap = %(market_cap)s,
float_market_cap = %(float_market_cap)s,
update_time = NOW()
WHERE stock_code = %(stock_code)s AND DATE(trade_date) = %(date)s
"""
cursor.execute(update_sql, {**stock_data, 'date': today})
logger.info(f"更新股票 {stock_data['stock_code']} 数据")
else:
# 无数据使用INSERT插入
insert_sql = """
INSERT INTO stock_data (
stock_code, stock_name, open_price, close_price, high_price, low_price,
volume, turnover, change_percent, change_amount, pe_ratio, pb_ratio,
market_cap, float_market_cap, trade_date, create_time
) VALUES (
%(stock_code)s, %(stock_name)s, %(open_price)s, %(current_price)s,
%(high_price)s, %(low_price)s, %(volume)s, %(turnover)s,
%(change_percent)s, %(change_amount)s, %(pe_ratio)s, %(pb_ratio)s,
%(market_cap)s, %(float_market_cap)s, NOW(), NOW()
)
"""
cursor.execute(insert_sql, stock_data)
logger.info(f"插入股票 {stock_data['stock_code']} 数据")
# 批量插入数据
cursor.executemany(insert_sql, stock_data_list)
self.db_connection.commit()
logger.info(f"成功保存 {len(stock_data_list)} 条股票数据到数据库")
logger.info(f"成功处理 {len(stock_data_list)} 条股票数据到数据库")
except Exception as e:
logger.error(f"保存数据到数据库失败: {e}")

File diff suppressed because one or more lines are too long

1
docs/dist/assets/index-64e04f5b.css vendored Normal file

File diff suppressed because one or more lines are too long

420
docs/dist/assets/main-f65d595e.js vendored Normal file

File diff suppressed because one or more lines are too long

59
docs/dist/config/ai.json vendored Normal file
View File

@@ -0,0 +1,59 @@
{
"enabled": true,
"provider": "openai",
"models": {
"openai": {
"modelId": "gpt-3.5-turbo",
"apiKey": "",
"baseUrl": "https://api.openai.com/v1",
"maxTokens": 4000,
"temperature": 0.7
},
"claude": {
"modelId": "claude-3-sonnet-20240229",
"apiKey": "",
"baseUrl": "https://api.anthropic.com",
"maxTokens": 4000,
"temperature": 0.7
},
"gemini": {
"modelId": "gemini-pro",
"apiKey": "",
"baseUrl": "https://generativelanguage.googleapis.com/v1",
"maxTokens": 4000,
"temperature": 0.7
},
"deepseek-v3": {
"modelId": "deepseek-chat",
"apiKey": "",
"baseUrl": "https://api.deepseek.com",
"maxTokens": 4000,
"temperature": 0.7
},
"deepseek-r1": {
"modelId": "deepseek-reasoner",
"apiKey": "",
"baseUrl": "https://api.deepseek.com",
"maxTokens": 4000,
"temperature": 0.7
},
"custom": {
"modelId": "",
"apiKey": "",
"baseUrl": "",
"maxTokens": 4000,
"temperature": 0.7
}
},
"features": {
"chatAssistant": true,
"documentSummary": true,
"codeExplanation": true,
"searchEnhancement": false
},
"ui": {
"position": "bottom-right",
"theme": "auto",
"size": "medium"
}
}

133
docs/dist/config/site.en.yaml vendored Normal file
View File

@@ -0,0 +1,133 @@
# Website Configuration
site:
title: "Agricultural Stock Data Analysis System"
description: "Big data-driven agricultural stock data analysis platform"
# Logo formats supported:
# 1. emoji: "🤖"
# 2. image URL: "https://example.com/logo.png"
# 3. local image: "/images/logo.png"
# 4. relative path: "./assets/logo.svg"
logo: "🌾"
author: "Agricultural Stock Platform Team"
# Navigation Bar Configuration
navbar:
items:
- title: "Home"
link: "/"
active: true
- title: "Guide"
link: "/guide"
- title: "Gitea"
link: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
external: true
# Sidebar Navigation Configuration
sidebar:
sections:
- title: "System Guide"
path: "/guide"
children:
- title: "Data Collector"
path: "/guide/data-collector"
- title: "Spark Processor"
path: "/guide/spark-processor"
- title: "Backend API"
path: "/guide/backend"
- title: "Frontend Interface"
path: "/guide/frontend"
# Theme Configuration
theme:
# Default theme mode: 'light' | 'dark' | 'auto'
# light: Force light mode
# dark: Force dark mode
# auto: Follow system preference (default)
defaultMode: "auto"
# Allow users to toggle theme (show theme toggle button)
allowToggle: true
# Color Configuration
colors:
primary: "#3b82f6"
secondary: "#64748b"
accent: "#06b6d4"
background: "#ffffff"
surface: "#f8fafc"
text: "#1e293b"
textSecondary: "#64748b"
border: "#e2e8f0"
fonts:
primary: "Inter, -apple-system, BlinkMacSystemFont, sans-serif"
mono: "JetBrains Mono, Consolas, monospace"
# Table of Contents Configuration
toc:
# Maximum heading level to display in TOC (1-6)
maxLevel: 2
# Enable table of contents
enabled: true
# TOC title
title: "On This Page"
# Footer Configuration
footer:
enabled: true
copyright: "© 2024 Vue Docs UI. All rights reserved."
repository:
url: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
branch: "master"
lastUpdated: "2024-12-19"
links:
- title: "Documentation"
link: "/guide/introduction"
- title: "GitHub"
link: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
external: true
- title: "License"
link: "/license"
social:
- name: "email"
url: "mailto:15202078626@163.com"
icon: "mail"
- name: "gitea"
url: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
icon: "gitea"
# - name: "youtube"
# url: "https://youtube.com/@yourhandle"
# icon: "youtube"
# - name: "twitter"
# url: "https://twitter.com/yourhandle"
# icon: "twitter"
# - name: "discord"
# url: "https://discord.gg/yourinvite"
# icon: "discord"
# - name: "telegram"
# url: "https://t.me/yourhandle"
# icon: "telegram"
# - name: "tiktok"
# url: "https://tiktok.com/@yourhandle"
# icon: "tiktok"
- name: "bilibili"
url: "https://space.bilibili.com/443299209"
icon: "bilibili"
- name: "qq"
url: "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=2934674522&card_type=person&source=qrcode"
icon: "qq"
- name: "wechat"
url: "weixin://dl/add?zlt2629496476520"
icon: "wechat"
# - name: "weibo"
# url: "https://weibo.com/yourhandle"
# icon: "weibo"
# - name: "douyin"
# url: "https://www.douyin.com/user/yourhandle"
# icon: "douyin"
# - name: "zhihu"
# url: "https://www.zhihu.com/people/yourhandle"
# icon: "zhihu"

164
docs/dist/config/site.yaml vendored Normal file
View File

@@ -0,0 +1,164 @@
# 网站基本配置
site:
title: "农业股票数据分析系统"
description: "基于大数据技术的农业股票数据分析平台"
# logo支持以下格式
# 1. emoji: "🤖"
# 2. 图片URL: "https://example.com/logo.png"
# 3. 本地图片: "/images/logo.png"
# 4. 相对路径: "./assets/logo.svg"
logo: "🌾"
author: "Agricultural Stock Platform Team"
# 顶部导航配置
navbar:
items:
- title: "首页"
link: "/"
active: true
- title: "指南"
link: "/guide"
- title: "Gitea"
link: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
external: true
# 侧边栏导航配置
sidebar:
sections:
- title: "系统指南"
path: "/guide"
children:
- title: "数据采集器"
path: "/guide/data-collector"
- title: "Spark数据处理器"
path: "/guide/spark-processor"
- title: "后端API服务"
path: "/guide/backend"
- title: "前端界面"
path: "/guide/frontend"
# Theme Configuration
theme:
# Default theme mode: 'light' | 'dark' | 'auto'
# light: Force light mode
# dark: Force dark mode
# auto: Follow system preference (default)
defaultMode: "auto"
# Allow users to toggle theme (show theme toggle button)
allowToggle: true
# Color Configuration
colors:
primary: "#3b82f6"
secondary: "#64748b"
accent: "#06b6d4"
background: "#ffffff"
surface: "#f8fafc"
text: "#1e293b"
textSecondary: "#64748b"
border: "#e2e8f0"
success: "#10b981"
warning: "#f59e0b"
error: "#ef4444"
fonts:
primary: "Inter, -apple-system, BlinkMacSystemFont, sans-serif"
mono: "JetBrains Mono, Consolas, Monaco, monospace"
# Layout Configuration
layout:
headerHeight: "60px"
sidebarWidth: "280px"
tocWidth: "240px"
contentMaxWidth: "1200px"
# Table of Contents Configuration
toc:
# Maximum heading level to display in TOC (1-6)
maxLevel: 3
# Enable table of contents
enabled: true
# TOC title
title: "本页目录"
# Show TOC on mobile devices
showOnMobile: false
# Footer Configuration
footer:
enabled: true
copyright: "© 2024 Vue Docs UI. All rights reserved."
repository:
url: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
branch: "master"
lastUpdated: "2024-12-19"
links:
- title: "Documentation"
link: "/guide/introduction"
- title: "GitHub"
link: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
external: true
- title: "License"
link: "/license"
social:
- name: "email"
url: "mailto:15202078626@163.com"
icon: "mail"
- name: "gitea"
url: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
icon: "gitea"
# - name: "youtube"
# url: "https://youtube.com/@yourhandle"
# icon: "youtube"
# - name: "twitter"
# url: "https://twitter.com/yourhandle"
# icon: "twitter"
# - name: "discord"
# url: "https://discord.gg/yourinvite"
# icon: "discord"
# - name: "telegram"
# url: "https://t.me/yourhandle"
# icon: "telegram"
# - name: "tiktok"
# url: "https://tiktok.com/@yourhandle"
# icon: "tiktok"
- name: "bilibili"
url: "https://space.bilibili.com/443299209"
icon: "bilibili"
- name: "qq"
url: "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=2934674522&card_type=person&source=qrcode"
icon: "qq"
- name: "wechat"
url: "weixin://contacts/profile/zlt2629496476520"
icon: "wechat"
# - name: "weibo"
# url: "https://weibo.com/yourhandle"
# icon: "weibo"
# - name: "douyin"
# url: "https://www.douyin.com/user/yourhandle"
# icon: "douyin"
# - name: "zhihu"
# url: "https://www.zhihu.com/people/yourhandle"
# icon: "zhihu"
# Analytics Configuration
analytics:
# Google Analytics
google:
enabled: false
id: ""
# Other analytics providers can be added here
# PWA Configuration
pwa:
enabled: false
name: "农业股票数据分析系统"
shortName: "AgricStock"
description: "基于大数据技术的农业股票数据分析平台"
themeColor: "#3b82f6"
backgroundColor: "#ffffff"

83
docs/dist/docs/en/guide.md vendored Normal file
View File

@@ -0,0 +1,83 @@
# 🌾 Agricultural Stock Data Analysis System Development Guide
## 📋 Project Collaboration Overview
The Agricultural Stock Data Analysis System consists of four core sub-projects that implement a complete data pipeline from data collection to user presentation through a sophisticated collaboration mechanism. This guide provides detailed explanations of the collaboration relationships, development processes, and operational mechanisms of each sub-project.
## 🏗️ System Architecture & Data Flow
### Overall Data Flow
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ External APIs │ │ Data Collector │ │ Spark Processor │ │ Backend API │
│ │───▶│ data-collector │───▶│ spark-processor │───▶│ backend │
│ │ │ │ │ │ │ │
│ • Tencent API │ │ • Python Crawler│ │ • Data Cleaning │ │ • RESTful API │
│ • Sina Finance │ │ • Real-time Col │ │ • Tech Indicators│ │ • Data Caching │
│ • East Money │ │ • Data Validation│ │ • Market Analysis│ │ • WebSocket │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ MySQL DB │ │ Frontend UI │
│ Database │ │ frontend │
│ │ │ │
│ • Raw Data │ │ • Vue.js UI │
│ • Analysis Data │ │ • Chart Display │
│ • Index Opt │◀───│ • User Interact │
└─────────────────┘ └─────────────────┘
```
### 2. Deployment Collaboration Checklist
#### Database Team Responsibilities
- [ ] MySQL 8.0 environment setup completed
- [ ] Database table structure creation completed
- [ ] Index optimization configuration completed
- [ ] Database connection pool configuration completed
- [ ] Backup strategy configuration completed
#### Data Collector Team Responsibilities
- [ ] Python 3.8+ environment configuration completed
- [ ] Dependency package installation completed
- [ ] Configuration file environment variables setup completed
- [ ] Scheduled task configuration completed
- [ ] Log monitoring configuration completed
#### Spark Processor Team Responsibilities
- [ ] Java 8 environment configuration completed
- [ ] Spark 3.4.0 cluster setup completed
- [ ] Maven dependency management configuration completed
- [ ] Job scheduling configuration completed
- [ ] Performance monitoring configuration completed
#### Backend API Team Responsibilities
- [ ] Spring Boot application packaging completed
- [ ] Redis cache service configuration completed
- [ ] API interface testing passed
- [ ] WebSocket service configuration completed
- [ ] Load balancing configuration completed
#### Frontend UI Team Responsibilities
- [ ] Node.js environment configuration completed
- [ ] Vue project build completed
- [ ] Static resource deployment completed
- [ ] CDN configuration optimization completed
- [ ] Browser compatibility testing completed
## 📋 Key Success Factors for Collaboration
### 1. Unified Technology Stack
- **Standardized Development Languages**: Python 3.8+, Java 8+, Node.js 16+
- **Unified Database**: MySQL 8.0 + Redis 6.0
- **Containerized Deployment**: Docker + Kubernetes
- **Unified Monitoring Tools**: ELK Stack + Prometheus
### 2. Documentation Collaboration Standards
- **API Documentation**: Using Swagger/OpenAPI 3.0
- **Database Documentation**: Auto-generated using DbDoc
- **Deployment Documentation**: Using Markdown + Flowcharts
- **User Manual**: Using GitBook or VuePress
Through the above collaborative development process, the four sub-projects can organically combine to form an efficient, stable, and scalable agricultural stock data analysis system. While each team focuses on developing their own modules, they ensure overall system consistency and reliability through standardized interfaces and collaboration mechanisms.

500
docs/dist/docs/en/guide/backend.md vendored Normal file
View File

@@ -0,0 +1,500 @@
# 🏠 Backend API Service Documentation
## 📋 Module Overview
**backend** is the API service module of the Agricultural Stock Data Analysis System, built on Spring Boot 2.7.0. It provides RESTful API interfaces, business logic processing, real-time data push, and data caching optimization services.
## 🏗️ Technical Architecture
### Core Technology Stack
- **Spring Boot 2.7.0** - Main Application Framework
- **Spring Data JPA** - Data Access Layer
- **MyBatis Plus 3.5.2** - Enhanced MyBatis Framework
- **MySQL 8.0** - Primary Database
- **Redis 6.0** - Caching and Session Management
- **WebSocket** - Real-time Data Push
- **SpringDoc OpenAPI 3** - API Documentation Generation
- **Lombok** - Code Simplification Tool
### Swagger UI Access
After starting the application, you can access the API documentation through:
- **Swagger UI:** http://localhost:8080/swagger-ui/index.html
- **OpenAPI JSON:** http://localhost:8080/v3/api-docs
## 📁 Project Structure
```
backend/
├── src/main/java/com/agricultural/stock/
│ ├── StockApplication.java # Main application class
│ ├── controller/ # Controller layer
│ │ ├── StockController.java # Stock data interfaces
│ │ ├── MarketController.java # Market analysis interfaces
│ │ └── HealthController.java # Health check interfaces
│ ├── service/ # Service layer
│ │ ├── StockService.java # Stock business logic
│ │ ├── MarketAnalysisService.java # Market analysis service
│ │ └── CacheService.java # Cache management service
│ ├── entity/ # Entity classes
│ │ ├── StockData.java # Stock data entity
│ │ ├── MarketAnalysis.java # Market analysis entity
│ │ └── TechnicalIndicator.java # Technical indicator entity
│ ├── mapper/ # Data access layer
│ │ ├── StockMapper.java # Stock data mapper
│ │ └── MarketMapper.java # Market data mapper
│ └── vo/ # View objects
│ ├── ApiResponse.java # Unified response format
│ ├── StockVO.java # Stock view object
│ └── MarketAnalysisVO.java # Market analysis view object
├── src/main/resources/
│ ├── application.yml # Application configuration
│ ├── mapper/ # MyBatis mapping files
│ └── static/ # Static resources
└── pom.xml # Maven configuration
```
## 🔧 Core Functional Modules
### 1. Stock Data Controller (StockController)
**Description:** Provides stock data query and management interfaces.
**Main Interfaces:**
- `GET /api/stock/realtime` - Get real-time stock data
- `GET /api/stock/history/{stockCode}` - Get historical stock data
- `GET /api/stock/search` - Search stocks
- `GET /api/stock/ranking/growth` - Get growth ranking
- `GET /api/stock/ranking/volume` - Get volume ranking
- `GET /api/stock/detail/{stockCode}` - Get stock details
### 2. Market Analysis Controller (MarketController)
**Description:** Provides market analysis data interfaces.
**Main Interfaces:**
- `GET /api/market/latest` - Get latest market analysis
- `GET /api/market/recent/{days}` - Get recent market data
- `GET /api/market/range` - Get market data by date range
- `GET /api/market/industry` - Get industry analysis
- `GET /api/market/trends` - Get market trends
### 3. Health Check Controller (HealthController)
**Description:** Provides system health monitoring interfaces.
**Main Interfaces:**
- `GET /api/health/status` - Get system status
- `GET /api/health/database` - Check database connection
- `GET /api/health/cache` - Check cache status
## 🗄️ Database Integration
### Entity Design
**StockData Entity:**
```java
@Entity
@Table(name = "stock_data")
public class StockData {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "stock_code")
private String stockCode;
@Column(name = "stock_name")
private String stockName;
@Column(name = "open_price")
private BigDecimal openPrice;
@Column(name = "close_price")
private BigDecimal closePrice;
// Other fields...
}
```
### Data Access Layer
**Using MyBatis Plus for efficient data operations:**
```java
@Mapper
public interface StockMapper extends BaseMapper<StockData> {
@Select("SELECT * FROM stock_data WHERE stock_code = #{stockCode} ORDER BY trade_date DESC LIMIT #{limit}")
List<StockData> getHistoryData(@Param("stockCode") String stockCode, @Param("limit") int limit);
@Select("SELECT * FROM stock_data WHERE trade_date = #{date}")
List<StockData> getStockDataByDate(@Param("date") LocalDate date);
}
```
## ⚙️ Configuration Management
### Application Configuration (application.yml)
```yaml
server:
port: 8080
servlet:
context-path: /
spring:
application:
name: agricultural-stock-backend
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/agricultural_stock?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
hikari:
minimum-idle: 5
maximum-pool-size: 20
idle-timeout: 300000
connection-timeout: 20000
redis:
host: localhost
port: 6379
password:
database: 0
timeout: 2000ms
lettuce:
pool:
max-active: 20
max-idle: 10
min-idle: 5
jpa:
hibernate:
ddl-auto: none
show-sql: false
database-platform: org.hibernate.dialect.MySQL8Dialect
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.agricultural.stock.entity
configuration:
map-underscore-to-camel-case: true
cache-enabled: true
springdoc:
api-docs:
path: /v3/api-docs
swagger-ui:
path: /swagger-ui.html
```
## 🚀 Deployment and Running
### 1. Environment Requirements
```bash
# Java 8+
java -version
# Maven 3.6+
mvn -version
# MySQL 8.0
mysql --version
# Redis 6.0
redis-server --version
```
### 2. Database Setup
```bash
# Start MySQL service
systemctl start mysql
# Create database
mysql -u root -p -e "CREATE DATABASE agricultural_stock CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# Import data structure
mysql -u root -p agricultural_stock < ../spark-processor/database_tables.sql
```
### 3. Redis Setup
```bash
# Start Redis service
systemctl start redis
# Test Redis connection
redis-cli ping
```
### 4. Application Startup
```bash
# Compile and package
mvn clean package
# Run application
java -jar target/agricultural-stock-backend-1.0.0.jar
# Or use Maven to run directly
mvn spring-boot:run
```
## 📊 API Interface Documentation
### Unified Response Format
```json
{
"code": 200,
"message": "Success",
"data": {
// Actual data content
},
"timestamp": 1705123456789
}
```
### Stock Data Interfaces
**Get Real-time Stock Data:**
```http
GET /api/stock/realtime
Response:
{
"code": 200,
"message": "Success",
"data": [
{
"stockCode": "sz000876",
"stockName": "New Hope",
"currentPrice": 15.68,
"changePercent": 2.34,
"volume": 1234567,
"marketCap": 6789012345
}
]
}
```
**Get Stock Details:**
```http
GET /api/stock/detail/sz000876
Response:
{
"code": 200,
"message": "Success",
"data": {
"stockCode": "sz000876",
"stockName": "New Hope",
"currentPrice": 15.68,
"openPrice": 15.32,
"highPrice": 15.89,
"lowPrice": 15.21,
"volume": 1234567,
"turnover": 19456789,
"changePercent": 2.34,
"changeAmount": 0.36,
"peRatio": 12.5,
"marketCap": 6789012345
}
}
```
### Market Analysis Interfaces
**Get Latest Market Analysis:**
```http
GET /api/market/latest
Response:
{
"code": 200,
"message": "Success",
"data": {
"analysisDate": "2024-01-15",
"upCount": 7,
"downCount": 2,
"flatCount": 1,
"totalCount": 10,
"totalMarketCap": 38147.05,
"totalVolume": 1878844,
"avgChangePercent": 0.33
}
}
```
## 🔄 Real-time Data Push
### WebSocket Configuration
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new StockWebSocketHandler(), "/ws/stock/*")
.setAllowedOrigins("*");
}
}
```
### Real-time Data Handler
```java
@Component
public class StockWebSocketHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) {
// Handle connection establishment
String stockCode = extractStockCode(session.getUri());
subscribeToStockUpdates(session, stockCode);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) {
// Handle received messages
}
public void broadcastStockUpdate(String stockCode, StockData data) {
// Broadcast stock updates to subscribed clients
}
}
```
## 🎯 Caching Strategy
### Redis Cache Configuration
```java
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(10))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
return RedisCacheManager.builder(factory).cacheDefaults(config).build();
}
}
```
### Cache Usage
```java
@Service
public class StockService {
@Cacheable(value = "stock:realtime", key = "#stockCode")
public StockData getRealtimeData(String stockCode) {
// Query from database
return stockMapper.getByStockCode(stockCode);
}
@CacheEvict(value = "stock:realtime", key = "#stockCode")
public void updateStockData(String stockCode, StockData data) {
// Update database and clear cache
stockMapper.updateByStockCode(stockCode, data);
}
}
```
## 📈 Performance Optimization
### Database Query Optimization
- **Index Creation:** Create appropriate indexes for frequently queried fields
- **Query Optimization:** Use efficient SQL queries and avoid N+1 problems
- **Connection Pool:** Use HikariCP for optimal connection management
- **Pagination:** Implement proper pagination for large datasets
### Cache Optimization
- **Multi-level Caching:** Combine local cache and Redis
- **Cache Warming:** Pre-load frequently accessed data
- **Cache Invalidation:** Implement proper cache invalidation strategies
- **Cache Monitoring:** Monitor cache hit rates and performance
## 🔒 Security Measures
### Data Validation
```java
@RestController
@Validated
public class StockController {
@GetMapping("/stock/detail/{stockCode}")
public ApiResponse<StockVO> getStockDetail(
@PathVariable @Pattern(regexp = "^(sz|sh)\\d{6}$", message = "Invalid stock code format")
String stockCode) {
// Implementation
}
}
```
### SQL Injection Prevention
- Use parameterized queries
- Input validation and sanitization
- ORM framework usage (JPA/MyBatis)
### CORS Configuration
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true);
}
}
```
## 📋 Development Guidelines
### Code Standards
- Follow Spring Boot best practices
- Use proper layer separation (Controller-Service-Repository)
- Implement comprehensive error handling
- Add proper logging
- Write unit and integration tests
### Testing Strategy
```bash
# Run unit tests
mvn test
# Run integration tests
mvn verify
# Generate test coverage report
mvn jacoco:report
```
## 📄 License
This module is licensed under the MIT License. See the LICENSE file in the project root directory for details.
---
**Contact Information:**
- Project Repository: [Agricultural Stock Platform](https://github.com/agricultural-stock-platform)
- Technical Support: support@agricultural-stock.com
- Development Team: Agricultural Stock Platform Team

View File

@@ -0,0 +1,179 @@
# 📊 Python Data Collector Documentation
## 📋 Module Overview
**data-collector** is the data collection module of the Agricultural Stock Data Analysis System, built on Python 3.8+. It is responsible for real-time collection of agricultural listed companies' stock data from external data sources and storing the data in MySQL database for subsequent analysis.
## 🏗️ Technical Architecture
### Core Technology Stack
- **Python 3.8+** - Programming Language
- **Requests 2.31.0** - HTTP Request Library
- **Pandas 2.1.0** - Data Processing Library
- **BeautifulSoup4 4.12.2** - HTML Parsing Library
- **MySQL Connector 8.1.0** - MySQL Database Connector
- **Schedule 1.2.0** - Task Scheduling Library
- **NumPy 1.26.0** - Numerical Computing Library
## 📁 Project Structure
```
data-collector/
├── stock_crawler.py # Main crawler program
├── config.ini # Configuration file
├── requirements.txt # Python dependencies
└── stock_crawler.log # Runtime logs
```
## 🔧 Core Features
### 1. Stock Data Collection
Supports collecting agricultural stock data from Tencent Finance API:
- New Hope (sz000876)
- Muyuan Foodstuff (sz002714)
- Kweichow Moutai (sh600519)
- Wuliangye Yibin (sz000858)
- Inner Mongolia Yili (sh600887)
- Jiangsu Yanghe (sz002304)
### 2. Data Processing Features
- Real-time price data acquisition
- Automatic percentage change calculation
- Trading volume calculation
- Data format standardization
- Anomalous data filtering
### 3. Database Storage
- MySQL batch writing
- Duplicate data updates
- Transaction management
- Connection pool management
### 4. Task Scheduling
- Scheduled data collection
- Error retry mechanism
- Logging
- Status monitoring
## ⚙️ Configuration Management
### config.ini Configuration File
```ini
[database]
host = localhost
port = 3306
user = root
password = 123456
database = agricultural_stock
[crawler]
request_interval = 0.5
request_timeout = 10
max_retries = 3
user_agent = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
[logging]
level = INFO
file = stock_crawler.log
```
## 🚀 Deployment and Running
### 1. Environment Setup
```bash
# Check Python version
python --version # Requires 3.8+
# Install dependencies
pip install -r requirements.txt
```
### 2. Configuration Setup
```bash
# Edit configuration file
vim config.ini
# Configure database connection
[database]
host = localhost
port = 3306
user = your_username
password = your_password
database = agricultural_stock
```
### 3. Running Methods
```bash
# Execute data collection once
python stock_crawler.py
# Run in background
nohup python stock_crawler.py > /dev/null 2>&1 &
```
## 📊 Data Quality Assurance
### Data Validation Mechanism
- Required field completeness check
- Price data rationality validation
- Percentage change anomaly detection
- Trading volume negative value filtering
### Exception Handling
- Network request retry mechanism
- Database connection failure recovery
- Detailed error logging
- Graceful exception handling
## 📈 Monitoring and Maintenance
### Log Management
The system automatically records the following information:
- Data collection start/end time
- Number of successfully collected stocks
- Failed stock codes and reasons
- Database operation results
- Exception error details
### Performance Monitoring
- Collection time statistics
- Success rate monitoring
- Error rate statistics
- Database performance monitoring
## 📋 Dependency Management
### requirements.txt
```txt
requests>=2.31.0
pandas>=2.1.0
beautifulsoup4>=4.12.2
lxml>=4.9.3
mysql-connector-python>=8.1.0
schedule>=1.2.0
numpy>=1.26.0
```
## 📄 License
This module is licensed under the MIT License. See the LICENSE file in the project root directory for details.
---
**Contact Information:**
- Project Repository: [Agricultural Stock Platform](https://github.com/agricultural-stock-platform)
- Technical Support: support@agricultural-stock.com
- Development Team: Agricultural Stock Platform Team

205
docs/dist/docs/en/guide/frontend.md vendored Normal file
View File

@@ -0,0 +1,205 @@
# 🎨 Frontend Interface Documentation
## 📋 Module Overview
**frontend** is the user interface module of the Agricultural Stock Data Analysis System, built on Vue.js 3.3.0. It provides real-time stock data display, interactive charts, market analysis visualization, and responsive user experience.
## 🏗️ Technical Architecture
### Core Technology Stack
- **Vue.js 3.3.0** - Progressive JavaScript Framework
- **Vue Router 4.2.0** - Official Router for Vue.js
- **Vuex 4.0.2** - State Management Pattern and Library
- **Element Plus 2.3.0** - Vue 3 Component Library
- **ECharts 5.4.0** - Data Visualization Library
- **Axios 1.4.0** - HTTP Client Library
- **Vite 4.3.0** - Build Tool and Development Server
## 📁 Project Structure
```
frontend/
├── src/
│ ├── main.ts # Application entry point
│ ├── App.vue # Root component
│ ├── views/ # Page components
│ │ ├── Dashboard.vue # Dashboard overview
│ │ ├── MarketAnalysis.vue # Market analysis
│ │ ├── StockDetail.vue # Stock details
│ │ ├── StockSearch.vue # Stock search
│ │ └── Rankings.vue # Stock rankings
│ ├── components/ # Reusable components
│ ├── router/ # Routing configuration
│ ├── store/ # State management
│ ├── api/ # API interface encapsulation
│ └── utils/ # Utility functions
├── package.json # Dependencies and scripts
└── vite.config.js # Vite configuration
```
## 🔧 Core Functional Modules
### 1. Dashboard Overview (Dashboard.vue)
**Main Features:**
- Real-time market summary cards
- Market trend charts
- Industry distribution visualization
- Top gainers/losers lists
- Market news display
### 2. Market Analysis Page (MarketAnalysis.vue)
**Main Features:**
- Market trend analysis
- Technical indicator charts
- Industry comparison analysis
- Historical data backtesting
### 3. Stock Detail Page (StockDetail.vue)
**Main Features:**
- Real-time price information
- Interactive price charts
- Trading volume analysis
- Financial metrics
- Related news
### 4. Stock Search Page (StockSearch.vue)
**Main Features:**
- Keyword-based search
- Advanced filtering options
- Search result display
- Search history tracking
### 5. Rankings Page (Rankings.vue)
**Main Features:**
- Top gainers/losers rankings
- Volume rankings
- Market cap rankings
- Custom sorting options
## 🚀 Deployment and Running
### 1. Environment Requirements
```bash
# Node.js 16+
node --version
# npm or yarn
npm --version
```
### 2. Installation and Setup
```bash
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
```
### 3. Environment Configuration
```env
# Development
VITE_API_BASE_URL=http://localhost:8080
VITE_WS_BASE_URL=ws://localhost:8080
# Production
VITE_API_BASE_URL=https://api.agricultural-stock.com
VITE_WS_BASE_URL=wss://api.agricultural-stock.com
```
## 📊 Data Visualization
### ECharts Integration
The system uses ECharts for creating interactive charts:
- Stock price trend charts
- Market distribution pie charts
- Technical indicator visualizations
- Volume analysis charts
## 🎯 State Management
### Vuex Store
Global state management for:
- Stock data caching
- User interface state
- Real-time data updates
- Application configuration
## 🔌 API Integration
### HTTP Client
Axios-based HTTP client with:
- Request/response interceptors
- Error handling
- Loading state management
- API response standardization
## ⚙️ Build Configuration
### Vite Configuration
- Hot module replacement
- Proxy configuration for development
- Production build optimization
- Asset bundling and compression
## 📱 Responsive Design
### Mobile Adaptation
- Responsive grid layouts
- Mobile-optimized navigation
- Touch-friendly interactions
- Adaptive chart sizing
## 🔒 Security Measures
### Client-side Security
- XSS protection
- Input validation
- CSRF token handling
- Secure API communication
## 📈 Performance Optimization
### Optimization Strategies
- Component lazy loading
- Virtual scrolling for large lists
- Data caching strategies
- Bundle size optimization
## 📋 Development Guidelines
### Code Standards
- ESLint + Prettier configuration
- TypeScript support
- Component naming conventions
- Testing best practices
## 📄 License
This module is licensed under the MIT License. See the LICENSE file in the project root directory for details.
---
**Contact Information:**
- Project Repository: [Agricultural Stock Platform](https://github.com/agricultural-stock-platform)
- Technical Support: support@agricultural-stock.com
- Development Team: Agricultural Stock Platform Team

View File

@@ -0,0 +1,330 @@
# 🌾 Spark Data Processing Module Documentation
## 📋 Module Overview
**spark-processor** is the core data processing engine of the Agricultural Stock Data Analysis System, built on Apache Spark 3.4.0. It is responsible for large-scale processing, technical analysis, and market analysis of agricultural listed companies' stock data.
## 🏗️ Technical Architecture
### Core Technology Stack
- **Apache Spark 3.4.0** - Distributed Big Data Processing Framework
- **Spark SQL** - Structured Data Query and Processing
- **Spark Streaming** - Real-time Stream Data Processing
- **MySQL 8.0** - Data Storage and Persistence
- **Java 8** - Programming Language
- **Maven 3.6+** - Project Build Management
### Architecture Design
```
┌─────────────────────────────────────────────────────────────┐
│ Spark Data Processing Module │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Data Cleaning │ │ Technical │ │ Market │ │
│ │ Service │ │ Indicator │ │ Analysis │ │
│ │ │ │ Service │ │ Service │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Database Save │ │ Configuration │ │
│ │ Service │ │ SparkConfig │ │
│ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ StockDataProcessor (Main Processing Class) │
└─────────────────────────────────────────────────────────────┘
```
## 📁 Project Structure
```
spark-processor/
├── src/main/java/com/agricultural/spark/
│ ├── StockDataProcessor.java # Main processing class
│ ├── config/
│ │ └── SparkConfig.java # Configuration management
│ └── service/
│ ├── DataCleaningService.java # Data cleaning service
│ ├── TechnicalIndicatorService.java # Technical indicator service
│ ├── MarketAnalysisService.java # Market analysis service
│ └── DatabaseSaveService.java # Database save service
├── src/main/resources/
│ ├── application.conf # Application configuration
│ └── logback.xml # Logging configuration
├── database_tables.sql # Database table structure
├── pom.xml # Maven configuration
└── README_DATABASE.md # Database documentation
```
## 🔧 Core Functional Modules
### 1. Main Data Processor (StockDataProcessor)
**Description:** The core scheduler of the system, responsible for coordinating the workflow of various service modules.
**Main Responsibilities:**
- Spark session management and initialization
- Data loading and preprocessing coordination
- Batch processing and stream processing mode switching
- Exception handling and resource management
**Key Methods:**
```java
// Batch processing mode
public void runBatchProcessing()
// Stream processing mode
public void runStreamProcessing()
// Load data from MySQL
public Dataset<Row> loadStockDataFromMySQL()
```
### 2. Data Cleaning Service (DataCleaningService)
**Description:** Standardized cleaning and preprocessing of raw stock data.
**Processing Flow:**
1. **Deduplication** - Remove duplicate records based on stock code and trading date
2. **Missing Value Handling** - Fill numerical fields with 0, string fields with empty values
3. **Data Type Conversion** - Ensure field type correctness
4. **Outlier Detection** - Identify and handle anomalous data in prices, volumes, etc.
5. **Derived Field Calculation** - Calculate percentage changes, market cap, and other derived metrics
**Key Functions:**
```java
// Main cleaning method
public Dataset<Row> cleanData(Dataset<Row> rawData)
// Missing value handling
private Dataset<Row> handleMissingValues(Dataset<Row> data)
// Outlier handling
private Dataset<Row> handleOutliers(Dataset<Row> data)
```
### 3. Technical Indicator Service (TechnicalIndicatorService)
**Description:** Calculate various technical analysis indicators to provide data support for quantitative analysis.
**Supported Technical Indicators:**
- **Moving Averages (MA)** - MA5, MA10, MA20, MA30
- **Relative Strength Index (RSI)** - 14-day RSI indicator
- **MACD Indicator** - Fast line, slow line, histogram
- **Bollinger Bands** - Upper band, middle band, lower band
- **Volume Moving Average** - Volume technical analysis
**Calculation Methods:**
```java
// Calculate technical indicators
public Dataset<Row> calculateTechnicalIndicators(Dataset<Row> data)
// Moving averages calculation
private Dataset<Row> calculateMovingAverages(Dataset<Row> data)
// RSI indicator calculation
private Dataset<Row> calculateRSI(Dataset<Row> data)
```
### 4. Market Analysis Service (MarketAnalysisService)
**Description:** Analyze overall market performance and industry distribution from a macro perspective.
**Analysis Dimensions:**
- **Market Overview** - Rise/fall statistics, average percentage change, total market cap
- **Industry Performance** - Stock performance statistics by industry classification
- **Market Trends** - Historical trend analysis and forecasting
- **Sector Rotation** - Fund flow analysis between different sectors
**Core Analysis:**
```java
// Market overview analysis
public Map<String, Object> analyzeMarketOverview(Dataset<Row> data)
// Industry performance analysis
public Dataset<Row> analyzeIndustryPerformance(Dataset<Row> data)
// Market trend analysis
public Dataset<Row> analyzeTrends(Dataset<Row> data)
```
### 5. Database Save Service (DatabaseSaveService)
**Description:** Persist Spark-processed result data to MySQL database.
**Save Strategy:**
- **Incremental Updates** - Save only new or changed data
- **Batch Writing** - Improve data writing efficiency
- **Transaction Management** - Ensure data consistency
- **Connection Pool Management** - Optimize database connection performance
**Main Functions:**
```java
// Save market analysis results
public void saveMarketAnalysis(Map<String, Object> analysisResult)
// Save technical indicator data
public void saveTechnicalIndicators(Dataset<Row> indicators)
// Batch save processing results
public void batchSaveResults(List<Dataset<Row>> datasets)
```
## 🗄️ Database Design
### Main Data Tables
| Table Name | Description | Key Fields |
|------------|-------------|------------|
| `stock_data` | Stock basic data | stock_code, stock_name, open_price, close_price, volume, trade_date |
| `market_analysis` | Market analysis results | analysis_date, up_count, down_count, total_market_cap, avg_change_percent |
| `stock_technical_indicators` | Technical indicator data | stock_code, trade_date, ma5, ma10, ma20, rsi, macd |
| `industry_analysis` | Industry analysis data | industry_name, stock_count, avg_change_percent, total_market_cap |
| `market_trends` | Market trend data | trade_date, avg_price, total_volume, stock_count |
## ⚙️ Configuration Management
### Configuration File (application.conf)
```hocon
# Spark configuration
spark {
master = "local[*]"
app.name = "AgriculturalStockDataProcessor"
}
# MySQL database configuration
mysql {
host = "localhost"
port = 3306
database = "agricultural_stock"
username = "root"
password = "123456"
}
# Processing configuration
processing {
batch.size = 1000
window.duration = "10 seconds"
checkpoint.location = "/tmp/spark-checkpoint"
}
```
## 🚀 Deployment and Running
### 1. Environment Requirements
```bash
# Java 8+ (recommended OpenJDK 8)
java -version
# Maven 3.6+
mvn -version
# MySQL 8.0+
mysql --version
```
### 2. Database Setup
```bash
# Create database
mysql -u root -p -e "CREATE DATABASE agricultural_stock CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# Import table structure
mysql -u root -p agricultural_stock < database_tables.sql
```
### 3. Build and Run
```bash
# Compile project
mvn clean compile
# Run batch processing
mvn exec:java -Dexec.mainClass="com.agricultural.spark.StockDataProcessor"
# Run with custom parameters
mvn exec:java -Dexec.mainClass="com.agricultural.spark.StockDataProcessor" -Dexec.args="--mode batch --date 2024-01-01"
```
## 📊 Performance Optimization
### Spark Optimization Strategies
- **Memory Management** - Optimize heap size and garbage collection
- **Parallelism Tuning** - Adjust partition and executor numbers
- **Cache Strategy** - Cache frequently accessed datasets
- **Broadcast Variables** - Use broadcast for small lookup tables
### Database Optimization
- **Index Creation** - Create appropriate indexes for query optimization
- **Connection Pooling** - Use HikariCP for connection management
- **Batch Operations** - Use batch inserts for better performance
- **Query Optimization** - Optimize SQL queries and use prepared statements
## 📈 Monitoring and Maintenance
### Performance Monitoring
- **Spark UI** - Monitor job execution and resource usage
- **Application Metrics** - Track processing time and throughput
- **Database Metrics** - Monitor connection pool and query performance
- **System Resources** - Monitor CPU, memory, and disk usage
### Log Management
```xml
<!-- logback.xml configuration -->
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/spark-processor.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/spark-processor.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
```
## 📋 Development Guidelines
### Code Standards
- Follow Java coding conventions
- Use meaningful variable and method names
- Add comprehensive comments and documentation
- Implement proper error handling
- Write unit tests for critical components
### Testing Strategy
```bash
# Run unit tests
mvn test
# Run integration tests
mvn verify
# Generate coverage report
mvn jacoco:report
```
## 📄 License
This module is licensed under the MIT License. See the LICENSE file in the project root directory for details.
---
**Contact Information:**
- Project Repository: [Agricultural Stock Platform](https://github.com/agricultural-stock-platform)
- Technical Support: support@agricultural-stock.com
- Development Team: Agricultural Stock Platform Team

64
docs/dist/docs/en/index.md vendored Normal file
View File

@@ -0,0 +1,64 @@
# Welcome to Agricultural Stock Data Analysis System
The Agricultural Stock Data Analysis System is a comprehensive big data-driven platform focused on agricultural listed companies' stock data collection, processing, analysis, and visualization.
## 🌟 Key Features
- **🚀 Real-time Data Collection** - Automated collection of agricultural stock data from multiple sources
- **🎨 Interactive Visualization** - Beautiful charts and dashboards with real-time updates
- **📱 Responsive Design** - Perfect experience across desktop and mobile devices
- **🌐 Comprehensive Analysis** - Technical indicators, market trends, and industry analysis
- **🤖 Big Data Processing** - Apache Spark-powered large-scale data processing
- **⚡ High Performance** - Optimized for handling millions of data points
- **🔍 Advanced Search** - Intelligent stock search and filtering capabilities
- **📝 Rich Documentation** - Complete technical documentation and user guides
## 🏗️ System Architecture
- **Microservices Design** - Modular architecture with independent services
- **Scalable Processing** - Distributed computing with Apache Spark
- **Modern Tech Stack** - Vue.js 3, Spring Boot, Python, and MySQL
- **Real-time Updates** - WebSocket-based live data streaming
## 📦 System Components
```bash
# Data Collection Layer
├── Python Data Collector # Real-time stock data collection
├── External APIs Integration # Tencent Finance, Sina Finance
# Data Processing Layer
├── Apache Spark Processor # Big data processing engine
├── Technical Indicators # MA, RSI, MACD, Bollinger Bands
├── Market Analysis # Industry trends, market overview
# Service Layer
├── Spring Boot Backend # RESTful API services
├── WebSocket Services # Real-time data streaming
├── Redis Caching # Performance optimization
# Presentation Layer
├── Vue.js Frontend # Interactive user interface
├── ECharts Visualization # Charts and graphs
└── Responsive Design # Mobile-friendly UI
```
## 📊 Supported Agricultural Stocks
- **New Hope (sz000876)** - Leading livestock and feed company
- **Muyuan Foodstuff (sz002714)** - Major pig farming enterprise
- **Kweichow Moutai (sh600519)** - Premium liquor producer
- **Wuliangye Yibin (sz000858)** - Famous Chinese spirits brand
- **Inner Mongolia Yili (sh600887)** - Dairy industry leader
- **Jiangsu Yanghe (sz002304)** - Renowned liquor manufacturer
## 🚀 Getting Started
Visit our [System Guide](/guide) to learn about each component and how to deploy the platform.
## 🔗 Related Links
- [GitHub Repository](https://github.com/agricultural-stock-platform)
- [System Guide](/guide)
- [Data Collector](/guide/data-collector)
- [Spark Processor](/guide/spark-processor)

87
docs/dist/docs/zh-cn/guide.md vendored Normal file
View File

@@ -0,0 +1,87 @@
# 🌾 农业股票数据分析系统开发指南
## 📋 项目协作概述
农业股票数据分析系统由四个核心子项目组成,通过精密的协作机制实现从数据采集到用户展示的完整数据流水线。本指南详细说明各子项目的协作关系、开发流程和运作机制。
## 🏗️ 系统架构与数据流
### 整体数据流向
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 外部数据源 │ │ 数据采集器 │ │ Spark处理器 │ │ 后端API服务 │
│ External APIs │───▶│ data-collector │───▶│ spark-processor │───▶│ backend │
│ │ │ │ │ │ │ │
│ • 腾讯财经API │ │ • Python爬虫 │ │ • 数据清洗 │ │ • RESTful API │
│ • 新浪财经API │ │ • 实时采集 │ │ • 技术指标计算 │ │ • 数据缓存 │
│ • 东方财富API │ │ • 数据验证 │ │ • 市场分析 │ │ • WebSocket │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ MySQL数据库 │ │ 前端界面 │
│ Database │ │ frontend │
│ │ │ │
│ • 原始数据存储 │ │ • Vue.js界面 │
│ • 分析结果存储 │ │ • 图表展示 │
│ • 索引优化 │◀───│ • 用户交互 │
└─────────────────┘ └─────────────────┘
```
### 2. 部署协作检查清单
#### 数据库团队责任
- [ ] MySQL 8.0环境搭建完成
- [ ] 数据库表结构创建完成
- [ ] 索引优化配置完成
- [ ] 数据库连接池配置完成
- [ ] 备份策略配置完成
#### 数据采集器团队责任
- [ ] Python 3.8+环境配置完成
- [ ] 依赖包安装完成
- [ ] 配置文件环境变量设置完成
- [ ] 定时任务调度配置完成
- [ ] 日志监控配置完成
#### Spark处理器团队责任
- [ ] Java 8环境配置完成
- [ ] Spark 3.4.0集群搭建完成
- [ ] Maven依赖管理配置完成
- [ ] 作业调度配置完成
- [ ] 性能监控配置完成
#### 后端API团队责任
- [ ] Spring Boot应用打包完成
- [ ] Redis缓存服务配置完成
- [ ] API接口测试通过
- [ ] WebSocket服务配置完成
- [ ] 负载均衡配置完成
#### 前端界面团队责任
- [ ] Node.js环境配置完成
- [ ] Vue项目构建完成
- [ ] 静态资源部署完成
- [ ] CDN配置优化完成
- [ ] 浏览器兼容性测试完成
## 📋 协作成功要素
### 1. 技术栈统一
- **开发语言标准化**Python 3.8+, Java 8+, Node.js 16+
- **数据库统一**MySQL 8.0 + Redis 6.0
- **容器化部署**Docker + Kubernetes
- **监控工具统一**ELK Stack + Prometheus
### 2. 文档协作规范
- **API文档**使用Swagger/OpenAPI 3.0
- **数据库文档**使用DbDoc自动生成
- **部署文档**使用Markdown + 流程图
- **用户手册**使用GitBook或VuePress
通过以上协作开发流程,四个子项目能够有机结合,形成一个高效、稳定、可扩展的农业股票数据分析系统。每个团队在专注自身模块开发的同时,通过标准化的接口和协作机制,确保系统整体的一致性和可靠性。

280
docs/dist/docs/zh-cn/guide/backend.md vendored Normal file
View File

@@ -0,0 +1,280 @@
# 🏠 Spring Boot后端API文档
## 📋 模块概述
**backend** 是农业股票数据分析系统的后端API服务模块基于Spring Boot 2.7.0构建负责提供RESTful API接口、业务逻辑处理、数据库操作和系统集成服务。
## Swagger UI访问
启动应用后可通过以下地址访问API文档
- **Swagger UI:** http://localhost:8080/swagger-ui/index.html
- **OpenAPI JSON:** http://localhost:8080/v3/api-docs
## 🏗️ 技术架构
### 核心技术栈
- **Spring Boot 2.7.0** - 核心框架
- **Spring Web** - RESTful API支持
- **Spring Data JPA** - 数据持久化
- **MyBatis Plus 3.5.2** - 数据库操作增强
- **MySQL 8.0** - 关系型数据库
- **Redis** - 缓存与会话管理
- **WebSocket** - 实时数据推送
- **SpringDoc OpenAPI 3** - API文档生成
- **Lombok** - 代码简化工具
### 系统架构图
```
┌─────────────────────────────────────────────────────────────┐
│ Spring Boot 后端服务 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ 控制器层 │ │ 服务层 │ │ 数据层 │ │
│ │ Controllers │ │ Services │ │ Mappers │ │
│ │ │ │ │ │ │ │
│ │ • 股票数据API │ │ • 股票数据服务 │ │ • 数据访问 │ │
│ │ • 市场分析API │ │ • 市场分析服务 │ │ • SQL映射 │ │
│ │ • 健康检查API │ │ • 缓存服务 │ │ • 实体映射 │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ 实体层 │ │ 配置层 │ │ 工具层 │ │
│ │ Entities │ │ Configurations │ │ Utils │ │
│ │ │ │ │ │ │ │
│ │ • 数据模型 │ │ • 数据库配置 │ │ • 响应封装 │ │
│ │ • VO对象 │ │ • Redis配置 │ │ • 异常处理 │ │
│ │ • DTO对象 │ │ • WebSocket配置 │ │ • 工具类 │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## 📁 项目结构
```
backend/
├── src/main/java/com/agricultural/stock/
│ ├── StockPlatformApplication.java # 应用启动类
│ ├── controller/ # 控制器层
│ │ ├── StockController.java # 股票数据API控制器
│ │ ├── MarketAnalysisController.java # 市场分析API控制器
│ │ └── HealthController.java # 健康检查控制器
│ ├── service/ # 服务层
│ │ ├── StockService.java # 股票数据服务接口
│ │ ├── MarketAnalysisService.java # 市场分析服务
│ │ └── impl/
│ │ └── StockServiceImpl.java # 股票数据服务实现
│ ├── entity/ # 实体层
│ │ ├── StockData.java # 股票数据实体
│ │ ├── MarketAnalysis.java # 市场分析实体
│ │ └── MarketTrends.java # 市场趋势实体
│ ├── mapper/ # 数据访问层
│ │ ├── StockDataMapper.java # 股票数据Mapper
│ │ └── MarketAnalysisMapper.java # 市场分析Mapper
│ ├── vo/ # 视图对象
│ │ ├── Result.java # 统一响应结果
│ │ ├── StockAnalysisVO.java # 股票分析视图对象
│ │ └── StockTrendVO.java # 股票趋势视图对象
│ └── config/ # 配置类
│ ├── WebConfig.java # Web配置
│ ├── RedisConfig.java # Redis配置
│ └── WebSocketConfig.java # WebSocket配置
├── src/main/resources/
│ ├── application.yml # 应用配置文件
│ ├── mapper/ # MyBatis映射文件
│ └── static/ # 静态资源
└── pom.xml # Maven配置文件
```
## 🔧 核心功能模块
### 1. 股票数据API (StockController)
**功能描述:** 提供股票数据的增删改查、排行榜、搜索等核心API接口。
**主要接口:**
| HTTP方法 | 路径 | 描述 | 响应格式 |
|---------|------|------|----------|
| GET | `/api/stock/realtime` | 获取实时股票数据 | `Result<List<StockData>>` |
| GET | `/api/stock/history/{stockCode}` | 获取历史数据 | `Result<List<StockData>>` |
| GET | `/api/stock/ranking/growth` | 涨幅排行榜 | `Result<List<StockData>>` |
| GET | `/api/stock/ranking/market-cap` | 市值排行榜 | `Result<List<StockData>>` |
| GET | `/api/stock/ranking/volume` | 成交量排行榜 | `Result<List<StockData>>` |
| GET | `/api/stock/trend/{stockCode}` | 股票趋势分析 | `Result<StockTrendVO>` |
| GET | `/api/stock/analysis` | 市场综合分析 | `Result<StockAnalysisVO>` |
| GET | `/api/stock/search` | 股票搜索 | `Result<List<StockData>>` |
| POST | `/api/stock/save` | 保存股票数据 | `Result<StockData>` |
| POST | `/api/stock/batch-save` | 批量保存数据 | `Result<Integer>` |
### 2. 市场分析API (MarketAnalysisController)
**功能描述:** 提供市场分析数据的查询和统计接口。
**主要接口:**
| HTTP方法 | 路径 | 描述 | 参数 |
|---------|------|------|------|
| GET | `/api/market/latest` | 获取最新市场分析 | 无 |
| GET | `/api/market/recent/{days}` | 获取最近N天数据 | days: 天数 |
| GET | `/api/market/range` | 获取日期范围数据 | startDate, endDate |
## 🚀 部署与运行
### 1. 环境准备
```bash
# 检查Java版本
java -version
# 检查Maven版本
mvn -version
# 启动MySQL服务
sudo systemctl start mysql
# 启动Redis服务
sudo systemctl start redis
```
### 2. 数据库初始化
```sql
#
CREATE DATABASE agricultural_stock CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
#
mysql -u root -p agricultural_stock < ../agricultural_stock.sql
```
### 3. 编译运行
```bash
# 进入后端目录
cd backend
# 清理编译
mvn clean compile
# 运行应用
mvn spring-boot:run
# 或打包后运行
mvn package
java -jar target/stock-platform-backend-1.0.0.jar
```
### 4. Docker部署
**Dockerfile:**
```dockerfile
FROM openjdk:8-jre-alpine
VOLUME /tmp
COPY target/stock-platform-backend-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
```
**构建镜像:**
```bash
# 构建Docker镜像
docker build -t agricultural-stock-backend .
# 运行容器
docker run -d -p 8080:8080 \
-e SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/agricultural_stock \
-e SPRING_REDIS_HOST=redis \
--name backend agricultural-stock-backend
```
## 📊 API文档
### Swagger UI访问
启动应用后可通过以下地址访问API文档
- **Swagger UI:** http://localhost:8080/swagger-ui/index.html
- **OpenAPI JSON:** http://localhost:8080/v3/api-docs
## 📈 性能优化
### 1. 数据库优化
**连接池配置:**
```yaml
spring:
datasource:
hikari:
minimum-idle: 5 # 最小空闲连接
maximum-pool-size: 20 # 最大连接池大小
max-lifetime: 1800000 # 连接最大生存时间
connection-timeout: 30000 # 连接超时时间
```
**索引优化:**
```sql
#
CREATE INDEX idx_stock_code ON stock_data(stock_code);
#
CREATE INDEX idx_trade_date ON stock_data(trade_date);
#
CREATE INDEX idx_stock_trade ON stock_data(stock_code, trade_date);
```
## 📋 监控与维护
### 1. 健康检查
**健康检查接口:**
```java
@RestController
@RequestMapping("/api/health")
public class HealthController {
@GetMapping("/check")
public Result<Map<String, Object>> healthCheck() {
Map<String, Object> status = new HashMap<>();
status.put("status", "UP");
status.put("timestamp", System.currentTimeMillis());
status.put("database", checkDatabase());
status.put("redis", checkRedis());
return Result.success(status);
}
}
```
### 2. 日志管理
**日志配置示例:**
```yaml
logging:
level:
root: INFO
com.agricultural.stock: DEBUG
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file:
name: logs/backend.log
max-size: 100MB
max-history: 30
```
## 📄 许可证
本模块采用 MIT 许可证,详见项目根目录 LICENSE 文件。
---
**联系信息:**
- 项目仓库: [Agricultural Stock Platform](https://github.com/agricultural-stock-platform)
- 技术支持: support@agricultural-stock.com
- 开发团队: Agricultural Stock Platform Team

View File

@@ -0,0 +1,179 @@
# 📊 Python数据采集器文档
## 📋 模块概述
**data-collector** 是农业股票数据分析系统的数据采集模块基于Python 3.8+构建负责从外部数据源实时采集农业类上市公司的股票数据并将数据存储到MySQL数据库中供后续分析使用。
## 🏗️ 技术架构
### 核心技术栈
- **Python 3.8+** - 编程语言
- **Requests 2.31.0** - HTTP请求库
- **Pandas 2.1.0** - 数据处理库
- **BeautifulSoup4 4.12.2** - HTML解析库
- **MySQL Connector 8.1.0** - MySQL数据库连接器
- **Schedule 1.2.0** - 任务调度库
- **NumPy 1.26.0** - 数值计算库
## 📁 项目结构
```
data-collector/
├── stock_crawler.py # 主要爬虫程序
├── config.ini # 配置文件
├── requirements.txt # Python依赖
└── stock_crawler.log # 运行日志
```
## 🔧 核心功能
### 1. 股票数据采集
支持从腾讯财经API采集以下农业股票数据
- 新希望 (sz000876)
- 牧原股份 (sz002714)
- 贵州茅台 (sh600519)
- 五粮液 (sz000858)
- 伊利股份 (sh600887)
- 洋河股份 (sz002304)
### 2. 数据处理功能
- 实时价格数据获取
- 涨跌幅自动计算
- 成交额计算
- 数据格式标准化
- 异常数据过滤
### 3. 数据库存储
- MySQL批量写入
- 重复数据更新
- 事务管理
- 连接池管理
### 4. 任务调度
- 定时数据采集
- 错误重试机制
- 日志记录
- 状态监控
## ⚙️ 配置管理
### config.ini 配置文件
```ini
[database]
host = localhost
port = 3306
user = root
password = 123456
database = agricultural_stock
[crawler]
request_interval = 0.5
request_timeout = 10
max_retries = 3
user_agent = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
[logging]
level = INFO
file = stock_crawler.log
```
## 🚀 部署与运行
### 1. 环境准备
```bash
# 检查Python版本
python --version # 需要 3.8+
# 安装依赖
pip install -r requirements.txt
```
### 2. 配置设置
```bash
# 编辑配置文件
vim config.ini
# 配置数据库连接信息
[database]
host = localhost
port = 3306
user = your_username
password = your_password
database = agricultural_stock
```
### 3. 运行方式
```bash
# 执行一次数据采集
python stock_crawler.py
# 后台运行
nohup python stock_crawler.py > /dev/null 2>&1 &
```
## 📊 数据质量保证
### 数据验证机制
- 必填字段完整性检查
- 价格数据合理性验证
- 涨跌幅异常值检测
- 成交量负值过滤
### 异常处理
- 网络请求重试机制
- 数据库连接故障恢复
- 错误日志详细记录
- 优雅异常处理
## 📈 监控与维护
### 日志管理
系统自动记录以下信息:
- 数据采集开始/结束时间
- 成功采集的股票数量
- 失败的股票代码和原因
- 数据库操作结果
- 异常错误详情
### 性能监控
- 采集耗时统计
- 成功率监控
- 错误率统计
- 数据库性能监控
## 📋 依赖管理
### requirements.txt
```txt
requests>=2.31.0
pandas>=2.1.0
beautifulsoup4>=4.12.2
lxml>=4.9.3
mysql-connector-python>=8.1.0
schedule>=1.2.0
numpy>=1.26.0
```
## 📄 许可证
本模块采用 MIT 许可证,详见项目根目录 LICENSE 文件。
---
**联系信息:**
- 项目仓库: [Agricultural Stock Platform](https://github.com/agricultural-stock-platform)
- 技术支持: support@agricultural-stock.com
- 开发团队: Agricultural Stock Platform Team

248
docs/dist/docs/zh-cn/guide/frontend.md vendored Normal file
View File

@@ -0,0 +1,248 @@
# 🎨 Vue.js前端界面文档
## 📋 模块概述
**frontend** 是农业股票数据分析系统的前端用户界面模块基于Vue.js 3.3.0构建提供现代化的响应式Web界面支持实时数据展示、交互式图表、股票分析和市场监控功能。
## 🏗️ 技术架构
### 核心技术栈
- **Vue 3.3.0** - 渐进式JavaScript框架
- **Vue Router 4.2.0** - 官方路由管理器
- **Vuex 4.0.2** - 状态管理模式
- **Element Plus 2.3.0** - Vue 3组件库
- **ECharts 5.4.0** - 数据可视化图表库
- **Axios 1.4.0** - HTTP客户端
- **Vite 4.3.0** - 构建工具
- **SASS 1.62.0** - CSS预处理器
- **WebSocket** - 实时数据通信
### 系统架构图
```
┌─────────────────────────────────────────────────────────────┐
│ Vue.js 前端应用 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ 视图层 │ │ 状态管理 │ │ 路由管理 │ │
│ │ Views │ │ Vuex │ │ Vue Router │ │
│ │ │ │ │ │ │ │
│ │ • 仪表板页面 │ │ • 股票数据状态 │ │ • 路由配置 │ │
│ │ • 市场分析页面 │ │ • 用户界面状态 │ │ • 导航守卫 │ │
│ │ • 股票详情页面 │ │ • 异步操作 │ │ • 懒加载 │ │
│ │ • 数据管理页面 │ │ • 缓存管理 │ │ • 嵌套路由 │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ 组件层 │ │ 服务层 │ │ 工具层 │ │
│ │ Components │ │ Services │ │ Utils │ │
│ │ │ │ │ │ │ │
│ │ • 图表组件 │ │ • API接口 │ │ • 工具函数 │ │
│ │ • 表格组件 │ │ • WebSocket │ │ • 常量定义 │ │
│ │ • 搜索组件 │ │ • 数据处理 │ │ • 格式化 │ │
│ │ • 排行榜组件 │ │ • 错误处理 │ │ • 验证器 │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## 📁 项目结构
```
frontend/
├── public/
│ ├── index.html # 入口HTML文件
│ └── favicon.ico # 网站图标
├── src/
│ ├── main.js # 应用入口文件
│ ├── App.vue # 根组件
│ ├── views/ # 页面视图
│ │ ├── Dashboard.vue # 仪表板页面
│ │ ├── MarketAnalysis.vue # 市场分析页面
│ │ ├── StockDetail.vue # 股票详情页面
│ │ ├── StockSearch.vue # 股票搜索页面
│ │ ├── Rankings.vue # 排行榜页面
│ │ ├── DataManagement.vue # 数据管理页面
│ │ └── HealthCheck.vue # 健康检查页面
│ ├── components/ # 可复用组件
│ │ └── MarketOverview.vue # 市场总览组件
│ ├── router/ # 路由配置
│ │ └── index.js # 路由定义
│ ├── store/ # 状态管理
│ │ ├── index.js # Vuex store
│ │ └── modules/ # 模块化store
│ ├── api/ # API接口
│ │ ├── stock.js # 股票数据API
│ │ └── market.js # 市场分析API
│ ├── utils/ # 工具函数
│ │ ├── request.js # HTTP请求封装
│ │ ├── format.js # 数据格式化
│ │ └── constants.js # 常量定义
│ └── styles/ # 样式文件
│ ├── main.scss # 主样式文件
│ └── variables.scss # 样式变量
├── package.json # 项目依赖配置
├── vite.config.js # Vite构建配置
└── .eslintrc.js # ESLint配置
```
## 🔧 核心功能模块
### 1. 仪表板页面 (Dashboard.vue)
**功能描述:** 系统主页面,提供股票市场的整体概览和关键指标展示。
**主要功能:**
- 实时市场数据展示
- 涨跌分布统计图表
- 成交量趋势分析
- 热门股票快速入口
- 市场新闻资讯展示
### 2. 市场分析页面 (MarketAnalysis.vue)
**功能描述:** 提供深度的市场分析功能,包括技术指标、趋势分析和预测模型。
**主要功能:**
- K线图表展示
- 技术指标分析MA、RSI、MACD
- 市场热力图
- 行业对比分析
- 历史数据回测
### 3. 股票详情页面 (StockDetail.vue)
**功能描述:** 展示单个股票的详细信息,包括实时价格、历史走势和基本面分析。
**主要功能:**
- 实时价格展示
- 历史价格走势图
- 成交量分析
- 基本面数据PE、PB、市值等
- 相关新闻和公告
### 4. 股票搜索页面 (StockSearch.vue)
**功能描述:** 提供智能的股票搜索功能,支持多种搜索条件和筛选器。
**主要功能:**
- 关键词搜索(股票代码、名称)
- 高级筛选(价格区间、市值、行业)
- 搜索结果排序
- 收藏夹功能
- 搜索历史记录
### 5. 排行榜页面 (Rankings.vue)
**功能描述:** 展示各类股票排行榜,帮助用户快速发现市场热点。
**主要功能:**
- 涨幅排行榜
- 跌幅排行榜
- 成交量排行榜
- 市值排行榜
- 换手率排行榜
### 6. 数据管理页面 (DataManagement.vue)
**功能描述:** 为管理员提供数据管理功能,包括数据导入、导出和系统监控。
**主要功能:**
- 股票数据批量导入
- 历史数据导出
- 数据同步状态监控
- 系统健康检查
- 错误日志查看
## 🚀 部署与运行
### 1. 开发环境
```bash
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 代码检查
npm run lint
# 代码格式化
npm run format
```
### 2. 生产构建
```bash
# 构建生产版本
npm run build
# 预览构建结果
npm run preview
```
### 3. Docker部署
**Dockerfile:**
```dockerfile
# 构建阶段
FROM node:16-alpine as builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
# 生产阶段
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
```
**nginx.conf:**
```nginx
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://backend:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /ws {
proxy_pass http://backend:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
```
## 📄 许可证
本模块采用 MIT 许可证,详见项目根目录 LICENSE 文件。
---
**联系信息:**
- 项目仓库: [Agricultural Stock Platform](https://github.com/agricultural-stock-platform)
- 技术支持: support@agricultural-stock.com
- 开发团队: Agricultural Stock Platform Team

View File

@@ -0,0 +1,422 @@
# 🌾 Spark数据处理模块文档
## 📋 模块概述
**spark-processor** 是农业股票数据分析系统的核心数据处理引擎基于Apache Spark 3.4.0构建,负责对农业相关上市公司的股票数据进行大规模处理、技术分析和市场分析。
## 🏗️ 技术架构
### 核心技术栈
- **Apache Spark 3.4.0** - 分布式大数据处理框架
- **Spark SQL** - 结构化数据查询与处理
- **Spark Streaming** - 实时流数据处理
- **MySQL 8.0** - 数据存储与持久化
- **Java 8** - 编程语言
- **Maven 3.6+** - 项目构建管理
### 架构设计
```
┌─────────────────────────────────────────────────────────────┐
│ Spark数据处理模块 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ 数据清洗服务 │ │ 技术指标服务 │ │ 市场分析服务 │ │
│ │ DataCleaning │ │ TechnicalIndica │ │ MarketAnaly │ │
│ │ Service │ │ torService │ │ sisService │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 数据库保存服务 │ │ 配置管理 │ │
│ │ DatabaseSave │ │ SparkConfig │ │
│ │ Service │ │ │ │
│ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ StockDataProcessor (主处理类) │
└─────────────────────────────────────────────────────────────┘
```
## 📁 项目结构
```
spark-processor/
├── src/main/java/com/agricultural/spark/
│ ├── StockDataProcessor.java # 主处理类
│ ├── config/
│ │ └── SparkConfig.java # 配置管理类
│ └── service/
│ ├── DataCleaningService.java # 数据清洗服务
│ ├── TechnicalIndicatorService.java # 技术指标计算服务
│ ├── MarketAnalysisService.java # 市场分析服务
│ └── DatabaseSaveService.java # 数据库保存服务
├── src/main/resources/
│ ├── application.conf # 应用配置文件
│ └── logback.xml # 日志配置
├── database_tables.sql # 数据库表结构
├── pom.xml # Maven配置文件
└── README_DATABASE.md # 数据库文档
```
## 🔧 核心功能模块
### 1. 数据处理主类 (StockDataProcessor)
**功能描述:** 系统的核心调度器,负责协调各个服务模块的工作流程。
**主要职责:**
- Spark会话管理与初始化
- 数据加载与预处理协调
- 批处理与流处理模式切换
- 异常处理与资源管理
**关键方法:**
```java
// 批处理模式
public void runBatchProcessing()
// 流处理模式
public void runStreamProcessing()
// 从MySQL加载数据
public Dataset<Row> loadStockDataFromMySQL()
```
### 2. 数据清洗服务 (DataCleaningService)
**功能描述:** 对原始股票数据进行标准化清洗和预处理。
**处理流程:**
1. **去重处理** - 基于股票代码和交易日期去除重复记录
2. **缺失值处理** - 数值字段填充0字符串字段填充空值
3. **数据类型转换** - 确保字段类型正确性
4. **异常值检测** - 识别并处理价格、成交量等异常数据
5. **派生字段计算** - 计算涨跌幅、市值等衍生指标
**关键功能:**
```java
// 主要清洗方法
public Dataset<Row> cleanData(Dataset<Row> rawData)
// 缺失值处理
private Dataset<Row> handleMissingValues(Dataset<Row> data)
// 异常值处理
private Dataset<Row> handleOutliers(Dataset<Row> data)
```
### 3. 技术指标服务 (TechnicalIndicatorService)
**功能描述:** 计算各种技术分析指标,为量化分析提供数据支撑。
**支持的技术指标:**
- **移动平均线 (MA)** - MA5, MA10, MA20, MA30
- **相对强弱指数 (RSI)** - 14日RSI指标
- **MACD指标** - 快线、慢线、柱状图
- **布林带 (Bollinger Bands)** - 上轨、中轨、下轨
- **成交量移动平均** - 成交量技术分析
**计算方法:**
```java
// 计算技术指标
public Dataset<Row> calculateTechnicalIndicators(Dataset<Row> data)
// 移动平均线计算
private Dataset<Row> calculateMovingAverages(Dataset<Row> data)
// RSI指标计算
private Dataset<Row> calculateRSI(Dataset<Row> data)
```
### 4. 市场分析服务 (MarketAnalysisService)
**功能描述:** 从宏观角度分析市场整体表现和行业分布。
**分析维度:**
- **市场总览** - 涨跌统计、平均涨跌幅、总市值
- **行业表现** - 按行业分类的股票表现统计
- **市场趋势** - 历史走势分析和预测
- **板块轮动** - 不同板块间的资金流向分析
**核心分析:**
```java
// 市场总览分析
public Map<String, Object> analyzeMarketOverview(Dataset<Row> data)
// 行业表现分析
public Dataset<Row> analyzeIndustryPerformance(Dataset<Row> data)
// 市场趋势分析
public Dataset<Row> analyzeTrends(Dataset<Row> data)
```
### 5. 数据库保存服务 (DatabaseSaveService)
**功能描述:** 将Spark处理后的结果数据持久化到MySQL数据库。
**保存策略:**
- **增量更新** - 仅保存新增或变更的数据
- **批量写入** - 提高数据写入效率
- **事务管理** - 保证数据一致性
- **连接池管理** - 优化数据库连接性能
**主要功能:**
```java
// 保存市场分析结果
public void saveMarketAnalysis(Map<String, Object> analysisResult)
// 保存技术指标数据
public void saveTechnicalIndicators(Dataset<Row> indicators)
// 批量保存处理结果
public void batchSaveResults(List<Dataset<Row>> datasets)
```
## 🗄️ 数据库设计
### 主要数据表
| 表名 | 描述 | 主要字段 |
|------|------|----------|
| `stock_data` | 股票基础数据 | stock_code, stock_name, open_price, close_price, volume, trade_date |
| `market_analysis` | 市场分析结果 | analysis_date, up_count, down_count, total_market_cap, avg_change_percent |
| `stock_technical_indicators` | 技术指标数据 | stock_code, trade_date, ma5, ma10, ma20, rsi, macd |
| `industry_analysis` | 行业分析数据 | industry_name, stock_count, avg_change_percent, total_market_cap |
| `market_trends` | 市场趋势数据 | trade_date, avg_price, total_volume, stock_count |
## ⚙️ 配置管理
### 配置文件 (application.conf)
```hocon
# Spark配置
spark {
master = "local[*]"
app.name = "AgriculturalStockDataProcessor"
}
# MySQL数据库配置
mysql {
host = "localhost"
port = 3306
database = "agricultural_stock"
user = "root"
password = "your_password"
}
# 输出路径配置
output {
path = "/tmp/spark-output"
}
```
### 环境配置说明
**开发环境:**
- Spark Master: `local[*]` (使用所有可用CPU核心)
- 内存设置: 建议4GB以上
- MySQL: 本地实例
**生产环境:**
- Spark Master: `spark://master:7077` (集群模式)
- 内存设置: 根据数据量调整
- MySQL: 高可用集群
## 🚀 部署与运行
### 1. 环境准备
```bash
# 检查Java版本
java -version
# 检查Maven版本
mvn -version
# 启动MySQL服务
systemctl start mysql
```
### 2. 编译打包
```bash
# 进入项目目录
cd spark-processor
# 清理并编译
mvn clean compile
# 打包为可执行JAR
mvn package
```
### 3. 运行方式
**批处理模式:**
```bash
# 方式1: 使用Maven运行
mvn exec:java -Dexec.mainClass="com.agricultural.spark.StockDataProcessor"
# 方式2: 使用JAR包运行
java -jar target/spark-data-processor-1.0.0.jar
```
**流处理模式:**
```bash
# 启动流处理
java -jar target/spark-data-processor-1.0.0.jar stream
```
### 4. 集群部署
```bash
# 提交到Spark集群
spark-submit \
--class com.agricultural.spark.StockDataProcessor \
--master spark://master:7077 \
--executor-memory 2g \
--total-executor-cores 4 \
target/spark-data-processor-1.0.0.jar
```
## 📊 性能优化
### Spark优化配置
```java
SparkSession spark = SparkSession.builder()
.appName("AgriculturalStockDataProcessor")
.config("spark.sql.adaptive.enabled", "true") // 启用自适应查询
.config("spark.sql.adaptive.coalescePartitions.enabled", "true") // 分区合并
.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer") // 序列化优化
.config("spark.sql.shuffle.partitions", "200") // 调整分区数
.getOrCreate();
```
### 数据处理优化策略
1. **分区策略**
- 按交易日期分区,提高查询效率
- 控制分区大小在128MB-1GB之间
2. **缓存策略**
- 对频繁使用的数据集进行缓存
- 使用`MEMORY_AND_DISK`存储级别
3. **SQL优化**
- 使用列式存储减少I/O
- 谓词下推减少数据传输
## 📈 监控与日志
### 日志配置
**logback.xml配置:**
```xml
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/spark-processor.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.agricultural.spark" level="INFO"/>
<root level="WARN">
<appender-ref ref="FILE"/>
</root>
</configuration>
```
### 性能监控指标
- **处理速度:** 每秒处理记录数
- **内存使用:** 堆内存和Off-heap内存使用情况
- **任务执行时间:** 各阶段耗时统计
- **错误率:** 数据处理错误比例
## 🔧 故障排查
### 常见问题
**1. 内存不足 (OutOfMemoryError)**
```bash
# 解决方案增加executor内存
--executor-memory 4g --driver-memory 2g
```
**2. 连接超时**
```bash
# 检查数据库连接
telnet localhost 3306
# 调整超时配置
--conf spark.sql.execution.arrow.pyspark.enabled=false
```
**3. 数据倾斜**
```java
// 使用salting技术解决
data.withColumn("salt", rand().multiply(100).cast("int"))
```
## 📋 API接口
### 核心处理接口
**批量数据处理:**
```java
// 处理全量历史数据
processor.runBatchProcessing();
// 处理增量数据
processor.processIncrementalData(startDate, endDate);
```
**实时数据处理:**
```java
// 启动流处理
processor.runStreamProcessing();
// 停止流处理
processor.stopStreamProcessing();
```
## 🤝 开发指南
### 添加新的技术指标
1. **在TechnicalIndicatorService中添加计算方法**
```java
private Dataset<Row> calculateNewIndicator(Dataset<Row> data) {
// 指标计算逻辑
return data;
}
```
2. **在主流程中调用**
```java
Dataset<Row> withIndicators = technicalIndicatorService
.calculateNewIndicator(cleanedData);
```
3. **更新数据库表结构**
```sql
ALTER TABLE stock_technical_indicators
ADD COLUMN new_indicator DECIMAL(10,2);
```
### 扩展市场分析功能
1. **实现新的分析算法**
2. **添加相应的数据存储表**
3. **更新保存服务方法**
4. **编写单元测试**
## 📄 许可证
本模块采用 MIT 许可证,详见项目根目录 LICENSE 文件。
---
**联系信息:**
- 项目仓库: [Agricultural Stock Platform](https://github.com/agricultural-stock-platform)
- 技术支持: support@agricultural-stock.com
- 开发团队: Agricultural Stock Platform Team

58
docs/dist/docs/zh-cn/index.md vendored Normal file
View File

@@ -0,0 +1,58 @@
# 欢迎使用 Vue Docs UI
Vue Docs UI 是一个现代化的文档网站构建工具,基于 Vue 3 开发,提供开箱即用的文档解决方案。
## 🌟 主要特性
- **🚀 开箱即用** - 只需 3 行代码即可启动文档网站
- **🎨 现代设计** - 精美的界面设计,支持明暗主题切换
- **📱 移动端适配** - 完美的响应式设计
- **🌐 国际化支持** - 内置多语言支持
- **🤖 AI 助手** - 集成 AI 聊天助手,支持多种模型
- **⚡ 高性能** - 基于 Vite 构建,快速热重载
- **🔍 全文搜索** - 智能搜索功能
- **📝 Markdown 增强** - 丰富的 Markdown 扩展
## 🏗️ 架构特点
- **组件化设计** - 模块化组件,易于扩展
- **TypeScript 支持** - 完整的类型支持
- **可自定义主题** - 灵活的主题配置
- **插件系统** - 可扩展的插件架构
## 📦 快速开始
```bash
# 创建新项目
npm create vue-docs-ui@latest my-docs
# 进入项目目录
cd my-docs
# 安装依赖
npm install
# 启动开发服务器
npm run dev
```
## 📖 使用方式
```javascript
import { createDocsApp } from 'vue-docs-ui'
import 'vue-docs-ui/dist/vue-docs-ui.css'
createDocsApp({
configPath: '/config/site.yaml',
el: '#app'
})
```
就这么简单!无需复杂配置,立即拥有一个功能完整的文档网站。
## 🔗 相关链接
- [GitHub 仓库](https://github.com/shenjianZ/vue-docs-ui)
- [在线演示](https://vue-docs-ui.example.com)
- [使用指南](/guide/introduction)
- [API 文档](/advanced/api)

BIN
docs/dist/images/logo.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

25
docs/dist/images/placeholder.md vendored Normal file
View File

@@ -0,0 +1,25 @@
# 图片目录
将您的图片文件放在这个目录中。
支持的格式:
- PNG
- JPG/JPEG
- SVG
- WebP
- GIF
## 使用方式
在 Markdown 中引用图片:
```markdown
![图片描述](/images/your-image.png)
```
在配置文件中使用:
```yaml
site:
logo: "/images/logo.png"
```

16
docs/dist/index.html vendored Normal file
View File

@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vue Docs UI</title>
<meta name="description" content="Beautiful documentation website built with Vue Docs UI" />
<script type="module" crossorigin src="/assets/main-f65d595e.js"></script>
<link rel="stylesheet" href="/assets/index-64e04f5b.css">
</head>
<body>
<div id="app"></div>
</body>
</html>

View File

@@ -9,7 +9,7 @@
"version": "1.0.0",
"dependencies": {
"vue": "^3.3.0",
"vue-docs-ui": "^1.0.9",
"vue-docs-ui": "^1.0.11",
"vue-router": "^4.2.0"
},
"devDependencies": {
@@ -998,9 +998,9 @@
}
},
"node_modules/vue-docs-ui": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/vue-docs-ui/-/vue-docs-ui-1.0.9.tgz",
"integrity": "sha512-ULjwsw3OoLlb4EGVQ5roevTlPS1GksMCvJ98AK98V/Mn3+Wldu2mW6O4KsHQ6jov2ZXOu92JyL/dV/2Ggm2GuA==",
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/vue-docs-ui/-/vue-docs-ui-1.0.11.tgz",
"integrity": "sha512-dVt5HBAw+jxmfilB9rDalr2iSJrErww9MqmM7050Eua/s4CYQTuPdg7CplMnOsBhoXSN2zl0ripyJmP5/aIG6A==",
"dependencies": {
"@types/js-yaml": "^4.0.9",
"@types/markdown-it": "^14.1.2",

View File

@@ -11,7 +11,7 @@
"dependencies": {
"vue": "^3.3.0",
"vue-router": "^4.2.0",
"vue-docs-ui": "^1.0.9"
"vue-docs-ui": "^1.0.11"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.4.0",

View File

@@ -18,7 +18,7 @@ navbar:
active: true
- title: "Guide"
link: "/guide"
- title: "GitHub"
- title: "Gitea"
link: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
external: true
@@ -73,4 +73,61 @@ toc:
enabled: true
# TOC title
title: "On This Page"
title: "On This Page"
# Footer Configuration
footer:
enabled: true
copyright: "© 2024 Vue Docs UI. All rights reserved."
repository:
url: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
branch: "master"
lastUpdated: "2024-12-19"
links:
- title: "Documentation"
link: "/guide/introduction"
- title: "GitHub"
link: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
external: true
- title: "License"
link: "/license"
social:
- name: "email"
url: "mailto:15202078626@163.com"
icon: "mail"
- name: "gitea"
url: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
icon: "gitea"
# - name: "youtube"
# url: "https://youtube.com/@yourhandle"
# icon: "youtube"
# - name: "twitter"
# url: "https://twitter.com/yourhandle"
# icon: "twitter"
# - name: "discord"
# url: "https://discord.gg/yourinvite"
# icon: "discord"
# - name: "telegram"
# url: "https://t.me/yourhandle"
# icon: "telegram"
# - name: "tiktok"
# url: "https://tiktok.com/@yourhandle"
# icon: "tiktok"
- name: "bilibili"
url: "https://space.bilibili.com/443299209"
icon: "bilibili"
- name: "qq"
url: "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=2934674522&card_type=person&source=qrcode"
icon: "qq"
- name: "wechat"
url: "weixin://dl/add?zlt2629496476520"
icon: "wechat"
# - name: "weibo"
# url: "https://weibo.com/yourhandle"
# icon: "weibo"
# - name: "douyin"
# url: "https://www.douyin.com/user/yourhandle"
# icon: "douyin"
# - name: "zhihu"
# url: "https://www.zhihu.com/people/yourhandle"
# icon: "zhihu"

View File

@@ -18,7 +18,7 @@ navbar:
active: true
- title: "指南"
link: "/guide"
- title: "GitHub"
- title: "Gitea"
link: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
external: true
@@ -91,16 +91,59 @@ toc:
# Footer Configuration
footer:
enabled: true
copyright: "© 2024 农业股票数据分析系统. All rights reserved."
copyright: "© 2024 Vue Docs UI. All rights reserved."
repository:
url: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
branch: "master"
lastUpdated: "2024-12-19"
links:
- title: "系统指南"
link: "/guide"
- title: "Documentation"
link: "/guide/introduction"
- title: "GitHub"
link: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
external: true
- title: "许可证"
- title: "License"
link: "/license"
social:
- name: "email"
url: "mailto:15202078626@163.com"
icon: "mail"
- name: "gitea"
url: "https://gitea.shenjianl.cn/shenjianZ/agricultural-sock-amalysis"
icon: "gitea"
# - name: "youtube"
# url: "https://youtube.com/@yourhandle"
# icon: "youtube"
# - name: "twitter"
# url: "https://twitter.com/yourhandle"
# icon: "twitter"
# - name: "discord"
# url: "https://discord.gg/yourinvite"
# icon: "discord"
# - name: "telegram"
# url: "https://t.me/yourhandle"
# icon: "telegram"
# - name: "tiktok"
# url: "https://tiktok.com/@yourhandle"
# icon: "tiktok"
- name: "bilibili"
url: "https://space.bilibili.com/443299209"
icon: "bilibili"
- name: "qq"
url: "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=2934674522&card_type=person&source=qrcode"
icon: "qq"
- name: "wechat"
url: "weixin://contacts/profile/zlt2629496476520"
icon: "wechat"
# - name: "weibo"
# url: "https://weibo.com/yourhandle"
# icon: "weibo"
# - name: "douyin"
# url: "https://www.douyin.com/user/yourhandle"
# icon: "douyin"
# - name: "zhihu"
# url: "https://www.zhihu.com/people/yourhandle"
# icon: "zhihu"
# Analytics Configuration
analytics:

View File

@@ -0,0 +1,14 @@
server {
listen 443 ssl;
server_name a1.shenjianl.cn;
ssl_certificate /usr/local/nginx/conf/ssl_certificate/a1/a1.shenjianl.cn_bundle.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl_certificate/a1/a1.shenjianl.cn.key;
location / {
root /data/a1;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}