Skip to content

Supabase 后端子项目

Lampio(RB)与 RVH 共用的 Supabase 后端:Edge Functions + 可执行 SQL(表结构 / RLS / 定时任务 / 种子)。 本 README 是导航索引——细节以各权威源为准,不在此重复。

目录结构

supabase/
├── functions/   # Edge Functions(git 跟踪)
├── sql/         # 可执行 SQL,手动在 Dashboard → SQL Editor 跑(git 跟踪)
├── config.toml  # CLI 脚手架,gitignore(部署靠 --project-ref,不依赖它)
└── seed.sql     # 同上,gitignore

Edge Functions

Function用途Secret 组
analyze-articles每日:抓 RSS + LLM 分析 → recommended_articles(7 天过期)LLM
discover-sites每周:LLM 发现/轮换站点 → recommended_sites / recommended_feedsLLM
disambiguate-sense双击查词上下文词义消歧(选择式)LLM
breakdown-sentence长难句主干/修饰分层拆解LLM
resolve-context跨句指代消解 + 背景知识补全LLM
generate-example个性化例句生成(roadmap ④)LLM
judge-phrases-batch短语动词/习语成句判定(批量,喂自动高亮)LLM
reading-reportAI 阅读周报(叙事层)LLM
translate-batch段落/句子批量翻译(2026-08 新建,取代客户端自填 key)LLM
issue-speech-tokenAzure Speech 短时(10min)token brokerAzure
tts-synthesizeAzure Neural TTS proxyAzure
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.sql10 张用户同步表 + 3 张推荐表 DDL + RLS + cron 速查
vocabulary-buffer.sqlvocabulary 缓冲池表建表 DDL(PK=word,无 id 列)
admin-analytics-rpcs.sqladmin 分析页 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.sqlSupabase Storage bucket 配置
rename-tables-2026-07.sql2026-07 全端表/列重命名迁移(notebook_entries→learning_entries 等)
recommended-excluded-words-seed.sql211 条停用词种子
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(缓冲池表)建表 DDLRB 兜底写入 / admin 词库页读写(PK=word,无 id 列)vocabulary-buffer.sql
get_user_countRPC (SECURITY DEFINER)admin analyticsadmin-analytics-rpcs.sql
get_registration_trendRPC (SECURITY DEFINER)admin analyticsadmin-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。