imeeting/backend/design/db_schema.md

17 KiB
Raw Permalink Blame History

鏁版嵁搴撶粨鏋勬枃妗紙PostgreSQL锛?

鏈枃妗f牴鎹?backend/design/db_schema_pgsql.sql 鐢熸垚锛屾弿杩板綋鍓嶆牳蹇冭〃缁撴瀯銆佸瓧娈点€佺害鏉熶笌绱㈠紩銆?

0. 绉熸埛涓庣粍缁?

0.1 sys_tenant锛堢鎴疯〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 绉熸埛ID
tenant_code VARCHAR(64) NOT NULL, UNIQUE 绉熸埛缂栫爜
tenant_name VARCHAR(128) NOT NULL 绉熸埛鍚嶇О
status SMALLINT NOT NULL, DEFAULT 1 鐘舵€?
expire_time TIMESTAMP(6) 杩囨湡鏃堕棿
contact_name VARCHAR(64) 鑱旂郴浜?
contact_phone VARCHAR(32) 鑱旂郴鐢佃瘽
remark VARCHAR(255) 澶囨敞
created_at TIMESTAMP(6) NOT NULL, DEFAULT CURRENT_TIMESTAMP 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT CURRENT_TIMESTAMP 鏇存柊鏃堕棿
is_deleted SMALLINT DEFAULT 0 閫昏緫鍒犻櫎鏍囪

绱㈠紩锛?

  • uk_tenant_code锛歚UNIQUE (tenant_code) WHERE is_deleted = FALSE`

0.2 sys_org锛堢粍缁囨灦鏋勮〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 缁勭粐ID
tenant_id BIGINT NOT NULL 绉熸埛ID
parent_id BIGINT 鐖剁骇缁勭粐ID
org_name VARCHAR(128) NOT NULL 缁勭粐鍚嶇О
org_code VARCHAR(64) 缁勭粐缂栫爜
org_path VARCHAR(512) 缁勭粐璺緞
sort_order INTEGER DEFAULT 0 鎺掑簭
status SMALLINT DEFAULT 1 鐘舵€?
created_at TIMESTAMP(6) NOT NULL, DEFAULT CURRENT_TIMESTAMP 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT CURRENT_TIMESTAMP 鏇存柊鏃堕棿
is_deleted SMALLINT DEFAULT 0 閫昏緫鍒犻櫎鏍囪

澶栭敭锛?

  • fk_org_parent锛歚parent_id -> sys_org(id)`
  • fk_org_tenant锛歚tenant_id -> sys_tenant(id)`

绱㈠紩锛?

  • idx_org_tenant锛歚(tenant_id)`

1. 鐢ㄦ埛涓庤鑹?

1.1 sys_user锛堢敤鎴疯〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
user_id BIGSERIAL PK 鐢ㄦ埛ID
username VARCHAR(50) NOT NULL, UNIQUE 鐧诲綍鍚?
display_name VARCHAR(50) NOT NULL 鏄剧ず鍚?
email VARCHAR(100) 閭
phone VARCHAR(30) UNIQUE 鎵嬫満鍙?
password_hash VARCHAR(255) NOT NULL 瀵嗙爜鍝堝笇
status SMALLINT NOT NULL, DEFAULT 1 鐘舵€?
pwd_reset_required SMALLINT DEFAULT 1 棣栨鐧诲綍鏄惁闇€鏀瑰瘑
is_deleted SMALLINT NOT NULL, DEFAULT 0 閫昏緫鍒犻櫎鏍囪
created_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鏇存柊鏃堕棿
is_platform_admin BOOLEAN DEFAULT false 鏄惁骞冲彴绠$悊鍛?

绱㈠紩锛?

  • uk_user_username锛歚UNIQUE (username) WHERE is_deleted = FALSE`

1.2 sys_role锛堣鑹茶〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
role_id BIGSERIAL PK 瑙掕壊ID
tenant_id BIGINT NOT NULL 绉熸埛ID
role_code VARCHAR(50) NOT NULL 瑙掕壊缂栫爜锛堢鎴峰唴鍞竴锛?
role_name VARCHAR(50) NOT NULL 瑙掕壊鍚嶇О
status SMALLINT NOT NULL, DEFAULT 1 鐘舵€?
remark TEXT 澶囨敞
is_deleted SMALLINT NOT NULL, DEFAULT 0 閫昏緫鍒犻櫎鏍囪
created_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鏇存柊鏃堕棿

绱㈠紩锛?

  • idx_sys_role_tenant锛歚(tenant_id)`
  • uk_role_code锛歚UNIQUE (tenant_id, role_code) WHERE is_deleted = FALSE`

1.3 sys_user_role锛堢敤鎴?瑙掕壊鍏宠仈琛紝绉熸埛寮虹害鏉燂級

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 鍏宠仈ID
tenant_id BIGINT NOT NULL 绉熸埛ID
user_id BIGINT NOT NULL 鐢ㄦ埛ID
role_id BIGINT NOT NULL 瑙掕壊ID
is_deleted SMALLINT NOT NULL, DEFAULT 0 閫昏緫鍒犻櫎鏍囪
created_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鏇存柊鏃堕棿

鍞竴绾︽潫锛?

  • UNIQUE (tenant_id, user_id, role_id) WHERE is_deleted = 0

1.4 sys_tenant_user锛堢鎴锋垚鍛樺叧鑱旇〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 鍏宠仈ID
user_id BIGINT NOT NULL 鐢ㄦ埛ID
tenant_id BIGINT NOT NULL 绉熸埛ID
org_id BIGINT 缁勭粐ID
status SMALLINT DEFAULT 1 鐘舵€?
is_deleted SMALLINT DEFAULT 0 閫昏緫鍒犻櫎鏍囪
created_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鏇存柊鏃堕棿

绱㈠紩锛?

  • uk_tenant_user锛歚UNIQUE (user_id, tenant_id) WHERE is_deleted = 0`

2. 鏉冮檺/瀛楀吀/鍙傛暟锛堝叏灞€鍏变韩锛?

2.1 sys_permission锛堟潈闄愯〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
perm_id BIGSERIAL PK 鏉冮檺ID
parent_id BIGINT 鐖剁骇鏉冮檺ID
name VARCHAR(100) NOT NULL 鏉冮檺鍚嶇О
code VARCHAR(100) NOT NULL, UNIQUE 鏉冮檺缂栫爜
perm_type VARCHAR(20) NOT NULL 鏉冮檺绫诲瀷
level INTEGER NOT NULL 灞傜骇
path VARCHAR(255) 璺緞
component VARCHAR(255) 缁勪欢
icon VARCHAR(100) 鍥炬爣
sort_order INTEGER NOT NULL, DEFAULT 0 鎺掑簭
is_visible SMALLINT NOT NULL, DEFAULT 1 鏄惁鍙
status SMALLINT NOT NULL, DEFAULT 1 鐘舵€?
description TEXT 鎻忚堪
meta JSONB 鎵╁睍淇℃伅
is_deleted SMALLINT NOT NULL, DEFAULT 0 閫昏緫鍒犻櫎鏍囪
created_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鏇存柊鏃堕棿

2.2 sys_dict_type锛堝瓧鍏哥被鍨嬭〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
dict_type_id BIGSERIAL PK 绫诲瀷ID
type_code VARCHAR(50) NOT NULL, UNIQUE 绫诲瀷缂栫爜
type_name VARCHAR(50) NOT NULL 绫诲瀷鍚嶇О
status SMALLINT DEFAULT 1 鐘舵€?
remark TEXT 澶囨敞
created_at TIMESTAMP NOT NULL, DEFAULT NOW() 鍒涘缓鏃堕棿
updated_at TIMESTAMP NOT NULL, DEFAULT NOW() 鏇存柊鏃堕棿
is_deleted SMALLINT DEFAULT 0 閫昏緫鍒犻櫎鏍囪

鍒濆鍖栨暟鎹細

  • sys_common_status: 閫氱敤鐘舵€?(鍚敤/绂佺敤)
  • sys_permission_type: 鏉冮檺绫诲瀷 (鐩綍/鑿滃崟/鎸夐挳)
  • sys_common_visibility: 鍙鎬?(鏄剧ず/闅愯棌)
  • sys_permission_level: 鏉冮檺灞傜骇 (1, 2, 3)
  • sys_log_type: 鏃ュ織绫诲瀷 (LOGIN/OPERATION)
  • sys_param_type: 鍙傛暟绫诲瀷 (String/Number/Boolean/JSON)
  • sys_log_status: 鎿嶄綔鐘舵€?(鎴愬姛/澶辫触)

2.3 sys_dict_item锛堝瓧鍏搁」琛級

瀛楁 绫诲瀷 绾︽潫 璇存槑
dict_item_id BIGSERIAL PK 瀛楀吀椤笽D
type_code VARCHAR(50) NOT NULL 瀛楀吀绫诲瀷缂栫爜
item_label VARCHAR(100) NOT NULL 灞曠ず鏂囨湰
item_value VARCHAR(100) NOT NULL 瀛樺偍鍊?
sort_order INT DEFAULT 0 鎺掑簭
status SMALLINT DEFAULT 1 鐘舵€?
created_at TIMESTAMP NOT NULL, DEFAULT NOW() 鍒涘缓鏃堕棿
updated_at TIMESTAMP NOT NULL, DEFAULT NOW() 鏇存柊鏃堕棿
is_deleted SMALLINT DEFAULT 0 閫昏緫鍒犻櫎鏍囪

绱㈠紩锛?

  • idx_dict_item_type锛歚(type_code)`
  • uk_dict_item_value锛歚UNIQUE (type_code, item_value)`

2.4 sys_param锛堢郴缁熷弬鏁拌〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 鍙傛暟ID
param_key VARCHAR(100) NOT NULL, UNIQUE 鍙傛暟閿?
param_value TEXT NOT NULL 鍙傛暟鍊?
param_type VARCHAR(20) NOT NULL 鍙傛暟绫诲瀷
is_system SMALLINT DEFAULT 0 鏄惁绯荤粺鍐呯疆
status SMALLINT DEFAULT 1 鐘舵€?
description TEXT 鎻忚堪
created_at TIMESTAMP NOT NULL, DEFAULT NOW() 鍒涘缓鏃堕棿

3. 鏃ュ織锛堢鎴烽殧绂伙級

3.1 sys_log锛堢郴缁熸棩蹇楄〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 鏃ュ織ID
tenant_id BIGINT NOT NULL, DEFAULT 0 绉熸埛ID
user_id BIGINT 鐢ㄦ埛ID
username VARCHAR(50) 鐢ㄦ埛鍚?
log_type VARCHAR(20) 鏃ュ織绫诲瀷锛堝 LOGIN銆丱PERATION锛?
operation VARCHAR(100) NOT NULL 鎿嶄綔鎻忚堪
method VARCHAR(200) 鏂规硶
params TEXT 璇锋眰鍙傛暟
status SMALLINT DEFAULT 1 鐘舵€?
ip VARCHAR(50) IP
duration BIGINT 鑰楁椂锛坢s锛?
created_at TIMESTAMP NOT NULL, DEFAULT NOW() 鍒涘缓鏃堕棿

绱㈠紩锛?

  • idx_log_tenant_type锛歚(tenant_id, log_type, created_at)`

4. 骞冲彴閰嶇疆

4.1 sys_platform_config锛堝钩鍙扮鐞嗚〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGINT PK 鍥哄畾涓?1
project_name VARCHAR(128) NOT NULL 椤圭洰鍚嶇О
logo_url VARCHAR(512) Logo URL
icon_url VARCHAR(512) Icon URL
login_bg_url VARCHAR(512) 鐧诲綍椤佃儗鏅?
icp_info VARCHAR(128) 澶囨淇℃伅
copyright_info VARCHAR(255) 鐗堟潈淇℃伅
system_description TEXT 绯荤粺鎻忚堪
created_at TIMESTAMP NOT NULL 鍒涘缓鏃堕棿
updated_at TIMESTAMP NOT NULL 鏇存柊鏃堕棿

5. 涓氬姟妯″潡

5.1 biz_speakers锛堝0绾瑰彂瑷€浜鸿〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 涓婚敭ID
tenant_id BIGINT NOT NULL 绉熸埛ID
user_id BIGINT 鍏宠仈绯荤粺鐢ㄦ埛ID
name VARCHAR(100) NOT NULL 鍙戣█浜哄鍚?
voice_path VARCHAR(512) 鍘熷鏂囦欢璺緞
voice_ext VARCHAR(10) 鏂囦欢鍚庣紑
voice_size BIGINT 鏂囦欢澶у皬
status SMALLINT DEFAULT 1 鐘舵€?(1:宸蹭繚瀛? 2:娉ㄥ唽涓? 3:宸叉敞鍐?
embedding VECTOR 澹扮汗鐗瑰緛鍚戦噺
remark TEXT 澶囨敞
created_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鏇存柊鏃堕棿
is_deleted SMALLINT DEFAULT 0 閫昏緫鍒犻櫎

绱㈠紩锛?

  • idx_speaker_tenant: (tenant_id)
  • idx_speaker_user: (user_id) WHERE is_deleted = 0

5.2 biz_hot_words锛堢儹璇嶇鐞嗚〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 涓婚敭ID
tenant_id BIGINT NOT NULL 绉熸埛ID
word VARCHAR(100) NOT NULL 鐑瘝鍘熸枃
pinyin_list JSONB 鎷奸煶鏁扮粍
match_strategy SMALLINT DEFAULT 1 鍖归厤绛栫暐 (1:绮剧‘, 2:妯$硦)
category VARCHAR(50) 绫诲埆 (浜哄悕銆佹湳璇瓑)
weight INTEGER DEFAULT 10 鏉冮噸 (1-100)
status SMALLINT DEFAULT 1 鐘舵€?(1:鍚敤, 0:绂佺敤)
is_synced SMALLINT DEFAULT 0 宸插悓姝ョ涓夋柟鏍囪
remark TEXT 澶囨敞
created_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鏇存柊鏃堕棿
is_deleted SMALLINT DEFAULT 0 閫昏緫鍒犻櫎

绱㈠紩锛?

  • idx_hotword_tenant: (tenant_id)
  • idx_hotword_word: (word) WHERE is_deleted = 0

5.3 biz_prompt_templates锛堟彁绀鸿瘝妯℃澘琛級

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 涓婚敭ID
tenant_id BIGINT NOT NULL 绉熸埛ID
template_name VARCHAR(100) NOT NULL 妯℃澘鍚嶇О
category VARCHAR(20) 鍒嗙被 (瀛楀吀: biz_prompt_category)
is_system SMALLINT DEFAULT 0 鏄惁棰勭疆 (1:鏄? 0:鍚?
creator_id BIGINT 鍒涘缓浜篒D
tags JSONB 鏍囩鏁扮粍
usage_count INTEGER DEFAULT 0 浣跨敤娆℃暟
prompt_content TEXT NOT NULL 鎻愮ず璇嶅唴瀹?
status SMALLINT DEFAULT 1 鐘舵€?(1:鍚敤, 0:绂佺敤)
remark VARCHAR(255) 澶囨敞
created_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鍒涘缓鏃堕棿
updated_at TIMESTAMP(6) NOT NULL, DEFAULT now() 鏇存柊鏃堕棿
is_deleted SMALLINT DEFAULT 0 閫昏緫鍒犻櫎

绱㈠紩锛?

  • idx_prompt_tenant: (tenant_id)
  • idx_prompt_system: (is_system) WHERE is_deleted = 0

5.4 biz_asr_modelsASR 模型管理表)

字段 类型 约束 说明
id BIGSERIAL PK 主键ID
tenant_id BIGINT NOT NULL 租户ID
model_name VARCHAR(100) NOT NULL 模型显示名称
provider VARCHAR(50) 提供商
base_url VARCHAR(255) 接口基础地址
api_key VARCHAR(255) API 密钥
model_code VARCHAR(100) 模型代码
ws_url VARCHAR(255) WebSocket 地址
media_config JSON/TEXT 媒体参数
is_default SMALLINT DEFAULT 0 默认模型标记
status SMALLINT DEFAULT 1 状态
remark VARCHAR(255) 备注
created_at TIMESTAMP(6) NOT NULL 创建时间
updated_at TIMESTAMP(6) NOT NULL 更新时间
is_deleted SMALLINT DEFAULT 0 逻辑删除

索引:

  • idx_asr_model_tenant: (tenant_id)
  • idx_asr_model_default: (is_default) WHERE is_deleted = 0

5.5 biz_llm_modelsLLM 模型管理表)

字段 类型 约束 说明
id BIGSERIAL PK 主键ID
tenant_id BIGINT NOT NULL 租户ID
model_name VARCHAR(100) NOT NULL 模型显示名称
provider VARCHAR(50) 提供商
base_url VARCHAR(255) 接口基础地址
api_path VARCHAR(100) API 路径
api_key VARCHAR(255) API 密钥
model_code VARCHAR(100) 模型代码
temperature DECIMAL DEFAULT 0.7 随机性
top_p DECIMAL DEFAULT 0.9 核采样
is_default SMALLINT DEFAULT 0 默认模型标记
status SMALLINT DEFAULT 1 状态
remark VARCHAR(255) 备注
created_at TIMESTAMP(6) NOT NULL 创建时间
updated_at TIMESTAMP(6) NOT NULL 更新时间
is_deleted SMALLINT DEFAULT 0 逻辑删除

索引:

  • idx_llm_model_tenant: (tenant_id)
  • idx_llm_model_default: (is_default) WHERE is_deleted = 0

5.6 biz_meetings锛堜細璁富琛級

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 涓婚敭ID
tenant_id BIGINT NOT NULL 绉熸埛ID
title VARCHAR(200) NOT NULL 浼氳鏍囬
audio_url VARCHAR(500) 涓撳睘闊抽璺緞
latest_summary_task_id BIGINT 鏈€鏂版垚鍔熺殑鎬荤粨浠诲姟ID
status SMALLINT DEFAULT 0 0:寰呭鐞? 1:璇嗗埆涓? 2:鎬荤粨涓? 3:宸插畬鎴? 4:澶辫触

5.6 biz_meeting_transcripts锛堣浆褰曟槑缁嗚〃锛?

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 涓婚敭ID
meeting_id BIGINT NOT NULL 鍏宠仈浼氳ID
speaker_label VARCHAR(50) 鍙戣█浜烘爣绛?
content TEXT 杞綍鏂囧瓧
start_time INTEGER 寮€濮嬫椂闂?(ms)

5.7 biz_ai_tasks锛圓I 浠诲姟娴佹按琛級

瀛楁 绫诲瀷 绾︽潫 璇存槑
id BIGSERIAL PK 涓婚敭ID
meeting_id BIGINT NOT NULL 鍏宠仈浼氳ID
task_type VARCHAR(20) ASR / SUMMARY
request_data JSONB 璇锋眰鍘熷鏁版嵁
response_data JSONB 鍝嶅簲鍘熷鏁版嵁
task_config TEXT [蹇収] 浠诲姟閰嶇疆(妯″瀷ID銆佹彁绀鸿瘝妯℃澘绛?
result_file_path VARCHAR(500) 缁撴灉鏂囦欢鐩稿璺緞 (濡侻D鎬荤粨鏂囦欢)
status SMALLINT 0:鎺掗槦, 1:澶勭悊涓? 2:鎴愬姛, 3:澶辫触