mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-07 21:00:21 +08:00
♻️ refactor(ui): 重构 UI 渲染系统并优化资源管理 (#2094)
* ♻️ refactor(ui): 重构 UI 渲染系统并优化资源管理 - 【重构】重构 `RendererService` 架构,解耦模板引擎、主题管理与截图引擎 - 【重构】重构 `ui` 模块,采用组件注册机制与数据模型驱动,移除旧版 `builders` - 【功能】新增 UI 热重载模式,支持在不重启的情况下实时预览 HTML/CSS 修改 - 【功能】增强启动项资源检查,支持基于 `resources.spec` 的版本校验与自动更新 - 【优化】统一内置插件的 UI 渲染逻辑,迁移至新的 `ui.table`、`ui.markdown` 等工厂接口 - 【优化】优化日志脱敏工具,支持自动折叠调试输出中冗长的样式标签 - 【优化】引入 `AssetResolutionService`,完善皮肤、组件、主题间的多级资源回退机制 - 【优化】新增组件生命周期钩子 `prepare`,支持渲染前的异步数据预处理 * 🚨 auto fix by pre-commit hooks --------- Co-authored-by: webjoin111 <455457521@qq.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
webjoin111
pre-commit-ci[bot]
parent
bc8e1659ae
commit
5e30694663
@@ -1,9 +1,12 @@
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
import uuid
|
||||
|
||||
import nonebot
|
||||
from nonebot.adapters import Bot
|
||||
from nonebot.drivers import Driver
|
||||
from packaging.specifiers import SpecifierSet
|
||||
from packaging.version import Version
|
||||
from tortoise import Tortoise
|
||||
from tortoise.exceptions import IntegrityError, OperationalError
|
||||
import ujson as json
|
||||
@@ -85,8 +88,54 @@ from bag_users t1
|
||||
|
||||
@PriorityLifecycle.on_startup(priority=5)
|
||||
async def _():
|
||||
if not ZhenxunRepoManager.check_resources_exists():
|
||||
await ZhenxunRepoManager.resources_update()
|
||||
try:
|
||||
should_update = False
|
||||
resource_path = ZhenxunRepoManager.config.RESOURCE_PATH
|
||||
default_theme_path = resource_path / "themes" / "default"
|
||||
version_file = resource_path / "__version__"
|
||||
|
||||
if (
|
||||
not ZhenxunRepoManager.check_resources_exists()
|
||||
or not default_theme_path.exists()
|
||||
or not version_file.exists()
|
||||
):
|
||||
should_update = True
|
||||
logger.info(
|
||||
"检测到资源文件(字体/主题/版本信息)缺失,准备进行初始化下载...",
|
||||
"资源检查",
|
||||
)
|
||||
else:
|
||||
spec_file = Path("resources.spec")
|
||||
req_ver_str = ">=0.0.0"
|
||||
if spec_file.exists():
|
||||
try:
|
||||
for line in spec_file.read_text("utf-8").splitlines():
|
||||
if line.strip().startswith("require_resources_version:"):
|
||||
req_ver_str = line.split(":", 1)[1].strip().strip("'\"")
|
||||
break
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
local_ver_str = "0.0.0"
|
||||
try:
|
||||
content = version_file.read_text("utf-8").strip()
|
||||
local_ver_str = (
|
||||
content.split(":", 1)[1].strip() if ":" in content else content
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if not SpecifierSet(req_ver_str).contains(Version(local_ver_str)):
|
||||
should_update = True
|
||||
logger.info(
|
||||
f"资源版本({local_ver_str})不满足要求({req_ver_str}),准备强制更新...",
|
||||
"资源检查",
|
||||
)
|
||||
|
||||
if should_update:
|
||||
await ZhenxunRepoManager.resources_update()
|
||||
except Exception as e:
|
||||
logger.error(f"资源检查或更新失败: {e}", "资源检查")
|
||||
"""签到与用户的数据迁移"""
|
||||
if goods_list := await GoodsInfo.filter(uuid__isnull=True).all():
|
||||
for goods in goods_list:
|
||||
|
||||
Reference in New Issue
Block a user