采购提交与报销新建/提交事务显式使用10秒上限 [09-27-purchase-submit-tx-timeout]

负载下采购提交事务超过 Prisma 交互事务默认 5000ms(P2028)返回 500。
分段计时显示无单一瓶颈(总时长中位 843ms、最大 3506ms,编号锁等待
最多 535ms),是约 20 条顺序查询整体变慢贴近上限。报销新建/提交同结构。
三处改用项目既有的 { maxWait: 5000, timeout: 10000 },事务内容不变;
新增采购与报销提交的事务选项回归断言。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
这个提交包含在:
2026-09-27 12:27:04 +08:00
共同撰写人 Claude Opus 5.5
父节点 a6ff2dc3b1
当前提交 b6f0c83608
共修改 9 个文件,包含 92 行新增和 4 行删除
@@ -0,0 +1,33 @@
{
"id": "purchase-submit-tx-timeout",
"name": "purchase-submit-tx-timeout",
"title": "采购提交事务负载下超时返回500",
"description": "负载复现中采购提交交互事务超过Prisma默认5000ms(P2028)返回500;生产b1d25d3c起同写法。查清耗时构成(锁等待/事务内查询),给出最小修复。",
"status": "planning",
"dev_type": null,
"scope": "transaction-timeout",
"package": null,
"priority": "P2",
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-09-27",
"completedAt": null,
"branch": null,
"base_branch": "main",
"worktree_path": null,
"commit": null,
"pr_url": null,
"subtasks": [],
"children": [],
"parent": null,
"relatedFiles": [
"server/src/routes/purchaseRequests.js",
"server/src/routes/reimbursements.js",
"server/tests/unit/routes/purchase.submit-budget-precheck.test.js",
"server/tests/unit/routes/reimbursements.expense-standards.test.js"
],
"notes": "",
"meta": {
"implementationApproval": "APPROVED_BY_USER_20260927"
}
}