chore: 基线提交(重构前快照)

重构前保存现有 apps/ 结构基线,供后续各阶段回滚。

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude
2026-08-07 09:43:18 +08:00
co-authored by Claude
commit dbcce79536
112 changed files with 9677 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
import os
from dotenv import load_dotenv
def _load_env_file():
"""加载 .env 配置文件"""
root_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
env_path = os.path.join(root_path, '.env')
if os.path.exists(env_path):
load_dotenv(env_path)
return True
return False
# 在任何 config 子模块被 import 之前加载 .env
_load_env_file()
# ============================================================
# 重新导出所有子模块配置(统一入口)
# ============================================================
# 应用基础配置
from config.app import (
FASTAPI_NAME, FASTAPI_VERSION, FASTAPI_HOST, FASTAPI_PORT,
FASTAPI_APP, FASTAPI_ENV, FASTAPI_DEBUG, FASTAPI_DEMO,
FASTAPI_ROOT_PATH, FASTAPI_TEMPLATE_FOLDER, FASTAPI_STATIC_FOLDER,
FASTAPI_UPLOAD_DIR, FASTAPI_IMAGE_PATH, FASTAPI_TEMP_PATH, FASTAPI_IMAGE_URL,
TRUSTED_PROXY_COUNT,
)
# 数据库配置
from config.database import (
DB_DRIVER, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD,
DB_PREFIX, DB_DEBUG, DB_POOL_SIZE, DB_MAX_OVERFLOW, DB_POOL_RECYCLE,
DB_POOL_TIMEOUT, DB_CONNECT_TIMEOUT, SQLALCHEMY_MYSQL_URL,
SQLALCHEMY_POSTGRESQL_URL, SQLALCHEMY_SQLITE_URL,
)
# Redis 缓存配置
from config.redis import (
REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, REDIS_INDEX,
REDIS_AUTH, REDIS_DECODE_RESPONSES,
)
# JWT 认证配置
from config.auth import (
JWT_SALT, JWT_EXPIRE_MINUTES,
LOGIN_FAIL_MAX, LOGIN_LOCK_SECONDS,
)
# 验证码配置
from config.captcha import (
CAPTCHA_LENGTH, CAPTCHA_EXPIRE, CAPTCHA_RATE_LIMIT, CAPTCHA_RATE_WINDOW,
CAPTCHA_CHARS, CAPTCHA_FONT_PATH, CAPTCHA_IMAGE_WIDTH, CAPTCHA_IMAGE_HEIGHT,
CAPTCHA_FONT_SIZE, CAPTCHA_NOISE_LINES, CAPTCHA_NOISE_DOTS, CAPTCHA_BYPASS_CODE,
)
# 邮件配置
from config.email import (
MAIL_MAILER, MAIL_SERVER, MAIL_PORT, MAIL_USE_SSL,
MAIL_USERNAME, MAIL_PASSWORD, MAIL_ENCRYPTION,
MAIL_FROM_NAME, MAIL_FROM_ADDRESS,
)
# 短信配置
from config.sms import (
SMS_URL, SMS_API_KEY, SMS_SIGN, SMS_TEMPLATE_ID,
)
__all__ = [
# 应用基础配置
'FASTAPI_NAME', 'FASTAPI_VERSION', 'FASTAPI_HOST', 'FASTAPI_PORT',
'FASTAPI_APP', 'FASTAPI_ENV', 'FASTAPI_DEBUG', 'FASTAPI_DEMO',
'FASTAPI_ROOT_PATH', 'FASTAPI_TEMPLATE_FOLDER', 'FASTAPI_STATIC_FOLDER',
'FASTAPI_UPLOAD_DIR', 'FASTAPI_IMAGE_PATH', 'FASTAPI_TEMP_PATH', 'FASTAPI_IMAGE_URL',
'TRUSTED_PROXY_COUNT',
# 数据库配置
'DB_DRIVER', 'DB_HOST', 'DB_PORT', 'DB_DATABASE', 'DB_USERNAME', 'DB_PASSWORD',
'DB_PREFIX', 'DB_DEBUG', 'DB_POOL_SIZE', 'DB_MAX_OVERFLOW', 'DB_POOL_RECYCLE',
'DB_POOL_TIMEOUT', 'DB_CONNECT_TIMEOUT', 'SQLALCHEMY_MYSQL_URL',
'SQLALCHEMY_POSTGRESQL_URL', 'SQLALCHEMY_SQLITE_URL',
# Redis 配置
'REDIS_HOST', 'REDIS_PORT', 'REDIS_PASSWORD', 'REDIS_INDEX',
'REDIS_AUTH', 'REDIS_DECODE_RESPONSES',
# JWT 认证配置
'JWT_SALT', 'JWT_EXPIRE_MINUTES',
'LOGIN_FAIL_MAX', 'LOGIN_LOCK_SECONDS',
# 验证码配置
'CAPTCHA_LENGTH', 'CAPTCHA_EXPIRE', 'CAPTCHA_RATE_LIMIT', 'CAPTCHA_RATE_WINDOW',
'CAPTCHA_CHARS', 'CAPTCHA_FONT_PATH', 'CAPTCHA_IMAGE_WIDTH', 'CAPTCHA_IMAGE_HEIGHT',
'CAPTCHA_FONT_SIZE', 'CAPTCHA_NOISE_LINES', 'CAPTCHA_NOISE_DOTS', 'CAPTCHA_BYPASS_CODE',
# 邮件配置
'MAIL_MAILER', 'MAIL_SERVER', 'MAIL_PORT', 'MAIL_USE_SSL',
'MAIL_USERNAME', 'MAIL_PASSWORD', 'MAIL_ENCRYPTION',
'MAIL_FROM_NAME', 'MAIL_FROM_ADDRESS',
# 短信配置
'SMS_URL', 'SMS_API_KEY', 'SMS_SIGN', 'SMS_TEMPLATE_ID',
]