aa38fe776a
* feat: 添加数据迁移功能 * test: 添加迁移相关测试 * feat: 备份插件及相关持久化目录 * fix: 修复版本号比较逻辑,添加相关测试 * fix: 清洗文件名,添加相关测试 * fix: 修复安全文件名测试用例断言 * refactor: 优化代码,为备份模块提取公用常量 * feat: 修改备份版本校验逻辑,允许强制小版本间导入 * fix: 修复备份创建时间读取,修复备份相关i18n * refactor(backup): 使用 astrbot_path 统一管理备份目录路径 * fix(backup): 清理备份模块中未使用的导入 * refactor(backup): 统一备份路径与参数并移除未用附件目录 - 通过 astrbot_path 动态获取备份/知识库/数据相关路径 - 移除 exporter/importer 未使用的 attachments_dir/data_root 传参 - 更新备份路由与测试用例的构造参数 * fix(dashboard): alias mermaid to dist entry for Vite prebundle * fix(backup): 放行start-time接口到白名单以处理备份导入后jwt token变化导致无法自动刷新webui的问题 * chore(backup): 统一配置路径以使用动态数据目录 * refactor(backup): 使用 VersionComparator 替代重复的版本比较函数 * style(backup test): format code --------- Co-authored-by: Soulter <905617992@qq.com>
78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
"""AstrBot 备份模块共享常量
|
|
|
|
此文件定义了导出器和导入器共享的常量,确保两端配置一致。
|
|
"""
|
|
|
|
from sqlmodel import SQLModel
|
|
|
|
from astrbot.core.db.po import (
|
|
Attachment,
|
|
CommandConfig,
|
|
CommandConflict,
|
|
ConversationV2,
|
|
Persona,
|
|
PlatformMessageHistory,
|
|
PlatformSession,
|
|
PlatformStat,
|
|
Preference,
|
|
)
|
|
from astrbot.core.knowledge_base.models import (
|
|
KBDocument,
|
|
KBMedia,
|
|
KnowledgeBase,
|
|
)
|
|
from astrbot.core.utils.astrbot_path import (
|
|
get_astrbot_config_path,
|
|
get_astrbot_plugin_data_path,
|
|
get_astrbot_plugin_path,
|
|
get_astrbot_t2i_templates_path,
|
|
get_astrbot_temp_path,
|
|
get_astrbot_webchat_path,
|
|
)
|
|
|
|
# ============================================================
|
|
# 共享常量 - 确保导出和导入端配置一致
|
|
# ============================================================
|
|
|
|
# 主数据库模型类映射
|
|
MAIN_DB_MODELS: dict[str, type[SQLModel]] = {
|
|
"platform_stats": PlatformStat,
|
|
"conversations": ConversationV2,
|
|
"personas": Persona,
|
|
"preferences": Preference,
|
|
"platform_message_history": PlatformMessageHistory,
|
|
"platform_sessions": PlatformSession,
|
|
"attachments": Attachment,
|
|
"command_configs": CommandConfig,
|
|
"command_conflicts": CommandConflict,
|
|
}
|
|
|
|
# 知识库元数据模型类映射
|
|
KB_METADATA_MODELS: dict[str, type[SQLModel]] = {
|
|
"knowledge_bases": KnowledgeBase,
|
|
"kb_documents": KBDocument,
|
|
"kb_media": KBMedia,
|
|
}
|
|
|
|
|
|
def get_backup_directories() -> dict[str, str]:
|
|
"""获取需要备份的目录列表
|
|
|
|
使用 astrbot_path 模块动态获取路径,支持通过环境变量 ASTRBOT_ROOT 自定义根目录。
|
|
|
|
Returns:
|
|
dict: 键为备份文件中的目录名称,值为目录的绝对路径
|
|
"""
|
|
return {
|
|
"plugins": get_astrbot_plugin_path(), # 插件本体
|
|
"plugin_data": get_astrbot_plugin_data_path(), # 插件数据
|
|
"config": get_astrbot_config_path(), # 配置目录
|
|
"t2i_templates": get_astrbot_t2i_templates_path(), # T2I 模板
|
|
"webchat": get_astrbot_webchat_path(), # WebChat 数据
|
|
"temp": get_astrbot_temp_path(), # 临时文件
|
|
}
|
|
|
|
|
|
# 备份清单版本号
|
|
BACKUP_MANIFEST_VERSION = "1.1"
|