feat(admin, admin-ui): 实现RuoYi风格后台菜单管理,优化媒体资源处理

新增服务端菜单校验与归一化逻辑,完善菜单相关Schema;前端实现条件渲染的菜单编辑器,支持搜索式图标选择器与父级树过滤。新增媒体URL统一处理工具修复管理端本地静态资源路径映射问题,更新全部相关文档、技术决策记录与测试用例。本次变更不影响WonderQ-MiniAPP端。
This commit is contained in:
duanshuwen committed 2026-08-27 09:08:05 +08:00
1 parent 6245159e7c
commit 4c245f0d1f
28 files changed
+625 -36

No files matched your search

+22
View File
@@ -1,8 +1,12 @@
import json
from datetime import datetime
import pytest
from pydantic import ValidationError
from app.models import AdminDepartment, AdminMenu, AdminRole
from app.routers.system import _dept_dict, _menu_dict, _role_dict
from app.schemas import AdminMenuCreate
def test_role_audit_snapshot_serializes_datetime_fields():
@@ -42,3 +46,21 @@ def test_menu_and_department_audit_snapshots_serialize_datetime_fields():
json.dumps(_menu_dict(menu))
json.dumps(_dept_dict(dept))
def test_menu_create_validates_fields_by_menu_type():
with pytest.raises(ValidationError):
AdminMenuCreate(name=" ", type="page", path="/users", componentKey="SystemUsers")
with pytest.raises(ValidationError):
AdminMenuCreate(name="按钮", type="button")
with pytest.raises(ValidationError):
AdminMenuCreate(name="页面", type="page", path="/users")
button = AdminMenuCreate(name="编辑用户", type="button", permissionCode="system:user:update")
assert button.path is None
assert button.componentKey is None
page = AdminMenuCreate(name="用户管理", type="page", path="/users", componentKey="SystemUsers")
assert page.path == "/users"