import os  # 导入系统模块用于读取子进程环境变量。 
import threading  # 导入线程模块用于按任务隔离运行时凭据。 

AK = ""  # 华为云访问密钥 AK，留空时以网页输入为准。 
SK = ""  # 华为云访问密钥 SK，留空时以网页输入为准。 
# 说明：以下是通用可选参数，等待你提供的文档细节后再决定是否强依赖。 
PROJECT_ID = "YOUR_PROJECT_ID"  # 项目 ID 占位符，用于部分 API 的路径或请求体参数。 
DEFAULT_REGION_ID = "cn-south-1"  # 默认区域 ID，占位符，实际按你的地区映射表替换。
DOMAIN_ID = ""  # IAM 域 ID 可选参数，若自动获取项目 ID 失败可填写。 
DB_HOST = "127.0.0.1"  # MySQL 主机地址，宝塔本机一般用 127.0.0.1。 
DB_PORT = 3306  # MySQL 端口，宝塔默认 3306。 
DB_USER = "wawacloud"  # MySQL 用户名，按宝塔数据库配置填写。 
DB_PASSWORD = "cao2002."  # MySQL 密码，按宝塔数据库配置填写。 
DB_NAME = "wawacloud"  # MySQL 数据库名称，按宝塔数据库配置填写。 
DB_CHARSET = "utf8mb4"  # MySQL 字符集，建议使用 utf8mb4。 
DEFAULT_LOGIN_PASSWORD = "cao521"  # 默认账号初始密码，首次登录后可修改。 
APP_SESSION_SECRET = "CHANGE_ME_TO_RANDOM_SECRET"  # 会话密钥，用于加密登录态 Cookie。 
APP_SESSION_COOKIE = "wawacloud_session"  # 会话 Cookie 名称，避免与其他系统冲突。 
APP_SESSION_HTTPS_ONLY = False  # 会话 Cookie 是否仅 HTTPS 使用，本地调试可设为 False。 
_RUNTIME_CREDENTIALS = threading.local()  # 线程局部存储用于隔离每个任务的 AK/SK。 


def set_runtime_credentials(ak: str = "", sk: str = ""):  # 设置当前线程运行时 AK/SK。 
    _RUNTIME_CREDENTIALS.ak = (ak or "").strip()  # 保存当前线程 AK。 
    _RUNTIME_CREDENTIALS.sk = (sk or "").strip()  # 保存当前线程 SK。 


def clear_runtime_credentials():  # 清空当前线程运行时 AK/SK。 
    for field in ("ak", "sk"):  # 逐个字段清理线程局部状态。 
        if hasattr(_RUNTIME_CREDENTIALS, field):  # 若字段存在则删除。 
            delattr(_RUNTIME_CREDENTIALS, field)  # 删除字段避免影响后续任务。 


def get_runtime_ak_sk():  # 读取当前线程生效的 AK/SK。 
    runtime_ak = getattr(_RUNTIME_CREDENTIALS, "ak", "").strip()  # 读取线程局部 AK。 
    runtime_sk = getattr(_RUNTIME_CREDENTIALS, "sk", "").strip()  # 读取线程局部 SK。 
    env_ak = (os.getenv("HUAWEI_AK") or os.getenv("WAWACLOUD_HUAWEI_AK") or "").strip()  # 子进程隔离 AK。 
    env_sk = (os.getenv("HUAWEI_SK") or os.getenv("WAWACLOUD_HUAWEI_SK") or "").strip()  # 子进程隔离 SK。 
    return runtime_ak or env_ak or AK, runtime_sk or env_sk or SK  # 优先线程局部，其次进程环境，最后全局配置。 
