配置信息以及README
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
# 开发环境配置
|
||||||
|
ENVIRONMENT=development
|
||||||
|
|
||||||
|
# 数据库配置
|
||||||
|
DB_HOST=47.92.216.173
|
||||||
|
DB_PORT=7654
|
||||||
|
DB_USER=postgres
|
||||||
|
DB_PASSWORD=zhangsan
|
||||||
|
DB_NAME=xian_new
|
||||||
|
|
||||||
|
# FastAPI配置
|
||||||
|
API_HOST=127.0.0.1
|
||||||
|
API_PORT=8082
|
||||||
|
|
||||||
|
# 应用配置
|
||||||
|
APP_NAME=西安项目算法
|
||||||
|
APP_VERSION=1.0.0
|
||||||
|
DEBUG=True
|
||||||
|
|
||||||
|
# 日志配置
|
||||||
|
LOG_LEVEL=DEBUG
|
||||||
|
LOG_DIR=logs
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# 生产环境配置
|
||||||
|
ENVIRONMENT=production
|
||||||
|
|
||||||
|
# 数据库配置
|
||||||
|
DB_HOST=10.22.245.138
|
||||||
|
DB_PORT=54321
|
||||||
|
DB_USER=zaihailian
|
||||||
|
DB_PASSWORD=XAYJ@gis2603
|
||||||
|
DB_NAME=xianDC
|
||||||
|
|
||||||
|
# FastAPI配置
|
||||||
|
API_HOST=127.0.0.1
|
||||||
|
API_PORT=8081
|
||||||
|
|
||||||
|
# 应用配置
|
||||||
|
APP_NAME=西安项目算法
|
||||||
|
APP_VERSION=1.0.0
|
||||||
|
DEBUG=False
|
||||||
|
|
||||||
|
# 日志配置
|
||||||
|
LOG_LEVEL=WARNING
|
||||||
|
LOG_DIR=logs
|
||||||
@@ -26,10 +26,6 @@ venv/
|
|||||||
ENV/
|
ENV/
|
||||||
env/
|
env/
|
||||||
|
|
||||||
# 环境配置文件(包含敏感信息)
|
|
||||||
.env.development
|
|
||||||
.env.production
|
|
||||||
|
|
||||||
# IDE
|
# IDE
|
||||||
.vscode/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
|
|||||||
@@ -1,220 +1 @@
|
|||||||
# Xian Algorithm New
|
# 西安项目算法相关代码
|
||||||
|
|
||||||
基于 FastAPI + PostgreSQL 的现代化 Python Web 应用框架。
|
|
||||||
|
|
||||||
## 特性
|
|
||||||
|
|
||||||
- ✅ 模块化架构(API/Config/Core/Utils)
|
|
||||||
- ✅ 多环境配置(开发/生产)
|
|
||||||
- ✅ 跨平台支持(Windows/Linux/Mac)
|
|
||||||
- ✅ 完整的数据库 CRUD 封装
|
|
||||||
- ✅ 自动依赖管理
|
|
||||||
- ✅ 自动生成 API 文档
|
|
||||||
- ✅ 降雨栅格插值服务(IDW算法)
|
|
||||||
|
|
||||||
## 快速开始
|
|
||||||
|
|
||||||
### 1. 环境要求
|
|
||||||
|
|
||||||
- Python 3.13+
|
|
||||||
- PostgreSQL
|
|
||||||
|
|
||||||
### 2. 配置
|
|
||||||
|
|
||||||
根据环境选择配置文件(无需复制,直接使用):
|
|
||||||
|
|
||||||
- **开发环境**:`.env.development`
|
|
||||||
- **生产环境**:`.env.production`
|
|
||||||
|
|
||||||
编辑对应的配置文件,修改数据库信息:
|
|
||||||
|
|
||||||
```env
|
|
||||||
# .env.development 或 .env.production
|
|
||||||
DB_HOST=localhost
|
|
||||||
DB_PORT=5432
|
|
||||||
DB_USER=postgres
|
|
||||||
DB_PASSWORD=your_password
|
|
||||||
DB_NAME=test_db
|
|
||||||
API_HOST=127.0.0.1 # 仅监听本地请求
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. 启动
|
|
||||||
|
|
||||||
**后台运行(推荐):**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Windows - 开发环境
|
|
||||||
scripts\start_dev.bat
|
|
||||||
|
|
||||||
# Windows - 生产环境
|
|
||||||
scripts\start_prod.bat
|
|
||||||
|
|
||||||
# Linux/Mac - 开发环境
|
|
||||||
bash scripts/start_dev.sh
|
|
||||||
|
|
||||||
# Linux/Mac - 生产环境
|
|
||||||
bash scripts/start_prod.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
**前台运行(调试用):**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python start.py
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. 停止
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Windows
|
|
||||||
scripts\stop.bat
|
|
||||||
|
|
||||||
# Linux/Mac
|
|
||||||
bash scripts/stop.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. 访问
|
|
||||||
|
|
||||||
- API 文档: http://localhost:8000/docs
|
|
||||||
- 健康检查: http://localhost:8000/health
|
|
||||||
|
|
||||||
## 项目结构
|
|
||||||
|
|
||||||
```
|
|
||||||
xian_algorithm_new/
|
|
||||||
├── app/
|
|
||||||
│ ├── api/ # API 路由
|
|
||||||
│ ├── config/ # 配置管理
|
|
||||||
│ ├── core/ # 核心功能
|
|
||||||
│ ├── models/ # 数据模型
|
|
||||||
│ ├── services/ # 业务逻辑
|
|
||||||
│ └── utils/ # 工具函数
|
|
||||||
├── scripts/ # 启动脚本
|
|
||||||
├── logs/ # 日志目录
|
|
||||||
├── tests/ # 测试目录
|
|
||||||
├── start.py # 启动入口
|
|
||||||
└── requirements.txt # 依赖包
|
|
||||||
```
|
|
||||||
|
|
||||||
## 配置说明
|
|
||||||
|
|
||||||
配置采用三层结构(优先级从高到低):
|
|
||||||
|
|
||||||
1. **.env 文件** - 用户自定义配置(数据库地址、密码等)
|
|
||||||
2. **环境配置类** - 开发/生产环境的差异化配置(日志级别、连接池等)
|
|
||||||
3. **基础配置类** - 通用默认值
|
|
||||||
|
|
||||||
只需修改 `.env` 文件即可覆盖大部分配置。
|
|
||||||
|
|
||||||
## 常用操作
|
|
||||||
|
|
||||||
### API接口
|
|
||||||
|
|
||||||
#### 1. 获取降雨栅格数据
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -X POST "http://localhost:8000/rainfall/grid" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{
|
|
||||||
"start_time": "2024-01-01T00:00:00",
|
|
||||||
"end_time": "2024-01-01T12:00:00",
|
|
||||||
"district_id": 1,
|
|
||||||
"resolution": 0.01
|
|
||||||
}'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2. 获取雨量站点数据
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl "http://localhost:8000/rainfall/stations?start_time=2024-01-01T00:00:00&end_time=2024-01-01T12:00:00"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 切换环境
|
|
||||||
|
|
||||||
通过启动脚本自动选择对应的配置文件:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Windows - 开发环境(后台)
|
|
||||||
scripts\start_dev.bat
|
|
||||||
|
|
||||||
# Windows - 生产环境(后台)
|
|
||||||
scripts\start_prod.bat
|
|
||||||
|
|
||||||
# Linux/Mac - 开发环境(后台)
|
|
||||||
bash scripts/start_dev.sh
|
|
||||||
|
|
||||||
# Linux/Mac - 生产环境(后台)
|
|
||||||
bash scripts/start_prod.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
**停止应用:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Windows
|
|
||||||
scripts\stop.bat
|
|
||||||
|
|
||||||
# Linux/Mac
|
|
||||||
bash scripts/stop.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
或者手动设置环境变量:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Windows PowerShell
|
|
||||||
$env:ENVIRONMENT="production"
|
|
||||||
python start.py
|
|
||||||
|
|
||||||
# Windows CMD
|
|
||||||
set ENVIRONMENT=production
|
|
||||||
python start.py
|
|
||||||
|
|
||||||
# Linux/Mac
|
|
||||||
export ENVIRONMENT=production
|
|
||||||
python start.py
|
|
||||||
```
|
|
||||||
|
|
||||||
### 数据库操作
|
|
||||||
|
|
||||||
```python
|
|
||||||
from app.core.database import db_manager
|
|
||||||
|
|
||||||
# 插入
|
|
||||||
db_manager.insert("users", {"name": "张三", "email": "test@example.com"})
|
|
||||||
|
|
||||||
# 查询
|
|
||||||
users = db_manager.select("users", conditions={"age": 25})
|
|
||||||
|
|
||||||
# 更新
|
|
||||||
db_manager.update("users", {"name": "李四"}, {"id": 1})
|
|
||||||
|
|
||||||
# 删除
|
|
||||||
db_manager.delete("users", {"id": 1})
|
|
||||||
```
|
|
||||||
|
|
||||||
### 添加新 API
|
|
||||||
|
|
||||||
1. 在 `app/api/` 创建路由文件
|
|
||||||
2. 在 `app/main.py` 注册路由
|
|
||||||
|
|
||||||
```python
|
|
||||||
from app.api import new_module
|
|
||||||
app.include_router(new_module.router)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 技术栈
|
|
||||||
|
|
||||||
- FastAPI 0.109.0
|
|
||||||
- SQLAlchemy 2.0.25
|
|
||||||
- PostgreSQL (psycopg2-binary)
|
|
||||||
- Pydantic 2.5.3
|
|
||||||
- Uvicorn 0.27.0
|
|
||||||
|
|
||||||
## 注意事项
|
|
||||||
|
|
||||||
- ⚠️ 不要将 `.env.development` 和 `.env.production` 文件提交到 Git
|
|
||||||
- ⚠️ 生产环境务必修改默认密码
|
|
||||||
- ⚠️ 定期清理 `logs/` 目录下的日志文件
|
|
||||||
- ⚠️ Linux/Mac 下首次运行需给脚本添加执行权限:`chmod +x scripts/*.sh`
|
|
||||||
|
|
||||||
## 许可证
|
|
||||||
|
|
||||||
MIT
|
|
||||||
|
|||||||
Reference in New Issue
Block a user