221 lines
4.9 KiB
Markdown
221 lines
4.9 KiB
Markdown
# AgentPark n8n Dataflow
|
||
|
||
这份文档回答两个问题:
|
||
|
||
1. 这 8 条生产流程分别负责什么。
|
||
2. 数据怎样从外部源头进入 AgentPark,再进入数据库、API 和页面展示。
|
||
|
||
## 范围
|
||
|
||
当前纳入范围的 8 条生产流程:
|
||
|
||
1. `Topic项目计划新增`
|
||
2. `每日Github Trending项目计划新增`
|
||
3. `项目分析入库(多源)`
|
||
4. `GitHub Star 每日刷新`
|
||
5. `项目描述向量化`
|
||
6. `RAG项目搜索`
|
||
7. `前沿信号聚合(多源+AI Agent过滤)`
|
||
8. `项目标签重置`
|
||
|
||
不在这 8 条内,但已登记在仓库上下文中的旁路流程:
|
||
|
||
- `AI对话网关(Agent Park)`
|
||
|
||
## 系统边界
|
||
|
||
当前体系不是“单仓库闭环”,而是三层:
|
||
|
||
- 外部数据源层:GitHub Search API、GitHub Trending、Hacker News、Reddit、arXiv、Product Hunt、Hugging Face
|
||
- n8n 编排层:抓取、去重、AI 过滤、标签重置、向量化、信号结构化
|
||
- AgentPark 应用层:Postgres/Prisma、Next.js API、页面组件
|
||
|
||
还有一个明确存在但当前仓库里没有实现代码的外部服务边界:
|
||
|
||
- `Discovery Task Service`
|
||
- `GET/POST/PATCH /api/discovery/tasks`
|
||
- `POST /api/discovery/check-duplicates`
|
||
|
||
## 核心实体
|
||
|
||
- `projects`
|
||
- `external_links`
|
||
- `tags`
|
||
- `project_tags`
|
||
- `signals`
|
||
- `projects.embedding`
|
||
|
||
## 总流图
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
subgraph Sources["External Sources"]
|
||
GHSearch["GitHub Search API"]
|
||
GHTrend["GitHub Trending"]
|
||
GHRepo["GitHub Repository API"]
|
||
HN["Hacker News"]
|
||
Reddit["Reddit"]
|
||
Arxiv["arXiv"]
|
||
PH["Product Hunt"]
|
||
HF["Hugging Face"]
|
||
Silicon["SiliconFlow Embeddings"]
|
||
end
|
||
|
||
subgraph N8N["n8n Workflows"]
|
||
W1["1 Topic项目计划新增"]
|
||
W2["2 每日Github Trending项目计划新增"]
|
||
W3["3 项目分析入库(多源)"]
|
||
W4["4 GitHub Star 每日刷新"]
|
||
W5["5 项目描述向量化"]
|
||
W6["6 RAG项目搜索"]
|
||
W7["7 前沿信号聚合"]
|
||
W8["8 项目标签重置"]
|
||
end
|
||
|
||
subgraph Discovery["External Discovery Service"]
|
||
Dedupe["/api/discovery/check-duplicates"]
|
||
Tasks["/api/discovery/tasks"]
|
||
Complete["/api/discovery/tasks/:id/complete"]
|
||
end
|
||
|
||
subgraph App["AgentPark App + DB"]
|
||
DBProjects["projects"]
|
||
DBLinks["external_links"]
|
||
DBTags["tags / project_tags"]
|
||
DBSignals["signals"]
|
||
APIProjects["/api/projects"]
|
||
APISearch["/api/search/ai"]
|
||
APISignals["/api/signals"]
|
||
APITagReset["/api/tags/reset-projects"]
|
||
UIProjects["Projects pages"]
|
||
UISignals["Signals page"]
|
||
UIHome["Home rankings"]
|
||
end
|
||
|
||
GHSearch --> W1
|
||
GHTrend --> W2
|
||
W1 --> Dedupe
|
||
W2 --> Dedupe
|
||
Dedupe --> Tasks
|
||
Tasks --> W3
|
||
W3 --> Complete
|
||
Complete --> DBProjects
|
||
Complete --> DBLinks
|
||
Complete --> DBTags
|
||
|
||
DBProjects --> W5
|
||
Silicon --> W5
|
||
W5 --> DBProjects
|
||
|
||
DBProjects --> W6
|
||
Silicon --> W6
|
||
W6 --> APISearch
|
||
APISearch --> UIProjects
|
||
|
||
DBProjects --> W4
|
||
DBLinks --> W4
|
||
GHRepo --> W4
|
||
W4 --> DBProjects
|
||
DBProjects --> UIHome
|
||
DBProjects --> UIProjects
|
||
|
||
HN --> W7
|
||
Reddit --> W7
|
||
Arxiv --> W7
|
||
PH --> W7
|
||
HF --> W7
|
||
W7 --> DBSignals
|
||
W7 --> Dedupe
|
||
DBSignals --> APISignals
|
||
APISignals --> UISignals
|
||
|
||
DBTags --> W8
|
||
DBProjects --> W8
|
||
W8 --> APITagReset
|
||
APITagReset --> DBTags
|
||
APITagReset --> UIProjects
|
||
```
|
||
|
||
## 主链路拆解
|
||
|
||
### 1. 项目发现链路
|
||
|
||
- `Topic项目计划新增`
|
||
- `每日Github Trending项目计划新增`
|
||
|
||
职责:
|
||
|
||
- 从 GitHub 搜索结果和 Trending 列表中找候选项目
|
||
- 先走 discovery 去重
|
||
- 再用 LLM 做保留/丢弃判断
|
||
- 最后把可入库项目写进 discovery 任务队列
|
||
|
||
### 2. 项目入库链路
|
||
|
||
- `项目分析入库(多源)`
|
||
|
||
职责:
|
||
|
||
- 轮询 discovery 任务队列
|
||
- 任务置为 `IN_PROGRESS`
|
||
- 浏览器/AI 收集事实
|
||
- 生成标准化项目内容、外链、标签候选
|
||
- 调用 completion 接口完成入库
|
||
- 失败时置为 `FAILED`
|
||
|
||
### 3. 项目检索链路
|
||
|
||
- `项目描述向量化`
|
||
- `RAG项目搜索`
|
||
|
||
职责:
|
||
|
||
- 生成并更新 `projects.embedding`
|
||
- 通过 webhook 对用户查询生成向量
|
||
- 在 Postgres 中进行向量相似度搜索
|
||
- 返回项目 ID 与相似度
|
||
|
||
### 4. Signals 展示链路
|
||
|
||
- `前沿信号聚合(多源+AI Agent过滤)`
|
||
|
||
职责:
|
||
|
||
- 从 6 类外部源抓取内容
|
||
- 规则过滤、去重、AI 结构化
|
||
- 写入 `signals`
|
||
- 从保留信号中提取 GitHub 仓库,回流 discovery
|
||
|
||
### 5. 标签治理链路
|
||
|
||
- `项目标签重置`
|
||
|
||
职责:
|
||
|
||
- 拉取标签池和项目列表
|
||
- 按 5 类标签做归类
|
||
- 调用标签重置接口更新项目标签
|
||
|
||
### 6. Star 刷新链路
|
||
|
||
- `GitHub Star 每日刷新`
|
||
|
||
职责:
|
||
|
||
- 读取项目 GitHub 链接
|
||
- 调 GitHub API 获取仓库信息
|
||
- 更新 `githubStars` 与 `githubStarsUpdatedAt`
|
||
|
||
## 当前“就绪状态”定义
|
||
|
||
现在仓库已经具备:
|
||
|
||
- 8 条生产流程的仓库内登记
|
||
- 代码触点与 workflow 的映射关系
|
||
- 从“源头 -> n8n -> DB/API -> 页面”的主链路图
|
||
|
||
仍然不在当前仓库闭环的内容:
|
||
|
||
- discovery task service
|
||
- n8n credentials / secrets / runtime env
|