From 85ca663e5bbb009cd25b21f6e77d35f44891ef3d Mon Sep 17 00:00:00 2001 From: Color2333 <1552429809@qq.com> Date: Sat, 10 Oct 2026 01:07:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(worker):=20import=5Freferences=20=E5=89=8D?= =?UTF-8?q?=E7=BD=AE=E6=A0=A1=E9=AA=8C=EF=BC=88=E6=BA=90=E8=AE=BA=E6=96=87?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E6=80=A7+entries=20=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=EF=BC=89=E2=80=94=E2=80=94=E5=BF=AB=E5=A4=B1=E8=B4=A5=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E6=AD=BB=E4=BF=A1=E5=99=AA=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/handlers_ingest.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/handlers_ingest.go b/core/handlers_ingest.go index aeef1f3..cf0e4dc 100644 --- a/core/handlers_ingest.go +++ b/core/handlers_ingest.go @@ -288,6 +288,15 @@ func HandleImportReferences(ctx context.Context, env *HandlerEnv, task *Task) (m if sourcePaperID == "" { return nil, errors.New("缺少 source_paper_id") } + // 前置校验:源论文必须存在 + entries 非空(空批次在 apply 层会被拒—— + // 任务层重试到 dead_letter 只是噪音,快失败更干净) + var exists string + if err := env.Store.DB.QueryRow(`SELECT id FROM papers WHERE id=$1`, sourcePaperID).Scan(&exists); err != nil { + return nil, fmt.Errorf("源论文 %s 不存在", sourcePaperID) + } + if len(entries) == 0 { + return nil, errors.New("entries 为空——无参考文献可导入") + } var arxivEntries, ssEntries []map[string]any for _, e := range entries {