feat:修改nl2sql功能

This commit is contained in:
2026-09-14 10:57:48 +08:00
parent a7f9e182a4
commit 67d5cfc2b8
15 changed files with 206 additions and 54 deletions
+17 -1
View File
@@ -15,6 +15,8 @@ from config.database.mysql import get_session_factory
from config.settings import settings
from nl2sql.metadata import build_metadata_chunks
from nl2sql.milvus_collections import NL2SQL_COLLECTION
from model.base import Base
from scripts.sync_nl2sql_metadata import collect_orm_tables, merge_orm_metadata_rows
async def collect_consistency() -> dict:
@@ -29,7 +31,21 @@ async def collect_consistency() -> dict:
async with get_session_factory()() as session:
tables = [dict(row) for row in (await session.execute(table_sql, {"db": settings.mysql.database})).mappings()]
columns = [dict(row) for row in (await session.execute(column_sql, {"db": settings.mysql.database})).mappings()]
expected = len(build_metadata_chunks(tables, columns))
# 与同步脚本保持同一口径:ORM 表是唯一权威名单,数据库中存在但
# 未被 model/ 定义的表不应影响 NL2SQL 元数据一致性判断。
orm_tables = collect_orm_tables()
db_tables = {
str(row.get("TABLE_NAME") or row.get("table_name") or "").strip()
for row in tables
}
missing_tables = sorted(orm_tables - db_tables)
expected_tables, expected_columns = merge_orm_metadata_rows(
tables,
columns,
allowed_tables=orm_tables,
missing_table_objects=(Base.metadata.tables[name] for name in missing_tables),
)
expected = len(build_metadata_chunks(expected_tables, expected_columns))
rows = await client().query(
collection_name=NL2SQL_COLLECTION,
filter="is_valid == true and is_deprecated == false",