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.2 KiB
Raw Blame History

P0 问题修复进度报告

日期:2026-04-01

已完成

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

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

修改内容:

  1. 新增 createPanelsFromVariantSelection() 函数

    • 从 PreSku.variantSelection.slots 生成 Panel
    • 只处理 assetType === 'BOARD' 的规格款
    • 保留 assemblyBasis 到 assemblySemantic 字段
  2. 新增 createHolesFromMountPoints() 函数

    • 从 slot.mountPoints 生成 Hole
    • 自动设置孔位坐标、直径、深度
  3. 新增 createHardwareFromSelections() 函数

    • 从 variantSelection.hardwareSelections 创建 ProductHardware
    • 保存规格款信息到 specifications 字段
  4. 在 formalizeDraftGroup() 中调用这些函数

效果:

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

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

状态:已有事务保护

代码中 formalizeDraftGroup() 方法已使用 prisma.$transaction(),确保:

  • Product/SKU 创建
  • Panel/Hole/Hardware 创建
  • PackagedItem 创建
  • PreSku/DraftGroup 状态更新

全部成功或全部回滚。


待处理

⚠️ P0-3: 软删除级联处理

问题:

  • 数据库存在漂移(drift detected)
  • 直接修改 Prisma schema 和创建迁移风险较大
  • 需要先解决数据库同步问题

建议方案:

方案 1:应用层软删除(推荐,风险低)

  • 在 product.service.ts 删除产品时,手动级联设置关联数据状态
  • 查询时统一过滤已删除数据
  • 不修改数据库结构

方案 2:数据库层软删除(彻底,但需要迁移)

  1. 先执行 prisma migrate reset 重置数据库(会丢失数据)
  2. 或手动同步数据库到当前 schema
  3. 然后添加 deletedAt 字段到 Panel/Hole/AssemblyStep/ProductHardware
  4. 创建迁移

推荐:先用方案 1 快速解决问题,后续有时间再做方案 2。


下一步

  1. 测试入库功能,验证板件/孔位/五金是否正确生成
  2. 决定软删除方案(应用层 vs 数据库层)
  3. 继续 P1 优化(包装方案迁移、N+1 查询优化等)