修改文件结构,统一文档格式

This commit is contained in:
ylweng
2025-09-01 02:42:03 +08:00
parent 2bd1d8c032
commit abc1184f81
151 changed files with 870 additions and 589 deletions

136
design.md
View File

@@ -26,7 +26,14 @@
## 2. 技术架构设计
### 2.1 整体架构
本项目采用前后端分离的架构设计模式,前端使用Vue.js框架后端采用Python技术栈数据库使用MySQL进行数据存储。
本项目采用前后端分离的架构设计模式,包含以下主要模块:
- **后端服务** (`backend/`): Node.js + Express + Sequelize ORM
- **管理后台** (`admin-system/`): Vue.js 3.x + Ant Design Vue
- **官网** (`website/`): Vue.js 3.x + 数据大屏展示
- **微信小程序** (`mini_program/`): React + TypeScript + Tailwind CSS
- **脚本工具** (`scripts/`): 数据库管理和维护脚本
- **文档** (`docs/`): 项目技术文档
- **测试** (`test/`): 测试脚本和用例
### 2.2 前端技术栈
- **核心框架**: Vue.js 3.x
@@ -38,23 +45,23 @@
- **图表库**: ECharts
### 2.3 后端技术栈
- **运行环境**: Python 3.8+
- **Web框架**: FastAPI 或 Flask可选
- **运行环境**: Node.js
- **Web框架**: Express.js 4.18+
- **API风格**: RESTful API
- **认证授权**: JWT
- **数据库访问**: SQLAlchemy 或 Peewee ORM
- **依赖管理**: uv 工具
- **认证授权**: JWT (jsonwebtoken 9.0+)
- **数据库访问**: Sequelize ORM 6.30+
- **数据库**: MySQL (mysql2 3.0+)
- **密码加密**: bcrypt 5.1+
- **API文档**: Swagger (swagger-jsdoc + swagger-ui-express)
- **日志管理**: Winston 3.17+
- **开发工具**: nodemon 3.0+
- **跨域处理**: CORS 2.8+
- **数据验证**: express-validator 7.2+
- **环境变量**: dotenv 16.0+
- **HTTP客户端**: Axios 1.4+
- **服务器端口**: 5350
#### 2.3.1 Python环境配置与依赖管理
1. `uv` 是一个快速的 Python 包和虚拟环境管理工具
2. MCP Server 依赖 `uv` 工具运行,必须确保系统环境中已安装 uv
3. 安装 `uv` 的推荐方法:
- 使用官方安装脚本:`powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
- 或通过 pip 安装:`pip install uv`
4. 设置国内镜像源加速下载:
```bash
$env:UV_INDEX_URL="https://mirrors.aliyun.com/pypi/simple/"
```
### 2.4 部署架构
- **开发环境**: 本地运行
@@ -111,45 +118,52 @@
| username | VARCHAR(50) | UNIQUE, NOT NULL | 用户名 |
| email | VARCHAR(100) | UNIQUE, NOT NULL | 邮箱地址 |
| password | VARCHAR(255) | NOT NULL | 密码(加密后) |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| phone | VARCHAR(20) | NULL | 手机号 |
| avatar | VARCHAR(255) | NULL | 头像URL |
| status | ENUM('active','inactive','banned') | DEFAULT 'active' | 用户状态 |
| last_login | DATETIME | NULL | 最后登录时间 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
#### 3.3.2 角色表 (roles)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 角色ID |
| name | VARCHAR(50) | UNIQUE, NOT NULL | 角色名称 |
| description | TEXT | | 角色描述 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| description | TEXT | NULL | 角色描述 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
#### 3.3.3 用户角色关联表 (user_roles)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| user_id | INT | FOREIGN KEY (users.id), NOT NULL | 用户ID |
| role_id | INT | FOREIGN KEY (roles.id), NOT NULL | 角色ID |
| assigned_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 分配时间 |
| assigned_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 分配时间 |
#### 3.3.4 产品表 (products)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 产品ID |
| name | VARCHAR(100) | NOT NULL | 产品名称 |
| description | TEXT | | 产品描述 |
| price | DECIMAL(10,2) | NOT NULL | 产品价格 |
| description | TEXT | NULL | 产品描述 |
| price | INT | NOT NULL | 产品价格(单位:分) |
| stock | INT | DEFAULT 0 | 库存数量 |
| status | ENUM('active', 'inactive') | DEFAULT 'active' | 产品状态 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| image_url | VARCHAR(255) | NULL | 产品图片URL |
| is_active | TINYINT(1) | DEFAULT 1 | 是否激活 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
#### 3.3.5 订单表 (orders)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 订单ID |
| user_id | INT | FOREIGN KEY (users.id), NOT NULL | 用户ID |
| total_amount | DECIMAL(10,2) | NOT NULL | 订单总金额 |
| status | ENUM('pending', 'paid', 'shipped', 'delivered', 'cancelled') | DEFAULT 'pending' | 订单状态 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| total_amount | INT | DEFAULT 0 | 订单总金额(单位:分) |
| status | ENUM('pending','processing','shipped','delivered','cancelled') | DEFAULT 'pending' | 订单状态 |
| payment_status | ENUM('unpaid','paid','refunded') | DEFAULT 'unpaid' | 支付状态 |
| shipping_address | TEXT | NULL | 收货地址 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
#### 3.3.6 订单项表 (order_items)
| 字段名 | 类型 | 约束 | 描述 |
@@ -157,8 +171,66 @@
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 订单项ID |
| order_id | INT | FOREIGN KEY (orders.id), NOT NULL | 订单ID |
| product_id | INT | FOREIGN KEY (products.id), NOT NULL | 产品ID |
| quantity | INT | NOT NULL | 数量 |
| price | DECIMAL(10,2) | NOT NULL | 单价 |
| quantity | INT | DEFAULT 1 | 数量 |
| price | INT | NOT NULL | 单价(单位:分) |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
#### 3.3.7 养殖场表 (farms)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 养殖场ID |
| name | VARCHAR(100) | NOT NULL | 养殖场名称 |
| type | VARCHAR(50) | NOT NULL | 养殖场类型 |
| location | JSON | NOT NULL | 地理位置信息 |
| address | VARCHAR(255) | NULL | 详细地址 |
| contact | VARCHAR(50) | NULL | 联系人 |
| phone | VARCHAR(20) | NULL | 联系电话 |
| status | ENUM('active','inactive','maintenance') | DEFAULT 'active' | 养殖场状态 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
#### 3.3.8 动物表 (animals)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 动物ID |
| type | VARCHAR(50) | NOT NULL | 动物类型 |
| count | INT | DEFAULT 0 | 数量 |
| farm_id | INT | FOREIGN KEY (farms.id), NOT NULL | 所属养殖场ID |
| health_status | ENUM('healthy','sick','quarantine') | DEFAULT 'healthy' | 健康状态 |
| last_inspection | DATETIME | NULL | 最后检查时间 |
| notes | TEXT | NULL | 备注信息 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
#### 3.3.9 设备表 (devices)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 设备ID |
| name | VARCHAR(100) | NOT NULL | 设备名称 |
| type | VARCHAR(50) | NOT NULL | 设备类型 |
| status | ENUM('online','offline','maintenance') | DEFAULT 'offline' | 设备状态 |
| farm_id | INT | FOREIGN KEY (farms.id), NOT NULL | 所属养殖场ID |
| last_maintenance | DATETIME | NULL | 最后维护时间 |
| installation_date | DATETIME | NULL | 安装日期 |
| metrics | JSON | NULL | 设备指标数据 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
#### 3.3.10 预警表 (alerts)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 预警ID |
| type | VARCHAR(50) | NOT NULL | 预警类型 |
| level | ENUM('low','medium','high','critical') | DEFAULT 'medium' | 预警级别 |
| message | TEXT | NOT NULL | 预警消息 |
| status | ENUM('active','acknowledged','resolved') | DEFAULT 'active' | 预警状态 |
| farm_id | INT | FOREIGN KEY (farms.id), NOT NULL | 所属养殖场ID |
| device_id | INT | FOREIGN KEY (devices.id), NULL | 关联设备ID |
| resolved_at | DATETIME | NULL | 解决时间 |
| resolved_by | INT | FOREIGN KEY (users.id), NULL | 解决人ID |
| resolution_notes | TEXT | NULL | 解决说明 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 3.4 初始数据