furniture-3d-system-Wu/furniture-3d-system/docs/开发指南/包装方案增强/包装方案增强-非程序员操作手册.md

12 KiB
Raw Blame History

包装方案增强操作手册(非程序员版,新平台一期)

1. 先看结论

你这次要做的事情只有一条:

  • 把「包装方案」接到新平台的 草稿组 -> 准 SKU 这一层,并保留旧产品详情页包装能力不坏。

你不用先理解整个系统。

你只要记住下面这句话:

  • 新入口看 草稿组详情页
  • 旧入口只做兼容

2. 你这次不要碰什么

这次不要碰下面这些内容:

  • 自动组合主链
  • 资产中心主链
  • CAD 导入
  • 装配编辑器
  • 仓库系统
  • 库存流水
  • 仓位策略

如果你发现自己已经开始改这些内容,请先停下来。


3. 你电脑里要准备什么

请先确认电脑里至少有这些:

  • Node.js
  • npm
  • Docker Desktop

项目根目录指的是:

  • 当前这个仓库最里面、真正有 package.json 和 prisma/ 的那一层目录

你不用假设它一定在某个固定磁盘路径里。

只要记住:

  • 所有命令都在“当前仓库根目录”执行
  • 不要在外层父目录执行前端命令

4. 第一次打开项目怎么做

第 1 步:打开终端

可以是:

  • PowerShell
  • Windows Terminal
  • Codex 内置终端

第 2 步:进入项目根目录

不要复制固定磁盘路径。

正确做法是:

  • 先找到当前仓库根目录
  • 再进入这个目录

如果你已经在 Codex 里打开了正确仓库,这一步通常可以跳过。

第 3 步:看一下当前状态

git status

如果你看到很多不是你改的文件,不要慌。

原则只有两个:

  • 不删除看不懂的改动
  • 不回退不是你负责的内容

第 4 步:拉最新代码

git pull origin main

第 5 步:切到分配给你的分支

这里不要死记固定分支名。

正确做法是:

  • 如果仓库里已经告诉你分支名,就切到那个分支
  • 如果没有,就先问主线同事

常见命令还是:

git fetch origin
git checkout <分支名>

5. 本地环境怎么启动

方案 A:直接启动

npm install
npm run dev

启动后,开发地址以终端输出为准。

通常会是:

  • http://localhost:<端口>

但不要把 3000 当成固定值。

方案 B:如果数据库连不上

先打开 Docker Desktop,然后执行:

docker-compose -f docker-compose.dev.yml up -d

如果你改了 schema.prisma,还要执行:

npm run prisma:generate
npm run prisma:push

npm run prisma:push 只允许本地开发库使用。生产或准生产数据库必须走 npx prisma migrate deploy,并在迁移后执行 npm run db:verify-master-data:all:strict。

方案 C:如果本地几乎没有演示数据

可以先试:

npm run demo:setup

这一步的目的是:

  • 让你本地先有可点的基础数据
  • 不然你后面很难进入 草稿组详情页

6. 先打开哪些页面

这次你最重要的不是旧产品详情页,而是新平台主链页面。

6.1 首页

地址:

  • 当前开发地址的 /

现在首页是流程导航页,不是旧产品列表页。

6.2 草稿组列表

地址:

  • 当前开发地址的 /draft-groups

你要先从这里找到一条有准 SKU 的草稿组。

6.3 草稿组详情页

地址格式:

  • 当前开发地址的 /draft-groups/<草稿组ID>

这就是你这次主要开发和验证的页面。

包装相关内容现在挂在这里。

6.4 正式入库页

地址:

  • 当前开发地址的 /intake

这页用于确认:

  • 你的包装结果后面能不能继续承接

6.5 旧产品详情页

地址格式:

  • 当前开发地址的 /products/<产品ID>

这页现在不是主入口。

但你最后仍然要回来看一眼,确认旧包装能力没被你改坏。


7. 你应该先看哪些代码文件

不要一上来全仓库搜索。

按这个顺序看就够了。

第 1 组:先看新平台入口

  1. src/app/draft-groups/[id]/page.tsx
  2. src/app/draft-groups/[id]/DraftGroupDetailClient.tsx
  3. src/app/api/pre-skus/[id]/packaging/route.ts
  4. src/server/services/draft-group.service.ts
  5. src/server/services/draft-group.service.types.ts
  6. src/server/services/intake.service.ts

第 2 组:再看旧链兼容

  1. src/components/packaging/PackagingEditor.tsx
  2. src/app/products/[id]/ProductDetailClient.workspace.tsx
  3. src/app/api/products/[id]/packaging/route.ts
  4. src/server/services/packaging.service.ts

第 3 组:最后看数据模型

  1. prisma/schema.prisma
  2. src/server/repositories/draft-group.repository.ts
  3. src/server/repositories/warehouse.repository.ts

7.1 如果你是用 Codex 干活,直接这样做

你不用自己把需求翻成技术话。

可以直接把下面这段话发给 Codex:

请在当前仓库根目录内工作,不要假设固定的本地磁盘路径,也不要假设固定端口。

目标:
- 把包装方案接到新平台的 `DraftGroup -> PreSku` 这一层
- 让每个 PreSku 单独保存包装结果
- 保留旧产品详情页包装能力不坏
- 给工艺图组合留接口位置或占位区,但本期不做完整实现

不要做:
- 自动组合主链
- 资产中心主链
- CAD 导入
- 装配编辑器
- 仓库系统

优先看这些文件:
- src/app/draft-groups/[id]/page.tsx
- src/app/draft-groups/[id]/DraftGroupDetailClient.tsx
- src/app/api/pre-skus/[id]/packaging/route.ts
- src/server/services/draft-group.service.ts
- src/server/services/draft-group.service.types.ts
- src/server/services/intake.service.ts
- src/components/packaging/PackagingEditor.tsx
- src/app/products/[id]/ProductDetailClient.workspace.tsx
- src/app/api/products/[id]/packaging/route.ts
- src/server/services/packaging.service.ts
- prisma/schema.prisma

要求:
- 先判断根因,再改代码
- 改动保持聚焦
- 改完跑最小必要验证
- 最后用中文说清楚:完成了什么、没完成什么、风险是什么

如果你想让 Codex 自己继续排查,也可以追加一句:

如果当前仓库数据不够,请先说明缺什么,不要自己猜业务数据。

8. 这次你到底要改什么

你可以把这次工作拆成 4 件事。

第 1 件:包装结果按准 SKU 单独保存

现在你要保证:

  • 一个草稿组里有多个准 SKU 时
  • 每个准 SKU 都有自己的包装结果
  • 改 A,不会影响 B

第 2 件:箱内装载项不能再只靠板件

以前更像:

panelIds: ['P001', 'P002']

这次要升级成更通用的思路:

items: [
  { itemType: 'panel', name: '左侧板', quantity: 1 },
  { itemType: 'hardware', name: '连接片', quantity: 4 }
]

简单理解就是:

  • 一个箱子里,不再只记录板件
  • 一个箱子里,可以记录板件、组件、五金、附件

第 3 件:包装材料和规格要能保存

后面产品同事会关心:

  • 纸箱
  • 泡沫
  • 护角
  • 珍珠棉
  • 套袋

这些包装材料的规格和成本。

所以这次至少要让系统能保存:

  • 用了什么材料
  • 选了什么规格
  • 大概多少成本

第 4 件:工艺图组合留位置

这期不要做完整工艺图系统。

你只要做到:

  • 页面上给它留位置
  • 数据结构里给它留位置
  • 文案上明确这是预留能力

9. 推荐你怎么改

请按这个顺序来。

第 1 步:先改数据模型和类型

优先改:

  • prisma/schema.prisma
  • draft-group.service.types.ts
  • packaging.service.ts 相关类型

先把这些问题想清楚:

  1. 包装结果挂在哪个对象上
  2. 箱内项是不是统一改成 items[]
  3. 包装材料怎么保存
  4. 工艺图组合预留放哪里

第 2 步:再改 Service

优先看:

  • draft-group.service.ts
  • packaging.service.ts
  • intake.service.ts

你的目标是:

  • 新平台能保存
  • 正式入库能承接
  • 旧产品详情页还能读

第 3 步:再改 API

重点看:

  • src/app/api/pre-skus/[id]/packaging/route.ts
  • src/app/api/products/[id]/packaging/route.ts

记住:

  • Route 只做入口
  • 不要把复杂转换逻辑堆在 Route 里

第 4 步:最后改页面

优先改:

  • DraftGroupDetailClient.tsx
  • PackagingEditor.tsx

页面层这次最重要的是:

  • 能切准 SKU
  • 能各自保存
  • 能录包装材料和规格
  • 能看见工艺图组合预留位

10. 改完后你怎么自己验证

请按这个顺序来。

第 1 步:先跑类型检查

npm run type-check

第 2 步:跑你改到的测试

例如:

npm test -- src/server/services/__tests__/draft-group.service.test.ts
npm test -- src/app/api/products/[id]/packaging/route.test.ts

如果你新增了测试,也一起跑。

第 3 步:手工验证新平台主入口

打开:

  • 当前开发地址的 /draft-groups

然后做下面这些动作:

  1. 进入一条有准 SKU 的草稿组
  2. 选中准 SKU A
  3. 改包装结果并保存
  4. 切到准 SKU B
  5. 确认 A 的数据没有串到 B
  6. 给 B 也保存一套不同的包装结果
  7. 刷新页面
  8. 再进来确认 A 和 B 各自的数据还在
  9. 看工艺图组合预留位是否还在

第 4 步:验证正式入库承接

打开:

  • 当前开发地址的 /intake

确认:

  • 你保存过的包装结果,后面流程还能继续承接

第 5 步:回头看旧产品详情页

打开任意旧产品详情页,确认:

  1. 包装方案页还能打开
  2. 旧数据不会直接报错
  3. 旧链基本交互没坏

11. 常见问题怎么处理

情况 1:数据库连不上

报错类似:

  • Can't reach database server at 127.0.0.1:5432

先执行:

docker-compose -f docker-compose.dev.yml up -d

情况 2:改了 Prisma 但页面还是报字段错误

执行:

npm run prisma:generate
npm run prisma:push

这里的 npm run prisma:push 仍然只用于本地开发库;如果你面对的是服务器、生产库或准生产库,停下来改用迁移流程,不要直接推 schema。

然后重启 npm run dev。

情况 3:页面没变化

按顺序做:

  1. 刷新浏览器
  2. 重启 npm run dev
  3. 删除 .next 后再重启

情况 4:你本地根本没有草稿组数据

先试:

npm run demo:setup

如果还没有,就找主线同事要一条现成的草稿组数据,不要自己硬猜。

情况 5:你不知道当前开发地址是什么

不要死记 http://localhost:<端口>。

正确做法是:

  • 以 npm run dev 启动后的终端输出为准
  • 如果 Codex 已经帮你启动了服务,就看它回报的地址

12. 交付前请逐条打勾

  • 我这次主改的是 草稿组 -> 准 SKU 包装结果
  • 我没有把旧产品详情页包装能力改坏
  • 我没有碰自动组合主链
  • 我没有碰 CAD 导入主链
  • 我没有碰仓库主链
  • 我跑了 npm run type-check
  • 我跑了我改到的测试
  • 我自己手工验证了准 SKU A / B 分开保存
  • 我看过正式入库承接有没有坏
  • 我给工艺图组合留了位置或接口

13. 交付时怎么说

不要只发一句「改好了」。

请直接照下面这个模板回报:

这次我只处理了新平台包装子工作区增强、旧包装链兼容、工艺图组合预留,
没有碰自动组合主链、仓库主链、CAD 导入主链。

已修改:
- 列出你实际改过的文件

本次结果:
- 包装结果已按 PreSku 独立保存
- 箱内项已升级为 items
- 包装材料 / 规格选择可保存
- 工艺图组合已预留位置
- 旧产品详情页包装能力仍可打开

验证:
- 写你实际跑过的命令
- 写你做过的手工验证

未处理:
- 写你明确没做的内容

这是自审,不是独立复审。
规范审查结论:passed / passed with warnings / rejected

14. 最后一句提醒

你这次不是在修一个旧页面。

你这次是在帮新平台把包装这条链真正接上,同时保证旧链不掉。