fix(projects+assets): 项目封面引用真实商品图 + 资产库排除软删资产
- 项目卡封面:废弃「项目名关键词→静态 mock 假图」映射(与真实数据脱节,导致全是假面膜图), 改用后端 cover_preview_url(取商品 cover_asset 主图);无商品图 → 干净占位 - 资产库 queryset/summary/facets 补 is_deleted=False:软删资产不再出现在资产库与 tab 计数 (此前 is_deleted 字段在资产库未生效,软删无效) - 单测 AssetSoftDeleteTests:列表 + 计数均排除软删 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c6e9c7e77b
commit
9e791a4db9
@@ -79,7 +79,7 @@ class AssetViewSet(TeamScopedViewSetMixin, ModelViewSet):
|
||||
"""服务端过滤,支持各页按需懒加载(不再前端取全量后客户端切片)。
|
||||
参数:tab(资产库分桶)/category/asset_type/source/product/q(搜索)/m_<key>(metadata 过滤)/ordering。
|
||||
默认按 -created_at 排序——无 ORDER BY 时分页会重/漏。"""
|
||||
qs = super().get_queryset()
|
||||
qs = super().get_queryset().filter(is_deleted=False) # 软删资产不出现在资产库
|
||||
p = self.request.query_params
|
||||
if p.get("tab"):
|
||||
qs = qs.filter(_tab_q(p["tab"]))
|
||||
@@ -109,7 +109,7 @@ class AssetViewSet(TeamScopedViewSetMixin, ModelViewSet):
|
||||
@action(detail=False, methods=["get"])
|
||||
def summary(self, request):
|
||||
"""资产库 tab 计数(人物/场景/商品图/成片/我的上传/未分类),供 tab 徽标——不必取全量。"""
|
||||
base = Asset.objects.filter(team=self.get_team())
|
||||
base = Asset.objects.filter(team=self.get_team(), is_deleted=False)
|
||||
tabs = ["people", "scenes", "products", "tryon", "kits", "creations", "materials", "uploads", "unclassified"]
|
||||
return Response({t: base.filter(_tab_q(t)).count() for t in tabs})
|
||||
|
||||
@@ -117,7 +117,7 @@ class AssetViewSet(TeamScopedViewSetMixin, ModelViewSet):
|
||||
def facets(self, request):
|
||||
"""某 tab 下真实存在的筛选项(来源/类型/指定 metadata 键的取值),供下拉「只列真有的」。
|
||||
参数:tab、meta_keys=gender,age,role,...(逗号分隔)。"""
|
||||
base = Asset.objects.filter(team=self.get_team())
|
||||
base = Asset.objects.filter(team=self.get_team(), is_deleted=False)
|
||||
if request.query_params.get("tab"):
|
||||
base = base.filter(_tab_q(request.query_params["tab"]))
|
||||
sources = sorted(s for s in base.values_list("source", flat=True).distinct() if s)
|
||||
|
||||
Reference in New Issue
Block a user