refactor: 清理废弃业务模块并更新全栈配置

- 移除后端产品、目的地、活动专题等废弃模块的数据库表与业务代码,删除冗余API接口
- 删除小程序端详情页、线路组件等冗余代码,移除搜索工具与测试用例,调整导航逻辑
- 清理管理端废弃的类型定义、编辑器与测试代码
- 更新项目文档,修正模块维护说明与接口文档内容
This commit is contained in:
duanshuwen committed 2026-08-17 22:43:49 +08:00
1 parent 72e6071bb1
commit 548f91c37f
80 files changed
+953 -12702

No files matched your search

+1 -71
View File
@@ -20,78 +20,8 @@ def model_dict(instance, include: dict[str, object] | None = None) -> dict:
return data
def _sorted_aliases(destination) -> list:
return sorted(destination.aliases or [], key=lambda item: ((item.alias or "").lower(), item.id or ""))
def _sorted_images(product) -> list:
return sorted(product.images or [], key=lambda item: (item.sortOrder, item.id or "", item.url))
def _product_images(product) -> list[dict]:
return [model_dict(image) for image in _sorted_images(product)]
def _detail_sections(product) -> list:
return encode_value(product.detailSections or [])
def admin_product_dict(product) -> dict:
return model_dict(
product,
{
"tags": list(product.tags or []),
"detailSections": _detail_sections(product),
"destination": destination_dict(product.destination) if product.destination else None,
"images": _product_images(product),
},
)
def public_product_dict(product) -> dict:
return {
"id": product.id,
"sourceId": product.sourceId,
"title": product.title,
"subtitle": product.subtitle,
"destination": {"id": product.destination.id, "name": product.destination.name} if product.destination else None,
"priceAmount": product.priceAmount,
"priceUnit": product.priceUnit,
"tags": list(product.tags or []),
"coverImage": product.coverImage,
"summary": product.summary,
"images": _product_images(product),
"detailSections": _detail_sections(product),
"status": product.status,
}
def product_dict(product) -> dict:
return admin_product_dict(product)
def hotel_group_dict(group) -> dict:
data = model_dict(group)
if not data.get("coverImage"):
data["coverImage"] = data.get("image")
if not data.get("image"):
data["image"] = data.get("coverImage")
data["tags"] = list(group.tags or [])
return data
def destination_dict(destination, include_count: bool = False, product_count: int | None = None) -> dict:
data = model_dict(destination, {"aliases": [model_dict(alias) for alias in _sorted_aliases(destination)]})
if include_count:
data["_count"] = {"products": product_count if product_count is not None else len(destination.products or [])}
return data
def lead_dict(lead) -> dict:
return model_dict(
lead,
{
"sourceProduct": {"id": lead.sourceProduct.id, "title": lead.sourceProduct.title} if lead.sourceProduct else None,
"assignedUser": {"id": lead.assignedUser.id, "name": lead.assignedUser.name} if lead.assignedUser else None,
},
{"assignedUser": {"id": lead.assignedUser.id, "name": lead.assignedUser.name} if lead.assignedUser else None},
)