包含: - furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画) - autocad-plugin:AutoCAD 家具导出插件源码 - 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
title, date, module, problem_type, severity, symptoms, root_cause, resolution_type, status, confidence, tags, related_patterns
| title | date | module | problem_type | severity | symptoms | root_cause | resolution_type | status | confidence | tags | related_patterns | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Controller 过载拆分与批处理事务收口 | 2026-02-15 | api/products/upload + api/users/[id]/handover + auth/share/panel services | workflow_issue | high |
|
Controller 与 Service 职责未按分层规范收口,数据访问逻辑散落在业务层 | code_fix | active | high |
|
|
1) 现象与影响
/api/products/upload既做鉴权又做文件转换、上传、解析与事务写入,Route 过载。/api/users/[id]/handover在 Route 内执行多段查询、循环更新、日志落库,难以维护且不利于并发稳定性。auth/share/panel的 Service 存在直连 Prisma,导致分层审计无法闭环。
2) 排查路径
- 先定位台账中同类问题(ARCH-009/013/015/017/DB-004)。
- 用
type-check兜底验证改造后类型边界。 - 用认证和安全回归测试确认关键链路未回归。
3) 根因分析
- Route 层未被限制为“参数+鉴权+统一返回”,业务编排和数据细节长期堆积。
- Service 缺少配套 Repository 原子方法,导致为求开发速度直接写 Prisma。
- 交接链路追求“全成功事务”,把多项循环更新捆成单大事务,放大锁持有时间。
4) 最终修复
- 上传链路:新增
product-upload.service + product-upload.repository,Route 仅保留入口职责。 - 离职交接:新增
user-handover.service + handover.repository,采用分批提交与短事务策略。 - 认证/分享/板件:新增或扩展
auth/share/panelRepository 原子方法,Service 仅做权限和编排。 - 产品服务:将软删/恢复/CAD 创建事务下沉到
product.repository,减少业务层数据细节泄漏。
5) 预防策略
- 新增 API 一律先定义 Service/Repository 边界,再写 Route。
- 对“循环更新 + 事务”场景默认评估分批策略,避免单长事务。
- 复核清单加入“Service 是否仍引用 Prisma”自动检索项。