主题
Supabase 后端子项目
Lampio(RB)与 RVH 共用的 Supabase 后端:Edge Functions + 可执行 SQL(表结构 / RLS / 定时任务 / 种子)。 本 README 是导航索引——细节以各权威源为准,不在此重复。
- project-ref:
jdtbyteiwnciqnfppztz(public by design) - 算法/数据流:
docs/recommendation-algorithm.md - 表结构 + 同步映射:
docs/database-schema.md - 跨端协议(RB/RVH/Supabase):
../CLAUDE.md§9 - 部署流程 + Secret 依赖矩阵(权威):
.claude/skills/edge-deploy/SKILL.md
目录结构
supabase/
├── functions/ # Edge Functions(git 跟踪)
├── sql/ # 可执行 SQL,手动在 Dashboard → SQL Editor 跑(git 跟踪)
├── config.toml # CLI 脚手架,gitignore(部署靠 --project-ref,不依赖它)
└── seed.sql # 同上,gitignoreEdge Functions
| Function | 用途 | Secret 组 |
|---|---|---|
analyze-articles | 每日:抓 RSS + LLM 分析 → recommended_articles(7 天过期) | LLM |
discover-sites | 每周:LLM 发现/轮换站点 → recommended_sites / recommended_feeds | LLM |
disambiguate-sense | 双击查词上下文词义消歧(选择式) | LLM |
breakdown-sentence | 长难句主干/修饰分层拆解 | LLM |
resolve-context | 跨句指代消解 + 背景知识补全 | LLM |
generate-example | 个性化例句生成(roadmap ④) | LLM |
judge-phrases-batch | 短语动词/习语成句判定(批量,喂自动高亮) | LLM |
reading-report | AI 阅读周报(叙事层) | LLM |
translate-batch | 段落/句子批量翻译(2026-08 新建,取代客户端自填 key) | LLM |
issue-speech-token | Azure Speech 短时(10min)token broker | Azure |
tts-synthesize | Azure Neural TTS proxy | Azure |
lookup-or-fetch-word † | 查词兜底 → 写入 vocabulary 缓冲池 | 平台注入 SUPABASE_* |
共 12 个(_shared/ 是共享模块不计)。
† 2026-06-15 迁自 RVH(Supabase 统一维护到 RB)。详见
docs/plans/archive/supabase-consolidation-plan.md。
2026-08-02 删除:
google-books-proxy/gutenberg-proxy—— 三端追数据流后确认均无活消费者 (前者的 RVH 封面搜索 UI 入口已拆,_googleBooksCoverUrl永为 null 使下载分支不可达; 后者三端零引用)。留着 = 无人负责且能被公开 anon key 打的端点,故删而非加闸。 RVH 侧对应死代码由 RVH 自行清理(不阻塞 RB)。详见docs/plans/archive/llm-server-unification-plan.md§六。同批修正的既有漂移:本表曾列
explain-phrase(该 function 已不存在,仅analysis.rs:106注释里作为"范式"提及)、且漏了judge-phrases-batch。
- LLM 组 secret:
LLM_API_KEY·LLM_MODEL·LLM_PROVIDER(三者共用同一 key,轮换 set 一次全生效) - Azure 组 secret:
AZURE_SPEECH_KEY·AZURE_SPEECH_REGION SUPABASE_URL/SUPABASE_SERVICE_ROLE_KEY平台部署时自动注入,勿手动 set- 逐 function 的完整必需/可选 secret 以 edge-deploy SKILL.md 的依赖矩阵为准
部署
bash
supabase functions deploy <name> --project-ref jdtbyteiwnciqnfppztz --use-api本机无 Docker,必带 --use-api。完整改→deploy→实机验证流程走 /edge-deploy skill。
SQL 脚本(sql/)
均为手动在 Dashboard → SQL Editor 执行,无运行时代码依赖。
| 文件 | 作用 |
|---|---|
sync-tables.sql | 10 张用户同步表 + 3 张推荐表 DDL + RLS + cron 速查 |
vocabulary-buffer.sql | vocabulary 缓冲池表建表 DDL(PK=word,无 id 列) |
admin-analytics-rpcs.sql | admin 分析页 RPC get_user_count / get_registration_trend(SECURITY DEFINER) |
observability-tables.sql | 治理/可观测表 llm_call_log / edge_run_log / recommend_audit_log |
recommend-pool-governance.sql | 治理表 recommend_config(单行 id=1) / recommended_blocklist |
cron-setup.sql | 推荐定时任务 pg_cron 安装(daily-analyze-articles 0 22 * * * + weekly-discover-sites 0 23 * * 0) |
storage-setup.sql | Supabase Storage bucket 配置 |
rename-tables-2026-07.sql | 2026-07 全端表/列重命名迁移(notebook_entries→learning_entries 等) |
recommended-excluded-words-seed.sql | 211 条停用词种子 |
recommended-graded-feeds-seed.sql | 分级推荐 feed 种子 |
live-only 缺口(2026-07-20 已补齐)
以下 Supabase 对象此前只存在于 live DB,重建/迁移会丢;2026-07-20 经 Dashboard SQL Editor 导出补进 sql/(本机无 Docker,supabase db dump 不可用):
| 对象 | 类型 | 谁在用 | 已入仓 |
|---|---|---|---|
vocabulary(缓冲池表) | 建表 DDL | RB 兜底写入 / admin 词库页读写(PK=word,无 id 列) | vocabulary-buffer.sql |
get_user_count | RPC (SECURITY DEFINER) | admin analytics | admin-analytics-rpcs.sql |
get_registration_trend | RPC (SECURITY DEFINER) | admin analytics | admin-analytics-rpcs.sql |
注:
vocabulary-buffer.sql仅捕获列/PK 定义,RLS 策略未在本次导出范围内(如需归档 RLS 另行补)。 admin 侧对这几个对象的列/签名记录见../admin/docs/database.md(非权威,仅用法映射)。
推荐系统定时任务
cron-setup.sql 在 Dashboard 执行一次即长期生效。验证/管理:
sql
select jobid, jobname, schedule, active from cron.job; -- 已注册任务
select * from cron.job_run_details order by start_time desc limit 20; -- 执行历史鉴权用 anon key(public-by-design);函数内部写库用自动注入的 service_role。