feat: 添加项目发现去重检查 API

新增去重检查功能,避免创建重复的探索任务:

API 端点:POST /api/discovery/check-duplicates

功能特性:
- 检查 URL 是否已存在 PENDING/IN_PROGRESS 任务
- 检查 URL 是否已存在 COMPLETED/FAILED 任务
- 检查 URL 对应的项目是否已通过 ExternalLink 收录
- 返回每条 URL 的 shouldCreate 判断和建议原因

新增文件:
- src/app/api/discovery/check-duplicates/route.ts: 去重检查逻辑
- src/lib/validations.ts: CheckTaskDuplicatesSchema

文档更新:
- docs/discovery-workflow.md: 添加步骤 2.5 去重检查文档
  - API 调用示例
  - 返回结果说明
  - 去重逻辑优先级
  - n8n 集成建议
This commit is contained in:
2026-01-18 17:44:29 +08:00
parent 18d96911b3
commit d5bf20bbf3
3 changed files with 371 additions and 4 deletions
+9
View File
@@ -91,6 +91,15 @@ export const GetDiscoveryTasksQuerySchema = z.object({
offset: z.coerce.number().int().nonnegative().default(0),
})
/**
* 检查任务去重 Schema
* 用于在创建任务前检查 URL 是否已存在
*/
export const CheckTaskDuplicatesSchema = WebhookAuthSchema.extend({
urls: z.array(z.string().url().max(2000)).min(1).max(100),
sourceType: z.string().max(50).optional(),
})
// ================================
// Query Schemas
// ================================