包含: - furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画) - autocad-plugin:AutoCAD 家具导出插件源码 - 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
P0 问题修复进度报告
日期:2026-04-01
已完成
✅ P0-1: 入库时生成板件/孔位/五金数据
文件:src/server/services/intake.service.ts
修改内容:
-
新增
createPanelsFromVariantSelection()函数- 从 PreSku.variantSelection.slots 生成 Panel
- 只处理 assetType === 'BOARD' 的规格款
- 保留 assemblyBasis 到 assemblySemantic 字段
-
新增
createHolesFromMountPoints()函数- 从 slot.mountPoints 生成 Hole
- 自动设置孔位坐标、直径、深度
-
新增
createHardwareFromSelections()函数- 从 variantSelection.hardwareSelections 创建 ProductHardware
- 保存规格款信息到 specifications 字段
-
在 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:数据库层软删除(彻底,但需要迁移)
- 先执行
prisma migrate reset重置数据库(会丢失数据) - 或手动同步数据库到当前 schema
- 然后添加 deletedAt 字段到 Panel/Hole/AssemblyStep/ProductHardware
- 创建迁移
推荐:先用方案 1 快速解决问题,后续有时间再做方案 2。
下一步
- 测试入库功能,验证板件/孔位/五金是否正确生成
- 决定软删除方案(应用层 vs 数据库层)
- 继续 P1 优化(包装方案迁移、N+1 查询优化等)