修复资产 E2E 数据库漂移(05-31-fix-assets-e2e-schema-drift)

这个提交包含在:
2026-05-31 09:47:52 +08:00
父节点 f299ceeb74
当前提交 dafd2eb275
共修改 8 个文件,包含 261 行新增和 7 行删除
@@ -0,0 +1,77 @@
# 修复资产真实 E2E 数据库结构漂移
## Goal
查清并修复真实资产 E2E 被本地数据库结构漂移阻塞的问题,让资产流程可以在本地真实 API/数据库环境完成回归验证。修复必须遵守当前业务边界:hyb-oa 没有 ERP,资产管理按 OA 台账处理,不引入新的业务功能。
## What I Already Know
- 上轮资产一致性改造已提交:`f299cee 修正 ERP 边界与资产页面一致性(05-30-fix-erp-boundary-asset-consistency)`。
- Mock 浏览器检查已验证资产页面无 ERP 文案、右侧操作区、中文姓名和员工号展示。
- 真实 `assets-flow.spec.ts` 受本地数据库结构漂移阻塞,已记录缺列包括:
- `asset_cards.asset_type`
- `purchase_requests.project_id`
- 不能擅自执行数据库重置、生产迁移或真实数据写入。
- 用户已确认系统没有 ERP,以后也不会有 ERP。
## Assumptions
- 本轮优先处理本地/测试环境验证阻塞,不扩大到公网部署。
- 如果需要修改数据库结构,先通过只读排查确认迁移状态,再使用项目已有迁移机制;不使用破坏性 reset。
- 如果问题只是本地库落后于迁移,优先给出清晰、安全的本地补齐路径。
## Scope
- 本地回归数据库 `hyb_oa_regression` 与 Prisma 迁移目录的一致性排查和修复。
- 资产真实 E2E 主链路 `assets-flow.spec.ts` 的执行恢复。
- 如资产页面改造导致 E2E 断言落后,仅更新测试断言以匹配当前已确认页面规则。
- 如本地服务启动流程阻塞 E2E,修复不改变业务行为的启动加载问题。
- 记录本轮数据库结构漂移原因、修复方式和验证结果。
## Requirements
- 排查 Prisma schema、迁移目录、本地数据库实际结构与 E2E 测试准备逻辑之间的差异。
- 找出 `asset_cards.asset_type`、`purchase_requests.project_id` 等缺列的来源:迁移未应用、迁移缺失、测试数据准备假设错误,或代码/数据库版本不一致。
- 修复应尽量使用已有迁移、seed、测试准备脚本和项目约定。
- 不引入 ERP 文案、ERP 字段、ERP 同步入口或未来 ERP 接入口径。
- 不改变资产页面当前已确定的信息架构和交互规则,除非真实 E2E 揭示必要缺陷。
## Test Plan
- `cd server && npx prisma migrate status`
- `cd server && npx prisma migrate deploy`(仅在用户确认后对本地回归库执行)
- `cd server && npm run seed:dev-users`
- `cd server && npm run prisma:validate`
- `cd server && node --check src/index.js`
- `bash scripts/qa/check-local-migration-drift.sh`
- `cd client && npm run build`
- `cd client && E2E_BASE_URL=http://127.0.0.1:3000 npx playwright test tests/e2e/assets-flow.spec.ts --workers=1 --reporter=list`
- `python3 ./.trellis/scripts/task.py validate 05-31-fix-assets-e2e-schema-drift`
- `node scripts/qa/check-trellis-governance.mjs`
- `git diff --check`
## Acceptance Criteria
- [x] 明确记录数据库结构漂移的根因和处理方式。
- [x] `assets-flow.spec.ts` 能进入并完成资产流程验证;如仍被外部环境阻塞,需记录新的具体阻塞点。
- [x] 相关本地验证通过:前端必要检查、后端 Prisma 校验、Trellis 校验、`git diff --check`。
- [x] 如产生稳定经验,更新对应 spec 或任务实施说明。
- [ ] 所有变更以中文 commit 提交,commit message 包含本任务名。
## Out of Scope
- 不做公网部署。
- 不改生产数据库。
- 不做数据库破坏性重置。
- 不重新设计资产页面、报销页面、付款页面等 UI。
- 不新增 ERP、考勤、请假等业务能力。
## Technical Notes
- 相关文件预计包括:
- `server/prisma/schema.prisma`
- `server/prisma/migrations/`
- `client/tests/e2e/assets-flow.spec.ts`
- `server/src/scripts/seed-dev.js`
- `.trellis/tasks/05-30-fix-erp-boundary-asset-consistency/implement.md`
- 先只读运行迁移状态和 schema 检查;需要写库的命令单独确认风险后执行。