R33-1 R33-3: 收口采购资产差旅事务超时

这个提交包含在:
2026-03-24 20:27:11 +08:00
父节点 1056c81940
当前提交 48f3909be3
共修改 8 个文件,包含 432 行新增和 147 行删除
+25 -21
查看文件
@@ -703,13 +703,12 @@ async function createTravelRequestsRoutes(fastify) {
min: 0,
});
const segments = normalizeSegments(body.segments);
await ensureFinancialDimensions(fastify.prisma, {
legalEntityId: body.legalEntityId,
costCenterId: body.costCenterId,
});
const created = await fastify.prisma.$transaction(async (tx) => {
await ensureFinancialDimensions(tx, {
legalEntityId: body.legalEntityId,
costCenterId: body.costCenterId,
});
const travelRequest = await tx.travelRequest.create({
data: {
applicant_employee_id: request.employee.id,
@@ -741,25 +740,30 @@ async function createTravelRequestsRoutes(fastify) {
select: TRAVEL_DETAIL_SELECT,
});
await tx.auditLog.create({
data: buildAuditLogData(request, {
actorId: request.employee.id,
action: "TRAVEL_REQUEST_CREATED",
targetType: "travel_request",
targetId: travelRequest.id,
extra: {
tripType: travelRequest.trip_type,
startDate: toIsoDate(travelRequest.start_date),
endDate: toIsoDate(travelRequest.end_date),
estimatedAmount: moneyToFixed(travelRequest.estimated_amount),
segmentCount: travelRequest.segments.length,
},
}),
});
return travelRequest;
});
void fastify.prisma.auditLog.create({
data: buildAuditLogData(request, {
actorId: request.employee.id,
action: "TRAVEL_REQUEST_CREATED",
targetType: "travel_request",
targetId: created.id,
extra: {
tripType: created.trip_type,
startDate: toIsoDate(created.start_date),
endDate: toIsoDate(created.end_date),
estimatedAmount: moneyToFixed(created.estimated_amount),
segmentCount: created.segments.length,
},
}),
}).catch((error) => {
fastify.log.error(
{ err: error, travelRequestId: created.id },
"Failed to write travel request create audit log",
);
});
return sendData(reply, request, mapTravelRequestDetail(created, request));
},
);