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

-85
View File
@@ -3,7 +3,6 @@ from typing import Literal
from pydantic import BaseModel, EmailStr, Field, ValidationInfo, field_validator
ProductStatus = Literal["draft", "published", "archived"]
LeadStatus = Literal["new", "assigned", "contacted", "planning", "won", "invalid"]
@@ -16,60 +15,6 @@ class PhoneLoginIn(BaseModel):
code: str = Field(min_length=1, max_length=256)
class ProductImageIn(BaseModel):
url: str = ""
alt: str | None = None
sortOrder: int = 0
class TextBlock(BaseModel):
type: Literal["text"]
text: str = ""
class ImageBlock(BaseModel):
type: Literal["image"]
url: str = ""
alt: str | None = None
class ProductDetailSectionIn(BaseModel):
key: str = ""
label: str = ""
title: str | None = None
blocks: list[TextBlock | ImageBlock] = Field(default_factory=list)
class ProductCreateIn(BaseModel):
title: str = Field(min_length=2)
subtitle: str | None = None
destinationId: str | None = None
priceAmount: int | None = Field(default=None, ge=0)
priceUnit: str | None = None
tags: list[str] = Field(default_factory=list)
coverImage: str | None = None
summary: str | None = None
images: list[ProductImageIn] | None = None
detailSections: list[ProductDetailSectionIn] | None = None
status: ProductStatus = "draft"
sortWeight: int = 0
class ProductUpdateIn(BaseModel):
title: str | None = Field(default=None, min_length=2)
subtitle: str | None = None
destinationId: str | None = None
priceAmount: int | None = Field(default=None, ge=0)
priceUnit: str | None = None
tags: list[str] | None = None
coverImage: str | None = None
summary: str | None = None
images: list[ProductImageIn] | None = None
detailSections: list[ProductDetailSectionIn] | None = None
status: ProductStatus | None = None
sortWeight: int | None = None
class LeadCreateIn(BaseModel):
destination: str | None = None
phone: str = Field(min_length=2, max_length=64)
@@ -79,7 +24,6 @@ class LeadCreateIn(BaseModel):
budgetMax: int | None = Field(default=None, ge=0)
note: str | None = Field(default=None, max_length=1000)
sourcePage: str | None = None
sourceProductId: str | None = None
@field_validator("phone")
@classmethod
@@ -104,19 +48,6 @@ class LeadStatusIn(BaseModel):
status: LeadStatus
class ProductQuery(BaseModel):
keyword: str | None = None
destinationId: str | None = None
status: ProductStatus = "published"
take: int = Field(default=48, ge=1, le=100)
class AdminProductQuery(BaseModel):
keyword: str | None = None
status: ProductStatus | None = None
take: int = Field(default=100, ge=1, le=200)
class LeadQuery(BaseModel):
status: LeadStatus | None = None
sourcePage: str | None = None
@@ -141,19 +72,8 @@ class SiteConfigPatchIn(BaseModel):
title: str | None = None
kicker: str | None = None
subtitle: str | None = None
name: str | None = None
slug: str | None = None
region: str | None = None
label: str | None = None
keyword: str | None = None
spots: str | None = None
alt: str | None = None
image: str | None = None
description: str | None = None
coverImage: str | None = None
priceAmount: int | None = Field(default=None, ge=0)
priceUnit: str | None = None
tags: list[str] | None = None
steps: list[str] | None = None
destinationLabel: str | None = None
destinationPlaceholder: str | None = None
@@ -163,13 +83,8 @@ class SiteConfigPatchIn(BaseModel):
notePlaceholder: str | None = None
submitLabel: str | None = None
chips: list[str] | None = None
productIds: list[str] | None = None
status: str | None = None
startsAt: datetime | None = None
endsAt: datetime | None = None
targetType: str | None = None
targetValue: str | None = None
isHot: bool | None = None
isActive: bool | None = None
sortOrder: int | None = None