fix: YYX测试清单16条收口——资产库弹窗层级/批次多选删/商品筛选/模特卡单卡化/垃圾桶清空等
- 资产库:批次弹窗降层(under-confirm 990<999)修单图删除确认弹窗被压;编辑态批次卡多选批删;facets 新增 products 关联商品筛选(前后端,+2 测试);视频成品 tab 补搜索/排序/分页 - 平台套图工作台:「更多」气泡与 icon 左对齐+鼠标移出自动收起;模特卡改单卡(空态「+」占位,点卡进模特库单选回填) - 工作台:删余额条,冻结/共计移至小标题行右侧(.dash-funds-mono) - 模特库:点模特卡弹详情(形象图/标签/三视图+灯箱放大) - 垃圾桶:新增「全部恢复」/「清空垃圾桶」(清空二次确认) - 视频项目页:字重/阴影等轻量对齐设计规范 - api.assetFacets 返回体逐键兜底:旧后端缺 products 键会致资产库整页 undefined.find 白屏(前后端部署时序防护,浏览器已复现验证) 验证:tsc --noEmit / vite build / apps.assets 测试全过;暂存树已独立编译验证,不依赖工作区其余在途改动 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -220,6 +220,43 @@ class AssetBatchesTests(TestCase):
|
||||
self.assertEqual(self.client.get("/api/assets/summary/").json()["tryon"], 2)
|
||||
|
||||
|
||||
class FacetsProductsTests(TestCase):
|
||||
"""facets 返回本 tab 下真实关联的商品(?product= 三路之一:metadata.product_id 等),
|
||||
并按 tab 隔离、team 隔离、只回 id/title。"""
|
||||
|
||||
def setUp(self):
|
||||
from apps.products.models import Product
|
||||
|
||||
self.user, self.team = _mk_team("ufp", "TeamFP")
|
||||
self.client = APIClient()
|
||||
self.client.force_authenticate(self.user)
|
||||
self.p1 = Product.objects.create(team=self.team, created_by=self.user, title="商品甲")
|
||||
self.p2 = Product.objects.create(team=self.team, created_by=self.user, title="商品乙")
|
||||
# tryon 图经 metadata.product_id 关联 p1
|
||||
Asset.objects.create(
|
||||
team=self.team, name="上身图", asset_type="image", source="ai_generated",
|
||||
category=Asset.Category.MODEL_TRYON, metadata={"product_id": str(self.p1.id)},
|
||||
)
|
||||
# kits 图关联 p2(验证 tab 隔离:tryon 下不应出现 p2)
|
||||
Asset.objects.create(
|
||||
team=self.team, name="套图", asset_type="image", source="ai_generated",
|
||||
category=Asset.Category.PLATFORM_KIT, metadata={"product_id": str(self.p2.id)},
|
||||
)
|
||||
|
||||
def test_facets_products_scoped_by_tab(self):
|
||||
data = self.client.get("/api/assets/facets/?tab=tryon").json()
|
||||
self.assertIn("products", data)
|
||||
self.assertEqual({p["id"] for p in data["products"]}, {str(self.p1.id)})
|
||||
self.assertEqual({p["title"] for p in data["products"]}, {"商品甲"})
|
||||
# kits tab 只见 p2
|
||||
kits = self.client.get("/api/assets/facets/?tab=kits").json()
|
||||
self.assertEqual({p["id"] for p in kits["products"]}, {str(self.p2.id)})
|
||||
|
||||
def test_facets_products_empty_when_none(self):
|
||||
data = self.client.get("/api/assets/facets/?tab=others").json()
|
||||
self.assertEqual(data["products"], [])
|
||||
|
||||
|
||||
class SubmitReviewTests(TestCase):
|
||||
"""手动兜底:灰盾点击 → 提交审核;只对送审类放行,非送审类 400。"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user