Skip to content

DB Schema

資料庫 schema 圖,顯示每張表所屬的 PostgreSQL schema、欄位、以及外鍵關聯(跨 schema 的關聯以紅色標示)。

Loading…

資料生成方式

圖表由 scripts/generate_db_schema.py 在 CI 時透過 AST 靜態解析 models/*.py 自動產生,不需要手動維護,也不需要安裝 models/ 的執行期依賴(SQLAlchemy 等)— 純粹解析原始碼語法樹,跟 scripts/generate_uml.py 解析 src/ 的方式一樣是靜態分析,不 import 任何程式碼。

執行 python scripts/generate_db_schema.py 可在本機重新產生(純 Python 標準函式庫,不需要 uv sync);也可透過 make uml-db-schemajob_service container 內執行,跟 CI 走的路徑一致。

圖表中每張表的欄位分成三欄:第一欄是 PK(primary key)/ FK(foreign key)/ IDX(有索引)標記,第二欄是欄位名稱,第三欄是型別。跨 schema 的外鍵箭頭會直接指向目標表格中對應欄位的那一列,而不是只指到表格本身;箭頭若能在目標表中找到對應欄位就會精準對齊,找不到(例如目標表未被此腳本解析,見下方「未被此圖表涵蓋的 schema / table」)時才會退回指向整張表。

Schema 分類

Schema 分類對照 src/modules/ 既有的 DDD bounded context,詳見 016-db-schema-brushup

Schema對應 Bounded Context / 用途建立方式
coresrc/shared/domain/entities/(shared kernel:article、topic 等核心實體)Migration 24(DbSchema enum 成員)
collectionsrc/modules/collection/(爬蟲設定、抓取任務、metric 原始數值)Migration 24(DbSchema enum 成員)
intelligencesrc/modules/intelligence/(LLM 分析結果、標籤、週報)Migration 24(DbSchema enum 成員)
ai_infra跨情境的 LLM / metrics 供應商設定Migration 24(DbSchema enum 成員)
user_prefs讀者個人設定(訂閱、通知、收藏)Migration 24(DbSchema enum 成員)
auth使用者帳號,app_user 對此 schema 沒有讀取權限Migration 01(raw SQL,早於 DbSchema enum,見下方)
vectorspgvector 嵌入儲存(RAG 用的文章分塊)Migration 21(raw SQL,早於 DbSchema enum,見下方)
public沒有對應 SQLAlchemy model 的雜項表各自獨立 migration,見下方

未被此圖表涵蓋的 schema / table

scripts/generate_db_schema.py 只解析 models/*.py 中的 SQLAlchemy model,以下 schema/table 是直接在 alembic migration 中用 raw SQL 建立、沒有對應 model,因此不會出現在上方的圖表中:

對象建立於說明
auth schemaMigration 01_4f2e59c8650f_create_auth_schemaCREATE SCHEMA + REVOKE ALL ON SCHEMA auth FROM PUBLIC;schema 本身早於 DbSchema enum,但 auth.users 有對應的 models/auth.py::User,所以該表仍會出現在圖表中
vectors schemaMigration 21_add_vectors_schema_and_article_chunksCREATE SCHEMA + CREATE EXTENSION vector;schema 本身早於 DbSchema enum
vectors.articlesMigration 21_add_vectors_schema_and_article_chunksRaw SQL 建立的去正規化 parent table(供 search 結果 join 用),沒有對應 model,不會出現在圖表中vectors.article_chunks 有對應的 models/article_chunk.py::ArticleChunk,會正常出現)
public.data_migrationsMigration 18_add_data_migrations_table資料遷移執行紀錄的 ledger 表,沒有對應 model,不會出現在圖表中
public.arxiv_metadataMigration 22_add_correlation_id_and_rag_providers沒有對應 model,不會出現在圖表中