技术文档与交付说明
更新时间:2026-03-28
1. 项目概述
项目名称:基于Python的全国水稻数据可视化分析系统
本系统基于全国水稻品种审定数据、行情文章和价格快照,构建了面向展示、分析、教学和后台管理的一体化平台。项目已完成从旧农产品通用系统向水稻主题系统的重构,当前已进入收尾与验收阶段。





















2. 当前完成状态
2.1 已完成模块
- 水稻品种主数据导入与数据库重构
- 前台首页、水稻品种、收藏中心、行情分析、数据图表、行情预测、留言建议、个人中心
- 后台总览、水稻品种管理、价格快照查看、行情文章查看、收藏记录、留言管理、用户管理
- 前后台统一水稻主题 UI
- 前台登录页与后台登录页统一认证视觉风格
- 预测模块优化为价格区间视图与趋势摘要视图
2.2 当前交付状态
- 功能闭环已完成
- 业务数据库已清理
- 目录结构已整理
- 技术文档已补齐
2.3 当前遗留的可选增强项
- 若需要启用真实 LSTM 预测,需要继续对齐 TensorFlow 与 NumPy 环境
- 若需要持续增量更新行情文章和价格快照,可继续扩展定时任务或自动化脚本
3. 技术栈
3.1 后端
- Python 3.11
- Flask 2.3.3
- Flask-SQLAlchemy 3.0.5
- Flask-CORS 6.0.0
- Flask-Login 0.6.3
- SQLAlchemy 2.0.23
- PyMySQL 1.1.0
3.2 数据处理与分析
- Pandas 2.2.3
- NumPy 1.23.5
- Statsmodels 0.14.6
- Jieba 0.42.1
- TensorFlow 2.12.0(可选)
3.3 爬取与同步
- Requests 2.32.4
- lxml 5.2.1
- csv 标准库
3.4 前端
- Jinja2 模板
- Bootstrap
- 自定义前台主题样式
rice-theme.css - 自定义后台主题样式
admin-rice-console.css - ECharts
- Pyecharts WordCloud(仅亲本来源关键词词云)
3.5 依赖管理
- 主运行依赖文件:
requirements.txt - 可选 LSTM 依赖文件:
requirements-lstm.txt
推荐默认只安装主依赖;LSTM 需要时再单独补装可选依赖。
4. 系统架构
系统采用 Flask 单体应用结构,核心组成如下:
- 应用入口:
app.py - 首页蓝图:
blueprints/index.py - 前台蓝图:
blueprints/user.py - 后台蓝图:
blueprints/admin.py - 数据模型:
models.py - 数据同步:
util/rice_sync.py - 图表与预测:
util/analyze.py - 迁移脚本:
scripts/migrate_rice_system.py
5. 数据源说明
5.1 主数据源
- 文件:
rice.csv - 编码:
gb18030/gbk - 分隔符:
; - 当前导入总量:20521
5.2 行情文章来源
- 国家粮食和物资储备局
- 粮信网
5.3 价格快照来源
- 北京新发地
6. 数据库说明
6.1 当前数据库
- 数据库名:
design_354_rice
6.2 当前保留表
adminusercommentrice_varietyrice_variety_followrice_market_articlerice_price_snapshot
6.3 已删除旧业务表
productsproduct_followprice_dataprice_data_followfood_real_timeanalyze_data
6.4 当前数据量
截至 2026-03-28,当前记录数如下:
admin:5user:7comment:34rice_variety:20521rice_variety_follow:3rice_market_article:13rice_price_snapshot:678
7. 核心表结构
7.1 rice_variety
用途:存储水稻品种审定主数据。
字段:
id:主键csv_no:CSV 序号variety_name:品种名称parent_source:亲本来源rice_type:品种类型breeder_org:原产地/选育单位approval_number:审定编号,唯一province:省份maternal_parent:母本approval_authority:审定方approval_company:审定公司approval_year:从审定编号中提取的年份imported_at:导入时间
索引:
approval_number唯一索引variety_namerice_typeprovinceapproval_authorityapproval_companybreeder_orgmaternal_parentapproval_year
7.2 rice_variety_follow
用途:用户收藏水稻品种。
字段:
iduser_idrice_variety_idfollowed_at
约束:
user_id + rice_variety_id唯一约束uq_user_rice_variety
7.3 rice_market_article
用途:水稻行情文章库。
字段:
idtitlesource_namesource_urlsummarycontentpublished_atfetched_atkeyword_tags
约束:
source_url唯一
7.4 rice_price_snapshot
用途:价格序列与预测样本。
字段:
idsource_namesource_urlproduct_namemarket_typeregionunitlow_pricehigh_priceavg_priceobserved_onfetched_at
约束:
(source_name, product_name, region, unit, observed_on)唯一约束uq_rice_price_snapshot
7.5 user
用途:前台用户信息。
字段:
idusernamepasswordemailphoneaddressimagenicknamegenderageinforeset_token
7.6 admin
用途:后台管理员账号。
字段:
idusernamepassword
7.7 comment
用途:留言建议。
字段:
iduser_idcontentcreated_at
8. 功能模块说明
8.1 前台模块
首页
- 展示系统标题、统计信息、最新行情文章、价格快照预览、主流品种类型
- 保留首页原有主题文案与袁隆平纪念信息
水稻品种
- 支持关键词、省份、类型、审定方筛选
- 支持分页展示
- 支持收藏与取消收藏
收藏中心
- 查看已收藏品种
- 展示收藏时间和热门收藏统计
- 提供基于收藏行为的内容相似推荐
行情分析
- 展示抓取入库的水稻行情文章
- 支持按标题和正文关键词检索
数据图表
- 使用单页下拉切换图表,不再拆成多个页面
- 大部分图表使用 ECharts 渲染
- 亲本来源关键词保留词云显示
行情预测
- 基于
rice_price_snapshot构建价格预测 - 按
market_type聚合为行情品类序列 - 同时展示
最低价 / 均价 / 最高价的历史走势与预测区间 - 页面提供最新价格区间、最新均价、预测均价、观测节奏、趋势标签
- 价格波动很小时前台会给出解释说明
留言建议
- 支持异步发布留言
- 用户仅能删除自己的留言
个人中心
- 编辑资料
- 忘记密码
- 重置密码
- 修改密码
8.2 后台模块
系统总览
- 展示用户数、品种数、收藏数、文章数、价格快照数
水稻品种管理
- 查看、检索、分页展示水稻品种
- 支持重新同步
rice.csv
价格快照管理
- 查看价格快照数据
- 后台 UI 已移除价格快照同步入口
行情文章管理
- 查看水稻行情文章
- 后台 UI 已移除行情文章同步入口
收藏记录
- 查看用户与水稻品种之间的收藏关系
留言管理
- 查看、编辑、删除留言
用户管理
- 查看用户
- 新增用户
- 编辑用户
- 删除用户
9. UI 与交互优化说明
9.1 前台
- 全站统一到水稻主题配色与卡片体系
- 顶部品牌区已重做为水稻主题品牌块
- 登录页与注册页已重做为统一认证页样式
- 图表页已改为单页下拉切换
- 预测页已增加行情摘要卡和价格区间图
9.2 后台
- 后台壳子已重构为稻田主题控制台
- 后台登录页已参考前台登录页统一到认证页设计
- 后台列表、总览、表单与分页已统一主题风格
10. 数据导入与同步流程
10.1 迁移脚本
脚本:scripts/migrate_rice_system.py
执行流程:
- 执行
reset_business_tables()删除并重建业务表 - 执行
sync_rice_varieties()导入rice.csv - 执行
sync_rice_market_articles()拉取行情文章 - 执行
sync_rice_price_snapshots()拉取价格快照
10.2 同步逻辑
水稻品种同步
- 按
approval_number去重 - 自动清理不再存在的旧品种
- 自动规范化省份空格
- 自动提取审定年份
行情文章同步
- 抓取官方源与行业源
- 按
source_url去重 - 重建文章表后重新入库
价格快照同步
- 按水稻关键词抓取北京新发地价格
- 按来源、产品、区域、单位、日期做唯一约束
- 作为预测页面的价格样本
11. 图表、推荐与预测实现说明
11.1 图表实现
图表逻辑位于 util/analyze.py。
- 大部分图表直接输出 ECharts
option - 仅
chart_parent_source_keywords()使用 PyechartsWordCloud
11.2 推荐逻辑
推荐基于收藏行为的内容相似规则:
rice_type相同加权province相同加权approval_authority相同加权approval_company相同加权maternal_parent相同加权
无收藏记录时回退到热门收藏品种。
11.3 预测逻辑
get_market_price_frame():按日期聚合low_price / avg_price / high_priceget_market_type_series():提取按market_type聚合后的均价序列build_arima_forecast():对low / avg / high三条序列分别使用最近 36 个观测点拟合 ARIMA(1,1,1)build_lstm_forecast():在 TensorFlow 可用且样本量满足条件时启用build_forecast_summary():生成价格区间、预测均价、近期变化率、观测步长和趋势标签
补充说明:
- 观测日期不是严格日频,系统用历史中位观测间隔推算未来时间轴
- 若某类行情最近本身几乎不波动,预测接近平线属于合理结果
- 若 TensorFlow 不可用或样本不足,接口会返回明确说明而不是报错
12. 路由概览
12.1 前台核心路由
/login/register/edit_profile/forgot_password/reset_password/<token>/change_password/user//user/list/user/price_data_follow_list/user/analyze_data/user/chart/user/predict_price_html/user/predict_price/user/list_comments
12.2 后台核心路由
/admin/login/admin/dashboard/admin/price_data_list/admin/product_list/admin/price_data_follow_list/admin/analyze_data/admin/comments/admin/user_list/admin/add_user/admin/edit_user/<user_id>
13. 项目目录结构
text
rice/
├─ app.py
├─ config.py
├─ ext.py
├─ models.py
├─ rice.csv
├─ design_354_rice.sql
├─ requirements.txt
├─ requirements-lstm.txt
├─ README.md
├─ docs/
│ └─ TECHNICAL_DOCUMENTATION.md
├─ blueprints/
│ ├─ admin.py
│ ├─ index.py
│ └─ user.py
├─ scripts/
│ └─ migrate_rice_system.py
├─ util/
│ ├─ analyze.py
│ └─ rice_sync.py
├─ templates/
│ ├─ admin/
│ ├─ base.html
│ ├─ index.html
│ ├─ price_data_list.html
│ ├─ price_data_follow_list.html
│ ├─ analyze_data.html
│ ├─ chart.html
│ ├─ predict_price_html.html
│ ├─ comments_list.html
│ ├─ login.html
│ ├─ register.html
│ └─ ...
└─ static/
├─ css/
├─ js/
├─ user/
└─ admin/
14. 已完成的代码整理
已删除以下无关或废弃内容:
- 旧农产品前台模板
- 旧农产品后台模板
- 旧爬虫目录
spider/ - 旧训练脚本与模型产物
- 未使用的
forms.py - 未使用的
manage.py - 旧说明文档
reademe.md - 旧依赖脚本
dependency.txt .idea/与__pycache__/
15. 部署与维护建议
- 使用虚拟环境隔离依赖
- 默认只安装
requirements.txt - 若需要真实 LSTM,再安装
requirements-lstm.txt - 若需要稳定启用 TensorFlow,请保持其与 NumPy 版本兼容
- 生产环境建议将管理员密码改为哈希存储
- 可继续补充
.env或配置分层,避免数据库账号明文写在config.py
16. 验证结论
经实际检查:
design_354_rice只保留当前水稻业务相关表和基础用户表- 旧农产品业务表已删除
- 当前目录结构已围绕水稻系统收敛
- 预测接口、前台页面、后台页面、登录页和后台登录页均已完成当前阶段调试
当前项目已经具备完整交付与答辩使用条件。