# 鏁版嵁搴撶粨鏋勬枃妗o紙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 | | creator_id | BIGINT | NOT NULL | 鍒涘缓浜篒D锛岀敤浜庡0绾瑰簱褰掑睘 | | user_id | BIGINT | | 鍏宠仈绯荤粺鐢ㄦ埛ID | | external_speaker_id | VARCHAR(100) | | 绗笁鏂瑰0绾瑰簱涓殑浜哄憳ID | | name | VARCHAR(100) | NOT NULL | 鍙戣█浜哄鍚?| | voice_path | VARCHAR(512) | | 鍘熷澹扮汗鏂囦欢璺緞 | | voice_ext | VARCHAR(10) | | 鏂囦欢鍚庣紑 | | voice_size | BIGINT | | 鏂囦欢澶у皬 | | status | SMALLINT | DEFAULT 1 | 鐘舵€侊紙1=宸蹭繚瀛橈紝2=娉ㄥ唽涓紝3=宸叉敞鍐岋紝4=澶辫触锛?| | embedding | VECTOR(512) | | 澹扮汗鐗瑰緛鍚戦噺 | | remark | TEXT | | 澶囨敞 | | created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鍒涘缓鏃堕棿 | | updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鏇存柊鏃堕棿 | | is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 閫昏緫鍒犻櫎 | 绱㈠紩锛?- `idx_speaker_tenant`锛歚(tenant_id) WHERE is_deleted = 0` - `idx_speaker_creator`锛歚(creator_id) WHERE is_deleted = 0` - `idx_speaker_user`锛歚(user_id) WHERE is_deleted = 0` - `idx_speaker_external`锛歚(external_speaker_id) WHERE is_deleted = 0` - `uk_speaker_tenant_name`锛歚UNIQUE (tenant_id, name) WHERE is_deleted = 0` ### 5.2 `biz_hot_word_groups`锛堢儹璇嶇粍琛級 | 瀛楁 | 绫诲瀷 | 绾︽潫 | 璇存槑 | | --- | --- | --- | --- | | id | BIGSERIAL | PK | 涓婚敭ID | | tenant_id | BIGINT | NOT NULL | 绉熸埛ID | | group_name | VARCHAR(100) | NOT NULL | 鐑瘝缁勫悕绉?| | creator_id | BIGINT | | 鍒涘缓浜篒D | | status | SMALLINT | DEFAULT 1 | 鐘舵€侊紙1:鍚敤锛?:绂佺敤锛?| | remark | VARCHAR(255) | | 澶囨敞 | | created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鍒涘缓鏃堕棿 | | updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鏇存柊鏃堕棿 | | is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 閫昏緫鍒犻櫎 | 绱㈠紩锛?- `idx_hot_word_group_tenant`锛歚(tenant_id) WHERE is_deleted = 0` - `uk_hot_word_group_name_scope`锛歚UNIQUE (tenant_id, group_name) WHERE is_deleted = 0` ### 5.3 `biz_hot_words`锛堢儹璇嶇鐞嗚〃锛?| 瀛楁 | 绫诲瀷 | 绾︽潫 | 璇存槑 | | --- | --- | --- | --- | | id | BIGSERIAL | PK | 涓婚敭ID | | tenant_id | BIGINT | NOT NULL | 绉熸埛ID | | word | VARCHAR(100) | NOT NULL | 鐑瘝鍘熸枃 | | is_public | SMALLINT | DEFAULT 0 | 鏄惁绉熸埛鍏紑锛?:鍏紑锛?:涓汉绉佹湁锛?| | creator_id | BIGINT | | 鍒涘缓鑰匢D | | pinyin_list | TEXT | | 鎷奸煶鏁扮粍 | | match_strategy | SMALLINT | DEFAULT 1 | 鍖归厤绛栫暐锛?:绮剧‘鍖归厤锛?:鎷奸煶妯$硦鍖归厤锛?| | category | VARCHAR(50) | | 绫诲埆锛堜汉鍚嶃€佹湳璇€佸湴鍚嶏級 | | hot_word_group_id | BIGINT | | 鎵€灞炵儹璇嶇粍ID | | weight | INTEGER | DEFAULT 10 | 鏉冮噸锛?-100锛?| | status | SMALLINT | DEFAULT 1 | 鐘舵€侊紙1:鍚敤锛?:绂佺敤锛?| | is_synced | SMALLINT | DEFAULT 0 | 鏄惁宸插悓姝ョ涓夋柟寮曟搸锛?:鏈悓姝ワ紝1:宸插悓姝ワ級 | | remark | TEXT | | 澶囨敞 | | created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鍒涘缓鏃堕棿 | | updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鏇存柊鏃堕棿 | | is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 閫昏緫鍒犻櫎 | 绱㈠紩锛?- `idx_hotword_tenant`锛歚(tenant_id)` - `idx_hotword_word`锛歚(word) WHERE is_deleted = 0` - `idx_hotword_group`锛歚(hot_word_group_id) WHERE is_deleted = 0` ### 5.4 `biz_prompt_templates`锛堟彁绀鸿瘝妯℃澘琛級 | 瀛楁 | 绫诲瀷 | 绾︽潫 | 璇存槑 | | --- | --- | --- | --- | | id | BIGSERIAL | PK | 涓婚敭ID | | tenant_id | BIGINT | NOT NULL, DEFAULT 0 | 绉熸埛ID锛? 涓虹郴缁熺骇锛?| | template_name | VARCHAR(100) | NOT NULL | 妯℃澘鍚嶇О | | description | VARCHAR(255) | | 妯℃澘鎻忚堪 | | category | VARCHAR(20) | | 鍒嗙被锛堝瓧鍏革細`biz_prompt_category`锛?| | is_system | SMALLINT | DEFAULT 0 | 鏄惁绯荤粺棰勭疆锛?:鏄紝0:鍚︼級 | | creator_id | BIGINT | | 鍒涘缓浜篒D | | tags | TEXT | | 鏍囩鏁扮粍 | | hot_word_group_id | BIGINT | | 缁戝畾鐑瘝缁処D | | usage_count | INTEGER | DEFAULT 0 | 浣跨敤娆℃暟 | | prompt_content | TEXT | NOT NULL | 鎻愮ず璇嶅唴瀹?| | status | SMALLINT | DEFAULT 1 | 鐘舵€侊紙1:鍚敤锛?:绂佺敤锛?| | remark | VARCHAR(255) | | 澶囨敞 | | created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鍒涘缓鏃堕棿 | | updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鏇存柊鏃堕棿 | | is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 閫昏緫鍒犻櫎 | 绱㈠紩锛?- `idx_prompt_tenant`锛歚(tenant_id)` - `idx_prompt_system`锛歚(is_system) WHERE is_deleted = 0` - `idx_prompt_group`锛歚(hot_word_group_id) WHERE is_deleted = 0` ### 5.5 `biz_asr_models`锛圓SR 妯″瀷閰嶇疆琛級 | 瀛楁 | 绫诲瀷 | 绾︽潫 | 璇存槑 | | --- | --- | --- | --- | | id | BIGSERIAL | PK | 涓婚敭ID | | tenant_id | BIGINT | NOT NULL, DEFAULT 0 | 绉熸埛ID | | model_name | VARCHAR(100) | NOT NULL | 妯″瀷鏄剧ず鍚嶇О | | provider | VARCHAR(50) | | 鎻愪緵鍟?| | base_url | VARCHAR(255) | | 鎺ュ彛鍩虹鍦板潃 | | api_key | VARCHAR(255) | | API 瀵嗛挜 | | model_code | VARCHAR(100) | | 妯″瀷浠g爜 | | ws_url | VARCHAR(255) | | WebSocket 鍦板潃 | | media_config | TEXT | | 濯掍綋鍙傛暟 | | is_default | SMALLINT | DEFAULT 0 | 榛樿妯″瀷鏍囪 | | sort_order | INTEGER | NOT NULL, DEFAULT 0 | 鎺掑簭鍊硷紝瓒婂皬瓒婇潬鍓?| | status | SMALLINT | DEFAULT 1 | 鐘舵€?| | remark | VARCHAR(255) | | 澶囨敞 | | created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鍒涘缓鏃堕棿 | | updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鏇存柊鏃堕棿 | | is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 閫昏緫鍒犻櫎 | 绱㈠紩锛?- `idx_asr_model_tenant`锛歚(tenant_id)` - `idx_asr_model_default`锛歚(is_default) WHERE is_deleted = 0` - `idx_asr_model_sort_order`锛歚(tenant_id, is_default, sort_order) WHERE is_deleted = 0` - `uk_asr_model_default_enabled_tenant`锛歚(tenant_id) WHERE is_deleted = 0 AND status = 1 AND is_default = 1` ### 5.6 `biz_llm_models`锛圠LM 妯″瀷閰嶇疆琛級 | 瀛楁 | 绫诲瀷 | 绾︽潫 | 璇存槑 | | --- | --- | --- | --- | | id | BIGSERIAL | PK | 涓婚敭ID | | tenant_id | BIGINT | NOT NULL, DEFAULT 0 | 绉熸埛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) | | 妯″瀷浠g爜 | | temperature | DECIMAL(3,2) | DEFAULT 0.7 | 娓╁害鍙傛暟 | | top_p | DECIMAL(3,2) | DEFAULT 0.9 | Top P 鍙傛暟 | | is_default | SMALLINT | DEFAULT 0 | 榛樿妯″瀷鏍囪 | | sort_order | INTEGER | NOT NULL, DEFAULT 0 | 鎺掑簭鍊硷紝瓒婂皬瓒婇潬鍓?| | status | SMALLINT | DEFAULT 1 | 鐘舵€?| | remark | VARCHAR(255) | | 澶囨敞 | | created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鍒涘缓鏃堕棿 | | updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鏇存柊鏃堕棿 | | is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 閫昏緫鍒犻櫎 | 绱㈠紩锛?- `idx_llm_model_tenant`锛歚(tenant_id)` - `idx_llm_model_default`锛歚(is_default) WHERE is_deleted = 0` - `idx_llm_model_sort_order`锛歚(tenant_id, is_default, sort_order) WHERE is_deleted = 0` - `uk_llm_model_default_enabled_tenant`锛歚(tenant_id) WHERE is_deleted = 0 AND status = 1 AND is_default = 1` ### 5.7 `biz_meetings`锛堜細璁富琛級 | 瀛楁 | 绫诲瀷 | 绾︽潫 | 璇存槑 | | --- | --- | --- | --- | | id | BIGSERIAL | PK | 涓婚敭ID | | tenant_id | BIGINT | NOT NULL, DEFAULT 0 | 绉熸埛ID | | title | VARCHAR(200) | NOT NULL | 浼氳鏍囬 | | meeting_time | TIMESTAMP(6) | | 浼氳鏃堕棿 | | participants | TEXT | | 鍙備細浜轰俊鎭?| | tags | VARCHAR(255) | | 鏍囩 | | audio_url | VARCHAR(500) | | 涓撳睘闊抽璺緞 | | meeting_type | VARCHAR(32) | | 会议类型:OFFLINE / REALTIME | | meeting_source | VARCHAR(32) | | 会议来源平台:WEB / ANDROID | | creator_id | BIGINT | | 鍙戣捣浜篒D | | creator_name | VARCHAR(100) | | 鍙戣捣浜哄鍚?| | latest_summary_task_id | BIGINT | | 鏈€鏂版垚鍔熸€荤粨浠诲姟ID | | status | SMALLINT | DEFAULT 0 | 鐘舵€侊紙0:寰呭鐞嗭紝1:澶勭悊涓紝2:鎴愬姛锛?:澶辫触锛?| | created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鍒涘缓鏃堕棿 | | updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鏇存柊鏃堕棿 | | is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 閫昏緫鍒犻櫎 | 绱㈠紩锛?- `idx_meeting_tenant`锛歚(tenant_id)` ### 5.8 `biz_meeting_transcripts`锛堣浆褰曟槑缁嗚〃锛?| 瀛楁 | 绫诲瀷 | 绾︽潫 | 璇存槑 | | --- | --- | --- | --- | | id | BIGSERIAL | PK | 涓婚敭ID | | meeting_id | BIGINT | NOT NULL | 鍏宠仈浼氳ID | | speaker_id | VARCHAR(50) | | ASR 杩斿洖鐨勫彂瑷€浜烘爣璇?| | speaker_name | VARCHAR(100) | | 淇敼鍚庣殑鍙戣█浜哄鍚?| | speaker_label | VARCHAR(50) | | 鍙戣█浜烘爣绛?| | content | TEXT | | 杞綍鍐呭 | | start_time | INTEGER | | 寮€濮嬫椂闂达紙ms锛?| | end_time | INTEGER | | 缁撴潫鏃堕棿锛坢s锛?| | sort_order | INTEGER | | 鎺掑簭 | | created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 鍒涘缓鏃堕棿 | 绱㈠紩锛?- `idx_transcript_meeting`锛歚(meeting_id)` ### 5.9 `biz_ai_tasks`锛圓I 浠诲姟娴佹按琛級 | 瀛楁 | 绫诲瀷 | 绾︽潫 | 璇存槑 | | --- | --- | --- | --- | | id | BIGSERIAL | PK | 涓婚敭ID | | meeting_id | BIGINT | NOT NULL | 鍏宠仈浼氳ID | | task_type | VARCHAR(20) | | 浠诲姟绫诲瀷锛圓SR / SUMMARY锛?| | status | SMALLINT | DEFAULT 0 | 鐘舵€侊紙0:鎺掗槦锛?:鎵ц涓紝2:鎴愬姛锛?:澶辫触锛?| | request_data | TEXT | | 璇锋眰涓夋柟鍘熷 JSON | | response_data | TEXT | | 涓夋柟杩斿洖鍘熷 JSON | | task_config | TEXT | | 浠诲姟閰嶇疆鍙傛暟蹇収 | | result_file_path | VARCHAR(500) | | 缁撴灉鏂囦欢璺緞 | | error_msg | TEXT | | 閿欒鍫嗘爤 | | started_at | TIMESTAMP(6) | | 寮€濮嬫椂闂?| | completed_at | TIMESTAMP(6) | | 瀹屾垚鏃堕棿 | 绱㈠紩锛?- `idx_aitask_meeting`锛歚(meeting_id)`