from __future__ import annotations from dataclasses import dataclass from typing import Callable, Optional from ..core.config import Settings def _to_optional_str(value: Optional[object]) -> Optional[str]: return str(value) if value is not None else None def _bool_to_text(value: bool) -> str: return "true" if value else "false" @dataclass(frozen=True) class SystemConfigDefault: key: str value_getter: Callable[[Settings], Optional[str]] description: Optional[str] = None SYSTEM_CONFIG_DEFAULTS: list[SystemConfigDefault] = [ SystemConfigDefault( key="llm.api_key", value_getter=lambda config: config.openai_api_key, description="默认 LLM API Key,用于后台调用大模型。", ), SystemConfigDefault( key="llm.base_url", value_getter=lambda config: _to_optional_str(config.openai_base_url), description="默认大模型 API Base URL。", ), SystemConfigDefault( key="llm.model", value_getter=lambda config: config.openai_model_name, description="默认 LLM 模型名称。", ), SystemConfigDefault( key="smtp.server", value_getter=lambda config: config.smtp_server, description="用于发送邮件验证码的 SMTP 服务器地址。", ), SystemConfigDefault( key="smtp.port", value_getter=lambda config: _to_optional_str(config.smtp_port), description="SMTP 服务端口。", ), SystemConfigDefault( key="smtp.username", value_getter=lambda config: config.smtp_username, description="SMTP 登录用户名。", ), SystemConfigDefault( key="smtp.password", value_getter=lambda config: config.smtp_password, description="SMTP 登录密码。", ), SystemConfigDefault( key="smtp.from", value_getter=lambda config: config.email_from, description="邮件显示的发件人名称或邮箱。", ), SystemConfigDefault( key="auth.allow_registration", value_getter=lambda config: _bool_to_text(config.allow_registration), description="是否允许用户自助注册。", ), SystemConfigDefault( key="auth.linuxdo_enabled", value_getter=lambda config: _bool_to_text(config.enable_linuxdo_login), description="是否启用 Linux.do OAuth 登录。", ), SystemConfigDefault( key="linuxdo.client_id", value_getter=lambda config: config.linuxdo_client_id, description="Linux.do OAuth Client ID。", ), SystemConfigDefault( key="linuxdo.client_secret", value_getter=lambda config: config.linuxdo_client_secret, description="Linux.do OAuth Client Secret。", ), SystemConfigDefault( key="linuxdo.redirect_uri", value_getter=lambda config: _to_optional_str(config.linuxdo_redirect_uri), description="Linux.do OAuth 回调地址。", ), SystemConfigDefault( key="linuxdo.auth_url", value_getter=lambda config: _to_optional_str(config.linuxdo_auth_url), description="Linux.do OAuth 授权地址。", ), SystemConfigDefault( key="linuxdo.token_url", value_getter=lambda config: _to_optional_str(config.linuxdo_token_url), description="Linux.do OAuth Token 获取地址。", ), SystemConfigDefault( key="linuxdo.user_info_url", value_getter=lambda config: _to_optional_str(config.linuxdo_user_info_url), description="Linux.do 用户信息接口地址。", ), SystemConfigDefault( key="writer.chapter_versions", value_getter=lambda config: _to_optional_str(config.writer_chapter_versions), description="每次生成章节的候选版本数量。", ), ]