feat: 系统配置增加网站基础配置

- 网站名称设置
- 底部信息设置(支持HTML)
- 最大上传文件大小设置(MB)
- 缓存有效期设置(天)
- 默认源语言/目标语言设置
- 翻译缓存开关
- 访客翻译开关
- 邮件通知开关
- 新增 get_site_config() 函数供其他模块使用
This commit is contained in:
2026-04-16 18:36:21 +08:00
parent abb76bf6d3
commit aa8526035b
2 changed files with 219 additions and 71 deletions

View File

@@ -313,35 +313,56 @@ def clear_cache():
@admin_required
def settings():
"""系统配置"""
if request.method == 'POST':
data = request.json if request.is_json else request.form
for key, value in data.items():
SystemConfig.set(key, value)
if request.is_json:
return jsonify({'success': True})
flash('配置已保存', 'success')
# 获取所有配置
configs = SystemConfig.query.all()
config_dict = {c.key: c.value for c in configs}
# 获取动态配置
dynamic_configs = DynamicConfig.query.all()
# 获取LLM动态配置
llm_config = get_llm_config()
# 获取网站基础配置
site_config = {
'site_name': DynamicConfig.get('site_name', 'PDF翻译助手'),
'site_footer': DynamicConfig.get('site_footer', '© 2026 PDF翻译助手'),
'max_file_size': DynamicConfig.get('max_file_size', 50),
'cache_expire_days': DynamicConfig.get('cache_expire_days', 30),
'enable_email_notify': DynamicConfig.get('enable_email_notify', True),
'enable_cache': DynamicConfig.get('enable_cache', True),
'enable_guest': DynamicConfig.get('enable_guest', True),
'default_source_lang': DynamicConfig.get('default_source_lang', 'en'),
'default_target_lang': DynamicConfig.get('default_target_lang', 'zh'),
}
return render_template('admin/settings.html',
configs=config_dict,
dynamic_configs=dynamic_configs,
user_limits=USER_LIMITS,
membership_plans=MEMBERSHIP_PLANS,
llm_config=llm_config
llm_config=llm_config,
site_config=site_config
)
@admin_bp.route('/settings/site', methods=['POST'])
@admin_required
def save_site_settings():
"""保存网站基础配置"""
data = request.json
# 保存每个配置项
for key, value in data.items():
if key in ['max_file_size', 'cache_expire_days']:
DynamicConfig.set(f'site_{key}', int(value), category='site', value_type='int', user_id=session.get('user_id'))
elif key in ['enable_email_notify', 'enable_cache', 'enable_guest']:
DynamicConfig.set(f'site_{key}', bool(value), category='site', value_type='bool', user_id=session.get('user_id'))
else:
DynamicConfig.set(f'site_{key}', value, category='site', user_id=session.get('user_id'))
# 记录日志
log = OperationLog(
user_id=session.get('user_id'),
username='admin',
action='save_site_settings',
detail='保存网站基础配置'
)
db.session.add(log)
db.session.commit()
return jsonify({'success': True})
# ==================== 用户权限配置 ====================
@admin_bp.route('/settings/user-limits', methods=['GET', 'POST'])
@admin_required
@@ -1450,4 +1471,20 @@ def init_default_backup_llm():
def get_backup_llm_configs():
"""获取所有备用大模型配置(供其他模块使用)"""
configs = BackupLLMConfig.query.filter_by(is_active=True).order_by(BackupLLMConfig.sort_order).all()
return [c.to_dict() for c in configs]
return [c.to_dict() for c in configs]
# ==================== 获取网站基础配置(供其他模块使用) ====================
def get_site_config():
"""获取网站基础配置"""
return {
'site_name': DynamicConfig.get('site_name', 'PDF翻译助手'),
'site_footer': DynamicConfig.get('site_footer', '© 2026 PDF翻译助手'),
'max_file_size': DynamicConfig.get('max_file_size', 50),
'cache_expire_days': DynamicConfig.get('cache_expire_days', 30),
'enable_email_notify': DynamicConfig.get('enable_email_notify', True),
'enable_cache': DynamicConfig.get('enable_cache', True),
'enable_guest': DynamicConfig.get('enable_guest', True),
'default_source_lang': DynamicConfig.get('default_source_lang', 'en'),
'default_target_lang': DynamicConfig.get('default_target_lang', 'zh'),
}