gongxiangp2/LABEL_OPTIMIZATION.md
2025-10-26 09:11:04 +08:00

6.8 KiB
Raw Blame History

标签优化说明 v2.1

📅 更新日期:2025-10-17


📝 标签更新概述

为了更好地匹配实际业务场景,对系统中的标签进行了全面优化:

原标签 新标签 说明
商品型号 SPU 更专业的电商术语,表示标准产品单元
一级分类 使用店铺 明确表示素材所属的电商店铺
场景名称/二级分类 场景类别 统一命名,表示素材适用的场景分类

🎯 更新范围

1. 前端组件

UploadModal.tsx(上传模态框)

  • ✅ "商品型号" → "SPU"
  • ✅ "一级分类" → "使用店铺"
    • 提示文本:"输入新店铺名称"
    • 按钮文本:"+ 新建店铺"
    • 选择提示:"选择使用店铺"
  • ✅ "二级分类/场景" → "场景类别"
    • 提示文本:"输入新场景类别"
    • 按钮文本:"+ 新建场景类别"
    • 选择提示:"选择场景类别"

page.tsx(首页)

  • ✅ 搜索框 placeholder:

    • 原:"搜索商品型号、分类、场景、作者..."
    • 新:"搜索SPU、店铺、场景类别、作者..."
  • ✅ 筛选区域标题:

    • "一级分类" → "使用店铺"
    • "二级分类/场景" → "场景类别"
  • ✅ 筛选标签显示:

    • "一级分类: xxx" → "店铺: xxx"
    • "二级分类: xxx" → "场景类别: xxx"
  • ✅ 素材卡片信息:

    • "一级分类:" → "店铺:"
    • "二级分类:" → "场景类别:"

2. 后端API

/api/categories/route.ts

  • ✅ 注释更新:"获取所有一级分类" → "获取所有使用店铺"
  • ✅ 错误消息更新:
    • "获取分类列表失败" → "获取店铺列表失败"
    • "分类名称不能为空" → "店铺名称不能为空"
    • "该分类已存在" → "该店铺已存在"
    • "创建分类失败" → "创建店铺失败"

/api/scenes/route.ts

  • ✅ 注释更新:"获取所有场景" → "获取所有场景类别"
  • ✅ 错误消息更新:
    • "获取场景列表失败" → "获取场景类别列表失败"
    • "场景名称不能为空" → "场景类别名称不能为空"
    • "该场景已存在" → "该场景类别已存在"
    • "创建场景失败" → "创建场景类别失败"

/api/materials/route.ts

  • ✅ 搜索注释更新:
    • 原:"search in productModel, categoryName, sceneName, authorName"
    • 新:"search in SPU, shop, scene category, author"
  • ✅ 筛选注释更新:
    • "Add category filter" → "Add shop filter (使用店铺)"
    • "Add scene filter" → "Add scene category filter (场景类别)"

3. 数据库Schema

prisma/schema.prisma

model Material {
  productModel  String   // SPU (原:商品型号)
  categoryName  String   // 使用店铺 (原:一级分类名称)
  sceneName     String   // 场景类别 (原:二级分类/场景名称)
  ...
}

model Category {
  name  String  @unique  // 使用店铺名称 (原:一级分类名称)
  ...
}

model Scene {
  name  String  @unique  // 场景类别名称 (原:二级分类/场景名称)
  ...
}

4. 部署脚本

update-deploy.sh

  • ✅ 初始化数据更新:

    # 原:初始化一级分类数据(家居、办公、商业等)
    # 新:初始化店铺数据(天猫旗舰店、京东自营等)
    
  • ✅ 部署完成提示新增标签更新说明:

    标签更新:
    📝 商品型号 → SPU
    📝 一级分类 → 使用店铺
    📝 场景名称 → 场景类别
    

💡 业务场景说明

SPU(Standard Product Unit)

  • 定义:标准产品单元,电商行业标准术语
  • 示例:
    • iPhone 15 Pro Max 256GB(SPU)
    • ├─ 深空黑色(SKU)
    • ├─ 原色钛金属(SKU)
    • └─ 白色钛金属(SKU)
  • 用途:统一管理同一产品的所有变体

使用店铺

  • 定义:素材所属的电商店铺/销售渠道
  • 示例:
    • 天猫旗舰店
    • 京东自营
    • 拼多多店铺
    • 1688店铺
    • 淘宝店铺
    • 抖音小店
    • 小红书店铺
  • 用途:区分不同渠道的素材需求

场景类别

  • 定义:素材适用的具体场景分类
  • 示例:
    • 客厅
    • 卧室
    • 厨房
    • 办公室
    • 商业展厅
    • 户外场景
  • 用途:快速找到特定场景的素材

📊 数据迁移

无需迁移

✅ 本次更新仅涉及标签文本更改,不涉及数据库字段名修改

✅ 现有数据完全兼容,无需数据迁移

✅ 只需要重新部署前端和后端代码即可

可选:更新初始数据

如果希望更新初始店铺数据,可以执行:

ssh root@192.168.58.20
cd /mnt/tank/apps/youyidian-3d

docker compose exec -T app npx prisma db execute --schema=/app/prisma/schema.prisma --stdin <<< "
-- 清空现有分类(可选)
DELETE FROM categories;

-- 插入新的店铺数据
INSERT INTO categories (id, name, \"createdAt\") VALUES 
(gen_random_uuid(), '天猫旗舰店', NOW()),
(gen_random_uuid(), '京东自营', NOW()),
(gen_random_uuid(), '拼多多店铺', NOW()),
(gen_random_uuid(), '1688店铺', NOW()),
(gen_random_uuid(), '淘宝店铺', NOW()),
(gen_random_uuid(), '抖音小店', NOW()),
(gen_random_uuid(), '小红书店铺', NOW()),
(gen_random_uuid(), '其他店铺', NOW())
ON CONFLICT (name) DO NOTHING;
"

🚀 部署更新

方式一:自动部署(推荐)

cd /Users/lanmu/Desktop/gongxiangp2
./update-deploy.sh

方式二:手动部署

# 1. 打包
cd /Users/lanmu/Desktop/gongxiangp2
tar -czf update.tar.gz --exclude='node_modules' --exclude='.next' .

# 2. 上传
scp update.tar.gz root@192.168.58.20:/mnt/tank/apps/youyidian-3d/

# 3. 部署
ssh root@192.168.58.20
cd /mnt/tank/apps/youyidian-3d
tar -xzf update.tar.gz
docker compose down
docker compose up -d --build

✅ 验证更新

1. 上传页面

  1. 打开上传模态框
  2. 检查标签:
    • ✅ "SPU"(而不是"商品型号")
    • ✅ "使用店铺"(而不是"一级分类")
    • ✅ "场景类别"(而不是"场景名称")

2. 首页

  1. 检查搜索框 placeholder
  2. 检查筛选区域标题:
    • ✅ "使用店铺"
    • ✅ "场景类别"
  3. 检查素材卡片信息显示

3. 功能测试

  1. 测试新建店铺
  2. 测试新建场景类别
  3. 测试搜索功能
  4. 测试筛选功能

📈 用户体验改进

更专业

  • ✅ 使用行业标准术语(SPU)
  • ✅ 提升系统专业度

更清晰

  • ✅ "使用店铺"比"一级分类"更明确
  • ✅ "场景类别"比"场景名称/二级分类"更统一

更易用

  • ✅ 标签语义更明确
  • ✅ 减少理解成本
  • ✅ 提升操作效率

📞 技术支持

如有问题,请查看:

  • 功能更新文档:FEATURE_UPDATES.md
  • 快速部署指南:QUICK_DEPLOY.md
  • 项目信息:PROJECT_INFO.md

更新完成! 🎉