Skip to content

Commit 8ade968

Browse files
feat(leaderboard): 脚本改走后端 /api/public/leaderboard,断 prisma 直连 DB
依赖:backend PR InvolutionHell/involutionhell-backend#22 必须先合并 + 部署。 背景 generate-leaderboard.mjs 之前 prisma 直连 Postgres 5432,逼着 DB 端口对公网开放 (且服务端没开 SSL)。本周 Vercel preview build 因为 DATABASE_URL 凭证失效全军覆没。 方案 B:DB 收回内网,脚本走后端 endpoint。 改动 scripts/generate-leaderboard.mjs: - 删 prisma client + pg.Pool 直连,换成 fetch ${BACKEND_URL}/api/public/leaderboard (兼容 LEADERBOARD_API_URL 完整覆盖;都没配则走 https://api.involutionhell.com) - 后端不可达时降级写空数组放行 build (不挂整个 deploy) - 保留所有本地处理逻辑:.source/index.ts → docId→title/url 映射、git log noreply 反推 login、前 100 名 GitHub API 兜底 - 后端响应兼容 ApiResponse 包装和裸数组两种结构 lib/db.ts: - 删除(早就是死代码:grep 验证 0 引用,frontend runtime 不直连 DB) docs/architecture/frontend-backend-separation.md: - 在"文档贡献数据源"小节下补迁移记录 + 环境变量说明 后续清理(不在本 PR) - frontend Vercel env 删 DATABASE_URL(preview/production 都删) - 服务器执行 docker compose up -d postgres 让 5432 收回 127.0.0.1 - Oracle Cloud 安全组关 5432 入站
1 parent 5c71a81 commit 8ade968

3 files changed

Lines changed: 184 additions & 173 deletions

File tree

docs/architecture/frontend-backend-separation.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,28 @@ Next 渲染 HTML + Bento Grid + ProfileCard 组件
191191

192192
理由:贡献数据每次 deploy 才变,不需要实时。真要实时化再迁 Java。
193193

194+
#### 数据来源迁移记录(2026-04-26)
195+
196+
`generate-leaderboard.mjs` 之前 prisma 直连 Postgres 5432 拉 `doc_contributors`
197+
逼着 DB 端口对公网开放。Vercel preview 凭证一断 build 全军覆没。
198+
199+
现已改走后端 **`GET /api/public/leaderboard`**(backend PR #22):
200+
201+
- 后端 `LeaderboardService` 做全表聚合(githubId × contributions × docIds × dailyCounts)
202+
- Caffeine 缓存 10min,build 高频跑也不打 DB
203+
- 脚本侧拿到聚合数据后,本地 `.source/index.ts` 解析 docId→title/url,git log noreply 反推 login,前 100 名 GitHub API 兜底(这套逻辑没变)
204+
- 后端不可达时脚本写空数组放行 build(不挂整个 deploy)
205+
206+
环境变量:
207+
208+
- `LEADERBOARD_API_URL`(可选):完整 URL 覆盖
209+
- `BACKEND_URL`(推荐):拼 `${BACKEND_URL}/api/public/leaderboard`
210+
- 都没配则兜底 `https://api.involutionhell.com/api/public/leaderboard`
211+
212+
副作用:`lib/db.ts`(PrismaClient 单例)已删——前端 runtime 早就不直连 DB 了,
213+
只剩 `scripts/backfill-contributors.mjs` 等手动维护脚本还引用 `generated/prisma`
214+
那些是开发者本地按需跑的,不在 Vercel build 链里。
215+
194216
---
195217

196218
## V2 待办

lib/db.ts

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)