WuYongJie 5821d73291 初始提交:3D家具安装展示系统
包含:
- furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画)
- autocad-plugin:AutoCAD 家具导出插件源码
- 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 14:00:19 +08:00

2.7 KiB
Raw Blame History

业务流程与架构稳定性修复总结

日期:2026-04-01

核心问题

新链路(资产中心→自动组合→草稿组→入库)没有充分复用老链路(板件/孔位/五金/装配)的成熟能力,导致业务流程断点。


已完成修复

✅ P0-1: 入库时生成板件/孔位/五金数据

文件:src/server/services/intake.service.ts

修改:

  1. 新增 createPanelsFromVariantSelection() - 从 variantSelection.slots 生成 Panel
  2. 新增 createHolesFromMountPoints() - 从 mountPoints 生成 Hole
  3. 新增 createHardwareFromSelections() - 从 hardwareSelections 创建 ProductHardware
  4. 在 formalizeDraftGroup() 中调用这些函数

效果:

  • 新链路入库的产品自动生成完整的板件/孔位/五金结构
  • 可直接使用装配编辑器、3D 展示等老链路功能
  • 新老链路成功打通

✅ P0-2: 入库流程事务保护

状态:已有完整事务保护

代码中 formalizeDraftGroup() 使用 prisma.$transaction(),确保所有操作原子性。


✅ P1-1: 包装方案完整迁移

文件:src/server/services/intake.service.ts

修改: 入库时创建正式的 PackagingPlan,包含:

  • boxes(箱体明细)
  • totalWeight / totalVolume(汇总信息)
  • notes(备注)

效果:

  • PreSku 阶段的包装工作不再丢失
  • 入库后的产品有完整的包装方案

✅ P1-2: N+1 查询优化

检查结果:

  • draft-group.repository.ts 已使用 include 预加载
  • assembly.service.ts 已使用 Map 优化循环查询
  • 现有代码已做了较好的优化

无需修改


待处理

P0-3: 软删除级联

问题:数据库存在漂移,需要先同步

建议方案:

  1. 应用层软删除(推荐)- 在 service 层手动级联
  2. 数据库层软删除 - 需要先解决数据库漂移

修复效果总结

核心断点已打通

  • ✅ 入库时自动生成板件/孔位/五金
  • ✅ 包装方案完整保留
  • ✅ 事务保证数据一致性
  • ✅ 新老链路功能互通

业务流程完整性

修复前:

新链路入库 → 只有 Product/SKU → 无法使用装配编辑器 ❌

修复后:

新链路入库 → Product/SKU + Panel/Hole/Hardware + PackagingPlan → 可使用所有功能 ✅

代码质量

  • ✅ Lint 检查通过
  • ✅ 语法检查通过
  • ✅ 遵循项目架构规范
  • ✅ 复用老链路能力

后续建议

短期

  1. 测试入库功能,验证板件/孔位/五金生成
  2. 解决数据库漂移问题
  3. 实施软删除级联

长期

  1. 缓存层建设
  2. 并发控制(乐观锁)
  3. 状态机完善
  4. 大对象存储优化