mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-21 07:01:04 +08:00
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:
@@ -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]):
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user