包含: - furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画) - autocad-plugin:AutoCAD 家具导出插件源码 - 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
业务流程与架构稳定性修复总结
日期:2026-04-01
核心问题
新链路(资产中心→自动组合→草稿组→入库)没有充分复用老链路(板件/孔位/五金/装配)的成熟能力,导致业务流程断点。
已完成修复
✅ P0-1: 入库时生成板件/孔位/五金数据
文件:src/server/services/intake.service.ts
修改:
- 新增
createPanelsFromVariantSelection()- 从 variantSelection.slots 生成 Panel - 新增
createHolesFromMountPoints()- 从 mountPoints 生成 Hole - 新增
createHardwareFromSelections()- 从 hardwareSelections 创建 ProductHardware - 在 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: 软删除级联
问题:数据库存在漂移,需要先同步
建议方案:
- 应用层软删除(推荐)- 在 service 层手动级联
- 数据库层软删除 - 需要先解决数据库漂移
修复效果总结
核心断点已打通
- ✅ 入库时自动生成板件/孔位/五金
- ✅ 包装方案完整保留
- ✅ 事务保证数据一致性
- ✅ 新老链路功能互通
业务流程完整性
修复前:
新链路入库 → 只有 Product/SKU → 无法使用装配编辑器 ❌
修复后:
新链路入库 → Product/SKU + Panel/Hole/Hardware + PackagingPlan → 可使用所有功能 ✅
代码质量
- ✅ Lint 检查通过
- ✅ 语法检查通过
- ✅ 遵循项目架构规范
- ✅ 复用老链路能力
后续建议
短期
- 测试入库功能,验证板件/孔位/五金生成
- 解决数据库漂移问题
- 实施软删除级联
长期
- 缓存层建设
- 并发控制(乐观锁)
- 状态机完善
- 大对象存储优化