logo
0
0
WeChat Login
feat: 添加Docker部署配置与项目文档

🌾 农业系统性风险多维识别与量化评估系统 V1.0

AgriRisk Multi-dimensional Identification & Quantitative Evaluation System (AM-IQES)

让农业风险“看得见、算得准、防得住”。 本系统是一套集成气象灾害、产业链波动、金融信贷等多源数据的决策支持平台,利用熵值法与主成分分析(PCA)构建量化模型,实现从省级宏观到企业微观的全方位风险监控。


🚀 核心亮点

  • 多维指标自动建模:告别专家打分的主观性,基于信息熵原理动态计算权重,实时反映风险变化。
  • 空间地理热力图:集成 PostGIS 空间计算,直观展示区域风险暴露度与脆弱性分布。
  • “双视角”自由切换
    • 省级视角:侧重粮食安全、政策响应与宏观灾情。
    • 企业视角:侧重供应链稳定性、信用违约风险与个体经营压力。
  • 工业级算法引擎:底层采用 Python PCA 降维技术,处理高维异构指标,提炼核心风险因子。

🏗 技术架构

系统采用前后端分离架构,确保高性能计算与流畅交互:

  • 前端: Vue 3 + Pinia + Tailwind CSS + ECharts/Leaflet
  • 后端: FastAPI (Python 3.9+) —— 极速响应算法调用
  • 数据库: PostgreSQL 15 + PostGIS —— 专业空间数据存储
  • 计算引擎: NumPy, Pandas, Scikit-learn (实现熵值法与 PCA)
  • 任务调度: Celery + Redis (处理大规模数据清洗任务)

核心算法逻辑

系统风险得分 SS 的计算遵循以下逻辑:

  1. 数据归一化:处理正负向指标的量纲差异。
  2. 熵值赋权ej=ki=1nfijln(fij)e_j = -k \sum_{i=1}^n f_{ij} \ln(f_{ij}) 通过计算信息熵确定各风险因子的客观权重。
  3. 主成分聚合:利用 PCA 提取贡献率最高的特征,输出最终的风险指数。

📊 需求分配表

角色负责内容关键交付物
算法组熵值法/PCA 脚本编写core/math_engine.py
数据组气象/价格/信贷数据抓取结构化数据库 (PostgreSQL)
后端组API 接口与视角切换逻辑Swagger API 文档
前端组热力图与风险雷达可视化交互式看板原型

Quick Start

方式一:本地开发

# 1. 启动后端 cd backend pip install -r requirements.txt uvicorn app.main:app --reload --port 8000 # 2. 启动前端(新终端) cd frontend npm install npm run dev

或者一键启动:

bash scripts/start-all.sh

方式二:Docker 部署

docker-compose up --build

Project Structure

agri-srisk/ ├── backend/ # Python 后端 │ ├── app/ │ │ ├── main.py # FastAPI 入口 │ │ ├── core/ │ │ │ ├── math_engine.py # 熵值法 + PCA 核心算法 │ │ │ ├── indicator_system.py # 12项指标体系定义 │ │ │ └── score_calculator.py # 风险评分计算 │ │ ├── api/ # REST API 路由 │ │ │ ├── province.py # 省级视角 API │ │ │ ├── enterprise.py # 企业级视角 API │ │ │ └── indicators.py # 指标体系 API │ │ ├── services/ # 业务逻辑层 │ │ ├── models/ # Pydantic 数据模型 │ │ └── utils/ # 工具函数 │ ├── tests/ # 单元测试 │ └── Dockerfile ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── views/Dashboard.vue # 主看板 │ │ ├── components/ # 6个可视化组件 │ │ ├── stores/ # Pinia 状态管理 │ │ └── api/ # API 调用封装 │ ├── Dockerfile │ └── nginx.conf ├── scripts/ # 启动脚本 ├── docker-compose.yml └── README.md

API Endpoints

MethodPathDescription
GET/api/v1/provinces/risk31省风险评分
GET/api/v1/provinces/risk/{id}单省详情
GET/api/v1/provinces/rankings省份排名
GET/api/v1/enterprises/risk企业风险评分
GET/api/v1/enterprises/risk/{id}企业详情
GET/api/v1/indicators指标体系定义
GET/api/v1/indicators/dimensions维度列表

完整 API 文档见 Swagger UI