refactor: 清理废弃模块并重构管理端与全端代码

- 移除所有废弃的旧首页配置模块,包括destinationHero、demand相关、HomeExperience、vehicleService等表结构与代码,新增数据库迁移删除遗留表
- 重构管理端后台布局为标准RuoYi风格,新增Sidebar、Navbar、SettingsDrawer等组件,替换旧的过渡菜单实现
- 调整移动端响应断点为768px,更新布局相关测试用例,新增布局组件测试
- 删除OperationsTools发布/重置页面,移除/tools菜单入口,清理对应的API调用与测试代码
- 重构玩法模块编辑器:替换旧的图片手动输入框为图片上传组件,移除冗余的取消按钮
- 新增线索查询offset参数支持,完善查询参数处理逻辑
- 优化rbac菜单构建逻辑,新增可见性控制参数
- 修正管家编辑器提示文案,优化系统资源编辑器表单初始化逻辑
- 清理小程序端废弃的体验推荐组件与相关测试代码
- 更新文档与种子脚本,匹配新的API契约与使用说明
This commit is contained in:
duanshuwen committed 2026-08-26 23:24:28 +08:00
1 parent f6c5ad589f
commit fbf2c772a8
63 files changed
+2272 -1991

No files matched your search

+4 -68
View File
@@ -5,20 +5,13 @@ import json
from sqlalchemy import delete, select
from sqlalchemy.orm import Session
from .auth import hash_password
from .content import DEMAND_FEATURE_CARDS, DEMAND_FORM, DEMAND_HERO, DESTINATION_HERO, HERO_SLIDES, VEHICLE_OPTIONS, VEHICLE_SERVICE
from .content import HERO_SLIDES, VEHICLE_OPTIONS
from .database import Base, SessionLocal, engine
from .models import (
AdminUser,
DemandFeatureCard,
DemandForm,
DemandHero,
DestinationHero,
HeroSlide,
MediaAsset,
SiteVersion,
VehicleOption,
VehicleServiceConfig,
utc_now,
)
def create_media(db: Session, url: str | None, group: str, name: str | None = None) -> None:
if not url:
@@ -33,8 +26,8 @@ def create_media(db: Session, url: str | None, group: str, name: str | None = No
db.add(MediaAsset(url=url, group=group, name=name))
def reset_guizhou_content(db: Session) -> dict:
for model in [SiteVersion, DemandForm, DemandFeatureCard, DemandHero, VehicleOption, VehicleServiceConfig, DestinationHero, HeroSlide, MediaAsset]:
def seed_initial_content(db: Session) -> dict:
for model in [VehicleOption, HeroSlide, MediaAsset]:
db.execute(delete(model))
db.flush()
@@ -50,17 +43,6 @@ def reset_guizhou_content(db: Session) -> dict:
)
)
for index, item in enumerate(DESTINATION_HERO):
create_media(db, item.get("image"), "destination-hero", item["title"])
db.add(
DestinationHero(
title=item["title"],
kicker=item.get("kicker"),
image=item.get("image"),
sortOrder=index,
)
)
for index, option in enumerate(VEHICLE_OPTIONS):
create_media(db, option["image"], "vehicle-option", option["title"])
db.add(
@@ -72,55 +54,9 @@ def reset_guizhou_content(db: Session) -> dict:
)
)
db.add(VehicleServiceConfig(**VEHICLE_SERVICE))
for index, item in enumerate(DEMAND_HERO):
db.add(
DemandHero(
title=item["title"],
kicker=item.get("kicker"),
description=item.get("description"),
steps=item.get("steps", []),
sortOrder=index,
)
)
for index, item in enumerate(DEMAND_FEATURE_CARDS):
db.add(
DemandFeatureCard(
title=item["title"],
description=item.get("description"),
sortOrder=index,
)
)
db.add(DemandForm(**DEMAND_FORM))
snapshot = SiteVersion(
title="guizhou-content-reset",
status="published",
publishedAt=utc_now(),
snapshot={
"heroSlides": len(HERO_SLIDES),
"destinationHero": len(DESTINATION_HERO),
"vehicleOptions": len(VEHICLE_OPTIONS),
"vehicleService": 1,
"demandHero": len(DEMAND_HERO),
"demandFeatureCards": len(DEMAND_FEATURE_CARDS),
"demandForm": 1,
},
)
db.add(snapshot)
db.flush()
return {
"heroSlides": len(HERO_SLIDES),
"destinationHero": len(DESTINATION_HERO),
"vehicleOptions": len(VEHICLE_OPTIONS),
"vehicleService": 1,
"demandHero": len(DEMAND_HERO),
"demandFeatureCards": len(DEMAND_FEATURE_CARDS),
"demandForm": 1,
"siteVersionId": snapshot.id,
}
@@ -142,7 +78,7 @@ def seed_database(reset: bool) -> dict:
role="super_admin",
)
)
result = reset_guizhou_content(db) if reset else {"reset": False}
result = seed_initial_content(db) if reset else {"seeded": False}
db.commit()
return result