fix(database): 扩展 db_id 字段长度至 80 字符,以支持更长的 ID #499

This commit is contained in:
Wenjie Zhang 2026-01-26 11:13:33 +08:00
parent 4a0110d1a7
commit b5c14a6a6f
3 changed files with 11 additions and 6 deletions

View File

@ -1130,9 +1130,9 @@ async def upload_file(
timestamp = int(time.time() * 1000)
minio_filename = f"{basename}_{timestamp}{ext}"
# 生成符合MinIO规范的存储桶名称将下划线替换为连字符
# 生成符合MinIO规范的存储桶名称将下划线替换为连字符截取长度以满足MinIO的63字符限制
if db_id:
bucket_name = f"ref-{db_id.replace('_', '-')}"
bucket_name = f"ref-{db_id[:32].replace('_', '-')}"
else:
bucket_name = "default-uploads"

View File

@ -142,6 +142,11 @@ class PostgresManager(metaclass=SingletonMeta):
"ALTER TABLE IF EXISTS evaluation_result_details ADD COLUMN IF NOT EXISTS generated_answer TEXT",
"ALTER TABLE IF EXISTS evaluation_result_details ADD COLUMN IF NOT EXISTS retrieved_chunks JSONB",
"ALTER TABLE IF EXISTS evaluation_result_details ADD COLUMN IF NOT EXISTS metrics JSONB",
# 扩展 db_id 字段长度以支持最长 75 字符的 IDkb_private_ + 64字符hash
"ALTER TABLE IF EXISTS knowledge_bases ALTER COLUMN db_id TYPE VARCHAR(80)",
"ALTER TABLE IF EXISTS knowledge_files ALTER COLUMN db_id TYPE VARCHAR(80)",
"ALTER TABLE IF EXISTS evaluation_benchmarks ALTER COLUMN db_id TYPE VARCHAR(80)",
"ALTER TABLE IF EXISTS evaluation_results ALTER COLUMN db_id TYPE VARCHAR(80)",
"CREATE INDEX IF NOT EXISTS idx_kb_type ON knowledge_bases(kb_type)",
"CREATE INDEX IF NOT EXISTS idx_kb_name ON knowledge_bases(name)",
"CREATE INDEX IF NOT EXISTS idx_kf_db_id ON knowledge_files(db_id)",

View File

@ -28,7 +28,7 @@ class KnowledgeBase(Base):
__table_args__ = (UniqueConstraint("db_id", name="uq_knowledge_bases_db_id"),)
id = Column(Integer, primary_key=True, autoincrement=True)
db_id = Column(String(64), unique=True, nullable=False, index=True)
db_id = Column(String(80), unique=True, nullable=False, index=True)
name = Column(String(255), nullable=False, index=True)
description = Column(Text)
kb_type = Column(String(32), nullable=False, index=True)
@ -51,7 +51,7 @@ class KnowledgeFile(Base):
id = Column(Integer, primary_key=True, autoincrement=True)
file_id = Column(String(64), unique=True, nullable=False, index=True)
db_id = Column(String(64), ForeignKey("knowledge_bases.db_id", ondelete="CASCADE"), nullable=False, index=True)
db_id = Column(String(80), ForeignKey("knowledge_bases.db_id", ondelete="CASCADE"), nullable=False, index=True)
parent_id = Column(String(64), ForeignKey("knowledge_files.file_id", ondelete="SET NULL"), index=True)
filename = Column(String(512), nullable=False)
original_filename = Column(String(512))
@ -80,7 +80,7 @@ class EvaluationBenchmark(Base):
id = Column(Integer, primary_key=True, autoincrement=True)
benchmark_id = Column(String(64), unique=True, nullable=False, index=True)
db_id = Column(String(64), ForeignKey("knowledge_bases.db_id", ondelete="CASCADE"), nullable=False, index=True)
db_id = Column(String(80), ForeignKey("knowledge_bases.db_id", ondelete="CASCADE"), nullable=False, index=True)
name = Column(String(255), nullable=False)
description = Column(Text)
question_count = Column(Integer, default=0)
@ -100,7 +100,7 @@ class EvaluationResult(Base):
id = Column(Integer, primary_key=True, autoincrement=True)
task_id = Column(String(64), unique=True, nullable=False, index=True)
db_id = Column(String(64), ForeignKey("knowledge_bases.db_id", ondelete="CASCADE"), nullable=False, index=True)
db_id = Column(String(80), ForeignKey("knowledge_bases.db_id", ondelete="CASCADE"), nullable=False, index=True)
benchmark_id = Column(
String(64),
ForeignKey("evaluation_benchmarks.benchmark_id", ondelete="SET NULL"),