guzhi/DEPLOYMENT.md

226 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 非遗资产估值系统 - 部署文档
## 项目概述
非遗资产估值系统是一个基于 Vue.js + FastAPI 的全栈应用,用于非物质文化遗产资产的价值评估。
- **前端**: Vue.js + Vite + pnpm
- **后端**: Python 3.11 + FastAPI + Tortoise ORM
- **数据库**: MySQL
- **容器化**: Docker
---
## 目录结构
```
youshu-guzhi/
├── app/ # 后端 FastAPI 应用
│ ├── api/ # API 路由
│ ├── controllers/ # 业务控制器
│ ├── models/ # 数据库模型
│ ├── schemas/ # Pydantic 数据模型
│ ├── settings/ # 配置文件
│ └── utils/ # 工具函数和计算引擎
├── web/ # 前端 Vue.js 应用
├── deploy/ # 部署相关文件
│ ├── entrypoint.sh # 容器启动脚本
│ └── web.conf # Nginx 配置
├── Dockerfile # Docker 构建文件
├── requirements.txt # Python 依赖
└── run.py # 应用启动入口
```
---
## 环境配置
### 数据库配置
#### 使用 Docker 部署 MySQL
```bash
# 创建数据目录
mkdir -p ~/mysql-data
# 启动 MySQL 容器
docker run -d \
--name mysql-valuation \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=your_password \
-e MYSQL_DATABASE=valuation_service \
-v ~/mysql-data:/var/lib/mysql \
--restart=unless-stopped \
mysql:8.0
```
#### 应用配置
配置文件位置: `app/settings/config.py`
```python
TORTOISE_ORM = {
"connections": {
"mysql": {
"engine": "tortoise.backends.mysql",
"credentials": {
"host": "your_mysql_host", # 数据库主机地址
"port": 3306, # 数据库端口
"user": "root", # 数据库用户名
"password": "your_password", # 数据库密码
"database": "valuation_service", # 数据库名称
},
},
},
...
}
```
### 第三方服务配置
| 服务 | 配置项 | 说明 |
|-----|-------|------|
| 阿里云短信 | `ALIBABA_CLOUD_ACCESS_KEY_ID/SECRET` | 短信验证码发送 |
| 阿里云邮件 | `SMTP_*` | 邮件发送 |
---
## 本地开发
### 1. 安装依赖
```bash
# 安装 Python 依赖
pip install -r requirements.txt
# 安装前端依赖
cd web
pnpm install
```
### 2. 启动服务
```bash
# 启动后端 (端口 9999)
python run.py
# 启动前端开发服务器 (另一个终端)
cd web
pnpm run dev
```
---
## Docker 部署
### 1. 构建镜像
```bash
# 设置平台 (M1/M2 Mac 需要)
export DOCKER_DEFAULT_PLATFORM=linux/amd64
# 构建镜像
docker build -t zfc931912343/guzhi-fastapi-admin:v3.9 .
# 推送到 Docker Hub
docker push zfc931912343/guzhi-fastapi-admin:v3.9
```
### 2. 部署到服务器
#### 生产环境
```bash
# 创建数据目录
mkdir -p ~/guzhi-data/static/images
# 拉取并运行
docker pull nbg2akd8w5diy8.xuanyuan.run/zfc931912343/guzhi-fastapi-admin:v3.9 \
&& docker rm -f guzhi_pro \
&& docker run -itd \
--name=guzhi_pro \
-p 8080:9999 \
-v ~/guzhi-data/static/images:/opt/vue-fastapi-admin/app/static/images \
--restart=unless-stopped \
-e TZ=Asia/Shanghai \
nbg2akd8w5diy8.xuanyuan.run/zfc931912343/guzhi-fastapi-admin:v3.9
```
#### 开发/测试环境
```bash
docker pull nbg2akd8w5diy8.xuanyuan.run/zfc931912343/guzhi-fastapi-admin:v3.9 \
&& docker rm -f guzhi_dev \
&& docker run -itd \
--name=guzhi_dev \
-p 9990:9999 \
-v ~/guzhi-data/static:/opt/vue-fastapi-admin/app/static \
--restart=unless-stopped \
-e TZ=Asia/Shanghai \
nbg2akd8w5diy8.xuanyuan.run/zfc931912343/guzhi-fastapi-admin:v3.9
```
---
## 端口说明
| 环境 | 容器名 | 主机端口 | 容器端口 |
|-----|-------|---------|---------|
| 生产 | guzhi_pro | 8080 | 9999 |
| 开发 | guzhi_dev | 9990 | 9999 |
---
## 数据持久化
容器挂载的数据目录:
```
~/guzhi-data/static/images -> /opt/vue-fastapi-admin/app/static/images
```
用于存储用户上传的图片文件(如非遗纹样图片、证书图片等)。
---
## 常用运维命令
```bash
# 查看容器日志
docker logs -f guzhi_pro
# 进入容器
docker exec -it guzhi_pro bash
# 重启容器
docker restart guzhi_pro
# 查看容器状态
docker ps | grep guzhi
```
---
## API 接口说明
| 模块 | 路径前缀 | 说明 |
|-----|---------|------|
| 用户端估值 | `/api/v1/app-valuations/` | 用户提交估值请求 |
| 管理端估值 | `/api/v1/valuations/` | 管理后台查看/审核 |
| 计算报告 | `/api/v1/valuations/{id}/report` | 获取计算过程报告 |
---
## 版本历史
| 版本 | 日期 | 说明 |
|-----|------|------|
| v3.9 | 2025-12-18 | 修复风险调整系数B3显示问题添加计算过程详情 |
| v3.8 | 2025-12-18 | 修复历史传承度HI权重计算 |
---
## 联系信息
如有问题,请联系项目负责人。