文件
hyb-oa/.trellis/tasks/05-31-fix-assets-e2e-schema-drift/prd.md
T

3.9 KiB
原始文件 Blame 文件历史

修复资产真实 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

  • 明确记录数据库结构漂移的根因和处理方式。
  • assets-flow.spec.ts 能进入并完成资产流程验证;如仍被外部环境阻塞,需记录新的具体阻塞点。
  • 相关本地验证通过:前端必要检查、后端 Prisma 校验、Trellis 校验、git diff --check。
  • 如产生稳定经验,更新对应 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 检查;需要写库的命令单独确认风险后执行。