diff --git a/apps/server/src/modules/acquisition-organize/services/acquisition.ts b/apps/server/src/modules/acquisition-organize/services/acquisition.ts index d215091e..7688565b 100644 --- a/apps/server/src/modules/acquisition-organize/services/acquisition.ts +++ b/apps/server/src/modules/acquisition-organize/services/acquisition.ts @@ -580,6 +580,14 @@ async function evaluateRelease(c: Ctx, rel: SourceReleaseRow, eventUnits: readon .executeTakeFirst(); if (!grant) return skip("no_automation_grant"); await db.transaction().execute(async (trx) => { + // 同一作品的几条资源并发评估时只建一个新作品订阅(否则后建的订阅收录版本同名冲突,被补建成默认版本) + await sql`select pg_advisory_xact_lock(hashtextextended(${`new_title:${entity.id}`}, 0))`.execute(trx); + const exists = await trx + .selectFrom("subscription") + .select("id") + .where("media_entity_id", "=", entity.id) + .executeTakeFirst(); + if (exists) return; const sub = await trx .insertInto("subscription") .values({