2026-01-26 13:47:53 +08:00
|
|
|
|
import os
|
2026-02-04 13:30:07 +08:00
|
|
|
|
from datetime import timedelta
|
2026-01-26 13:47:53 +08:00
|
|
|
|
|
|
|
|
|
|
class Config:
|
2026-02-04 13:30:07 +08:00
|
|
|
|
# =========================================================
|
|
|
|
|
|
# 1. 基础路径与安全配置
|
|
|
|
|
|
# =========================================================
|
|
|
|
|
|
# 获取当前文件所在目录的绝对路径 (用于定位 uploads 文件夹等)
|
|
|
|
|
|
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
|
|
|
|
|
|
# Flask 的基础密钥 (用于 Session, Flash 消息等安全签名)
|
|
|
|
|
|
SECRET_KEY = os.getenv('SECRET_KEY', 'dev-secret-key-1234')
|
|
|
|
|
|
|
|
|
|
|
|
# =========================================================
|
|
|
|
|
|
# 2. 数据库配置
|
|
|
|
|
|
# =========================================================
|
|
|
|
|
|
# 优先读取 .env 中的 'DATABASE_URL'。
|
|
|
|
|
|
# 如果读不到,才回退使用默认的 localhost 连接字符串。
|
2026-01-27 15:50:23 +08:00
|
|
|
|
SQLALCHEMY_DATABASE_URI = os.getenv(
|
|
|
|
|
|
'DATABASE_URL',
|
2026-02-04 13:30:07 +08:00
|
|
|
|
'postgresql://postgres:1234@localhost:5432/inventory_system'
|
2026-01-27 15:50:23 +08:00
|
|
|
|
)
|
2026-01-26 13:47:53 +08:00
|
|
|
|
|
2026-02-04 13:30:07 +08:00
|
|
|
|
# 关闭 SQLAlchemy 的事件追踪,减少内存消耗 (推荐设为 False)
|
2026-01-26 13:47:53 +08:00
|
|
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
|
|
|
2026-02-04 13:30:07 +08:00
|
|
|
|
# =========================================================
|
|
|
|
|
|
# 3. JWT 配置 (修复 500 报错的核心区域)
|
|
|
|
|
|
# =========================================================
|
|
|
|
|
|
# 【核心】必须设置 JWT_SECRET_KEY,否则 create_access_token 会报错
|
|
|
|
|
|
# 逻辑:优先读环境变量,读不到就用默认字符串
|
|
|
|
|
|
JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'default-jwt-secret-key-if-missing')
|
|
|
|
|
|
|
2026-03-10 09:45:41 +08:00
|
|
|
|
# Access Token 有效期: 2 小时
|
|
|
|
|
|
JWT_ACCESS_TOKEN_EXPIRES = timedelta(hours=2)
|
|
|
|
|
|
|
|
|
|
|
|
# Refresh Token 有效期: 7 天
|
|
|
|
|
|
JWT_REFRESH_TOKEN_EXPIRES = timedelta(days=7)
|
2026-02-04 13:30:07 +08:00
|
|
|
|
|
|
|
|
|
|
# =========================================================
|
|
|
|
|
|
# 4. 文件上传配置
|
|
|
|
|
|
# =========================================================
|
|
|
|
|
|
# 上传文件存储路径
|
|
|
|
|
|
UPLOAD_FOLDER = os.path.join(BASE_DIR, 'uploads')
|
|
|
|
|
|
# 限制最大上传 16MB
|
|
|
|
|
|
MAX_CONTENT_LENGTH = 16 * 1024 * 1024
|