mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-13 22:20:58 +00:00
fix: incorrect update date in kb card
This commit is contained in:
@@ -74,7 +74,16 @@ class KnowledgeService:
|
|||||||
# Only internal KBs support file storage
|
# Only internal KBs support file storage
|
||||||
if runtime_kb.get_type() != 'internal':
|
if runtime_kb.get_type() != 'internal':
|
||||||
raise Exception('Only internal knowledge bases support file storage')
|
raise Exception('Only internal knowledge bases support file storage')
|
||||||
return await runtime_kb.store_file(file_id)
|
result = await runtime_kb.store_file(file_id)
|
||||||
|
|
||||||
|
# Update the KB's updated_at timestamp
|
||||||
|
await self.ap.persistence_mgr.execute_async(
|
||||||
|
sqlalchemy.update(persistence_rag.KnowledgeBase)
|
||||||
|
.values(updated_at=sqlalchemy.func.now())
|
||||||
|
.where(persistence_rag.KnowledgeBase.uuid == kb_uuid)
|
||||||
|
)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
async def retrieve_knowledge_base(self, kb_uuid: str, query: str) -> list[dict]:
|
async def retrieve_knowledge_base(self, kb_uuid: str, query: str) -> list[dict]:
|
||||||
"""检索知识库"""
|
"""检索知识库"""
|
||||||
@@ -103,6 +112,13 @@ class KnowledgeService:
|
|||||||
raise Exception('Only internal knowledge bases support file deletion')
|
raise Exception('Only internal knowledge bases support file deletion')
|
||||||
await runtime_kb.delete_file(file_id)
|
await runtime_kb.delete_file(file_id)
|
||||||
|
|
||||||
|
# Update the KB's updated_at timestamp
|
||||||
|
await self.ap.persistence_mgr.execute_async(
|
||||||
|
sqlalchemy.update(persistence_rag.KnowledgeBase)
|
||||||
|
.values(updated_at=sqlalchemy.func.now())
|
||||||
|
.where(persistence_rag.KnowledgeBase.uuid == kb_uuid)
|
||||||
|
)
|
||||||
|
|
||||||
async def delete_knowledge_base(self, kb_uuid: str) -> None:
|
async def delete_knowledge_base(self, kb_uuid: str) -> None:
|
||||||
"""删除知识库"""
|
"""删除知识库"""
|
||||||
await self.ap.rag_mgr.delete_knowledge_base(kb_uuid)
|
await self.ap.rag_mgr.delete_knowledge_base(kb_uuid)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ class KnowledgeBase(Base):
|
|||||||
name = sqlalchemy.Column(sqlalchemy.String, index=True)
|
name = sqlalchemy.Column(sqlalchemy.String, index=True)
|
||||||
description = sqlalchemy.Column(sqlalchemy.Text)
|
description = sqlalchemy.Column(sqlalchemy.Text)
|
||||||
created_at = sqlalchemy.Column(sqlalchemy.DateTime, default=sqlalchemy.func.now())
|
created_at = sqlalchemy.Column(sqlalchemy.DateTime, default=sqlalchemy.func.now())
|
||||||
|
updated_at = sqlalchemy.Column(sqlalchemy.DateTime, default=sqlalchemy.func.now(), onupdate=sqlalchemy.func.now())
|
||||||
embedding_model_uuid = sqlalchemy.Column(sqlalchemy.String, default='')
|
embedding_model_uuid = sqlalchemy.Column(sqlalchemy.String, default='')
|
||||||
top_k = sqlalchemy.Column(sqlalchemy.Integer, default=5)
|
top_k = sqlalchemy.Column(sqlalchemy.Integer, default=5)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
import sqlalchemy
|
||||||
|
from .. import migration
|
||||||
|
|
||||||
|
|
||||||
|
@migration.migration_class(13)
|
||||||
|
class DBMigrateKnowledgeBaseUpdatedAt(migration.DBMigration):
|
||||||
|
"""Add updated_at field to knowledge_bases table"""
|
||||||
|
|
||||||
|
async def upgrade(self):
|
||||||
|
"""Upgrade"""
|
||||||
|
# Get all column names from the table
|
||||||
|
columns = []
|
||||||
|
|
||||||
|
if self.ap.persistence_mgr.db.name == 'postgresql':
|
||||||
|
result = await self.ap.persistence_mgr.execute_async(
|
||||||
|
sqlalchemy.text(
|
||||||
|
"SELECT column_name FROM information_schema.columns WHERE table_name = 'knowledge_bases';"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
all_result = result.fetchall()
|
||||||
|
columns = [row[0] for row in all_result]
|
||||||
|
else:
|
||||||
|
result = await self.ap.persistence_mgr.execute_async(sqlalchemy.text('PRAGMA table_info(knowledge_bases);'))
|
||||||
|
all_result = result.fetchall()
|
||||||
|
columns = [row[1] for row in all_result]
|
||||||
|
|
||||||
|
# Check and add updated_at column
|
||||||
|
if 'updated_at' not in columns:
|
||||||
|
if self.ap.persistence_mgr.db.name == 'postgresql':
|
||||||
|
await self.ap.persistence_mgr.execute_async(
|
||||||
|
sqlalchemy.text(
|
||||||
|
'ALTER TABLE knowledge_bases ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# SQLite doesn't support DEFAULT CURRENT_TIMESTAMP in ALTER TABLE
|
||||||
|
# Add column without default first
|
||||||
|
await self.ap.persistence_mgr.execute_async(
|
||||||
|
sqlalchemy.text('ALTER TABLE knowledge_bases ADD COLUMN updated_at DATETIME')
|
||||||
|
)
|
||||||
|
|
||||||
|
# Set initial updated_at values to created_at for existing records
|
||||||
|
await self.ap.persistence_mgr.execute_async(
|
||||||
|
sqlalchemy.text('UPDATE knowledge_bases SET updated_at = created_at WHERE updated_at IS NULL')
|
||||||
|
)
|
||||||
|
|
||||||
|
async def downgrade(self):
|
||||||
|
"""Downgrade"""
|
||||||
|
pass
|
||||||
@@ -2,7 +2,7 @@ import langbot
|
|||||||
|
|
||||||
semantic_version = f'v{langbot.__version__}'
|
semantic_version = f'v{langbot.__version__}'
|
||||||
|
|
||||||
required_database_version = 12
|
required_database_version = 13
|
||||||
"""Tag the version of the database schema, used to check if the database needs to be migrated"""
|
"""Tag the version of the database schema, used to check if the database needs to be migrated"""
|
||||||
|
|
||||||
debug_mode = False
|
debug_mode = False
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ export interface KnowledgeBase {
|
|||||||
description: string;
|
description: string;
|
||||||
embedding_model_uuid: string;
|
embedding_model_uuid: string;
|
||||||
created_at?: string;
|
created_at?: string;
|
||||||
|
updated_at?: string;
|
||||||
top_k: number;
|
top_k: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user