Fix metadata config (#14480)

### What problem does this PR solve?

Fix metadata config

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
Wang Qi
2026-04-29 21:09:54 +08:00
committed by GitHub
parent d4147efc66
commit 5018459112
5 changed files with 14 additions and 169 deletions

View File

@@ -650,25 +650,8 @@ def get_auto_metadata(dataset_id: str, tenant_id: str):
kb = KnowledgebaseService.get_or_none(id=dataset_id, tenant_id=tenant_id)
if kb is None:
return False, f"User '{tenant_id}' lacks permission for dataset '{dataset_id}'"
parser_cfg = kb.parser_config or {}
metadata = parser_cfg.get("metadata") or []
enabled = parser_cfg.get("enable_metadata", bool(metadata))
# Normalize to AutoMetadataConfig-like JSON
fields = []
for f in metadata:
if not isinstance(f, dict):
continue
fields.append(
{
"name": f.get("name", ""),
"type": f.get("type", ""),
"description": f.get("description"),
"examples": f.get("examples"),
"restrict_values": f.get("restrict_values", False),
}
)
return True, {"enabled": enabled, "fields": fields}
return True, {"metadata": parser_cfg.get("metadata") or [], "built_in_metadata": parser_cfg.get("built_in_metadata") or []}
async def update_auto_metadata(dataset_id: str, tenant_id: str, cfg: dict):
@@ -685,24 +668,13 @@ async def update_auto_metadata(dataset_id: str, tenant_id: str, cfg: dict):
return False, f"User '{tenant_id}' lacks permission for dataset '{dataset_id}'"
parser_cfg = kb.parser_config or {}
fields = []
for f in cfg.get("fields", []):
fields.append(
{
"name": f.get("name", ""),
"type": f.get("type", ""),
"description": f.get("description"),
"examples": f.get("examples"),
"restrict_values": f.get("restrict_values", False),
}
)
parser_cfg["metadata"] = fields
parser_cfg["enable_metadata"] = cfg.get("enabled", True)
parser_cfg["metadata"] = cfg.get("metadata")
parser_cfg["built_in_metadata"] = cfg.get("built_in_metadata")
if not KnowledgebaseService.update_by_id(kb.id, {"parser_config": parser_cfg}):
return False, "Update auto-metadata error.(Database error)"
return True, {"enabled": parser_cfg["enable_metadata"], "fields": fields}
return True, cfg
def delete_tags(dataset_id: str, tenant_id: str, tags: list[str]):

View File

@@ -364,18 +364,17 @@ class ParentChildConfig(Base):
class AutoMetadataField(Base):
"""Schema for a single auto-metadata field configuration."""
name: Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, max_length=255), Field(...)]
type: Annotated[Literal["string", "list", "time"], Field(...)]
key: Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, max_length=255), Field(...)]
type: Annotated[Literal["string", "list", "time", "number"], Field(...)]
description: Annotated[str | None, Field(default=None, max_length=65535)]
examples: Annotated[list[str] | None, Field(default=None)]
restrict_values: Annotated[bool, Field(default=False)]
enum: Annotated[list[str] | None, Field(default=None)]
class AutoMetadataConfig(Base):
"""Top-level auto-metadata configuration attached to a dataset."""
enabled: Annotated[bool, Field(default=True)]
fields: Annotated[list[AutoMetadataField], Field(default_factory=list)]
metadata: Annotated[list[AutoMetadataField], Field(default_factory=list)]
built_in_metadata: Annotated[list[AutoMetadataField], Field(default_factory=list)]
class ParserConfig(Base):