Files
StarAsh042 773f06a370 feat(core): 引入常量与权重分配算法
把权重上下限、步长与三条权重曲线(flat / dominant / ramp)先定下来,
节点层只负责把参数传进来,不参与算法。
2026-10-12 15:12:00 +08:00

44 lines
2.1 KiB
Python

"""RollingArtist 全局常量与日志。
该模块集中管理路径、权重步长、规模保护阈值等常量,避免散落在业务代码中。
注意:本模块不依赖 ComfyUI,可独立导入与测试。
"""
import logging
import os
from typing import Final
# 节点目录(ra_core 的上一级),所有默认文件均相对于该目录
NODE_DIR: Final[str] = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DEFAULT_ARTIST_CSV: Final[str] = os.path.join(NODE_DIR, "danbooru_art_001.csv")
DEFAULT_CHARACTER_CSV: Final[str] = os.path.join(NODE_DIR, "danbooru_character_001.csv")
# 4.0.0 起记录统一存进 SQLite;该常量保留用于兼容旧版 CSV 记录文件
DEFAULT_TESTED_CSV: Final[str] = os.path.join(NODE_DIR, "tested_combinations.csv")
# 默认数据库:承载已测记录
DEFAULT_DB: Final[str] = os.path.join(NODE_DIR, "rollingartist.sqlite")
# 角色节点的默认数据库:与画师分开,互不干扰
DEFAULT_CHARACTER_DB: Final[str] = os.path.join(NODE_DIR, "rollingcharacter.sqlite")
# 记录类型标记:两个节点即使被指向同一个数据库,同名的画师与角色也不会互相冒充
KIND_ARTIST: Final[str] = "artist"
KIND_CHARACTER: Final[str] = "character"
# 记录库的表结构版本。每次不兼容的结构变更 +1,并在 ra_core/db.py 的
# _MIGRATIONS 里追加一段迁移函数。存放于 meta 表的 schema_version 键。
SCHEMA_VERSION: Final[int] = 2
# 旧版 CSV 记录文件在导入数据库后改名留底用的后缀
LEGACY_BACKUP_SUFFIX: Final[str] = ".bak"
# 权重步长(与节点界面的 step 保持一致)
WEIGHT_STEP: Final[float] = 0.1
# 权重保留的小数位数 / 整数化因子,用整数单位运算避免浮点累计误差
WEIGHT_DECIMALS: Final[int] = 1
WEIGHT_SCALE: Final[int] = 10**WEIGHT_DECIMALS
# CSV 读取使用 utf-8-sig,自动兼容带 BOM 的文件;写入统一使用 utf-8
CSV_READ_ENCODING: Final[str] = "utf-8-sig"
CSV_WRITE_ENCODING: Final[str] = "utf-8"
# 统一日志器:消息中自带 [RollingArtist] 前缀,兼容 ComfyUI 的日志配置
LOGGER: Final[logging.Logger] = logging.getLogger("RollingArtist")