fix: widen knowledge source effective date

This commit is contained in:
2026-05-16 16:35:45 +08:00
parent 98101f528a
commit 6b509d8c0b
2 changed files with 46 additions and 1 deletions
@@ -19,7 +19,7 @@ class KnowledgeBaseDocument(Base):
status: Mapped[str] = mapped_column(String(32), default="indexed")
source_type: Mapped[Optional[str]] = mapped_column(String(64), nullable=True, index=True)
authority: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
effective_date: Mapped[Optional[str]] = mapped_column(String(32), nullable=True)
effective_date: Mapped[Optional[str]] = mapped_column(String(128), nullable=True)
region: Mapped[Optional[str]] = mapped_column(String(120), nullable=True, index=True)
tags_json: Mapped[Optional[list[str]]] = mapped_column(JSON, nullable=True)
content_excerpt: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
@@ -0,0 +1,45 @@
"""widen knowledge document effective date metadata"""
from alembic import op
import sqlalchemy as sa
revision = "20260516_0021"
down_revision = "20260513_0020"
branch_labels = None
depends_on = None
def _table_names(inspector: sa.Inspector) -> set[str]:
return set(inspector.get_table_names())
def _column_by_name(inspector: sa.Inspector, table_name: str, column_name: str):
for column in inspector.get_columns(table_name):
if column["name"] == column_name:
return column
return None
def upgrade() -> None:
bind = op.get_bind()
inspector = sa.inspect(bind)
if "knowledge_base_documents" not in _table_names(inspector):
return
column = _column_by_name(inspector, "knowledge_base_documents", "effective_date")
if column is None:
return
current_length = getattr(column["type"], "length", None)
if current_length is None or current_length < 128:
op.alter_column(
"knowledge_base_documents",
"effective_date",
existing_type=sa.String(length=current_length or 32),
type_=sa.String(length=128),
existing_nullable=True,
)
def downgrade() -> None:
# Keep the wider column on downgrade so already absorbed multi-source metadata is not truncated.
return