config_id字段改成UUID,与develop校对恢复

This commit is contained in:
lixinyue
2026-01-22 21:53:15 +08:00
parent 940d3d4567
commit 9e828b1750
17 changed files with 131 additions and 178 deletions

View File

@@ -564,7 +564,7 @@ class MemoryAgentService:
# 使用 upsert 方法
repo.upsert(
end_user_id=end_user_id,
messages=message,
messages=ori_message,
aimessages=summary,
retrieved_content=retrieved_content,
search_switch=str(search_switch)

View File

@@ -139,7 +139,7 @@ class MemoryAPIService:
# Delegate to MemoryAgentService
result = await MemoryAgentService().write_memory(
end_user_id=end_user_id,
message=message,
messages=message,
config_id=config_id,
db=self.db,
storage_type=storage_type,

View File

@@ -30,9 +30,10 @@ config_logger = get_config_logger()
import uuid
def _validate_config_id(config_id):
"""Validate configuration ID format."""
"""Validate configuration ID format (supports both UUID and integer)."""
if isinstance(config_id, uuid.UUID):
return config_id
if config_id is None:
raise InvalidConfigError(
"Configuration ID cannot be None",
@@ -50,8 +51,17 @@ def _validate_config_id(config_id):
return config_id
if isinstance(config_id, str):
config_id_stripped = config_id.strip()
# Try parsing as UUID first
try:
parsed_id = int(config_id.strip())
return uuid.UUID(config_id_stripped)
except ValueError:
pass
# Fall back to integer parsing
try:
parsed_id = int(config_id_stripped)
if parsed_id <= 0:
raise InvalidConfigError(
f"Configuration ID must be positive: {parsed_id}",
@@ -61,13 +71,13 @@ def _validate_config_id(config_id):
return parsed_id
except ValueError:
raise InvalidConfigError(
f"Invalid configuration ID format: '{config_id}'",
f"Invalid configuration ID format: '{config_id}' (must be UUID or positive integer)",
field_name="config_id",
invalid_value=config_id,
)
raise InvalidConfigError(
f"Invalid type for configuration ID: expected int or str, got {type(config_id).__name__}",
f"Invalid type for configuration ID: expected UUID, int or str, got {type(config_id).__name__}",
field_name="config_id",
invalid_value=config_id,
)
@@ -113,7 +123,7 @@ class MemoryConfigService:
ConfigurationError: If validation fails
"""
start_time = time.time()
validated_config_id = _validate_config_id(config_id)
config_logger.info(
"Starting memory configuration loading",
extra={
@@ -126,27 +136,11 @@ class MemoryConfigService:
logger.info(f"Loading memory configuration from database: config_id={config_id}")
try:
# Validate config_id is UUID
if not isinstance(config_id, UUID):
if isinstance(config_id, str):
try:
config_id = UUID(config_id)
except ValueError:
raise InvalidConfigError(
f"Invalid UUID format for config_id: {config_id}",
field_name="config_id",
invalid_value=config_id,
)
else:
raise InvalidConfigError(
f"config_id must be UUID or valid UUID string, got {type(config_id).__name__}",
field_name="config_id",
invalid_value=config_id,
)
validated_config_id = _validate_config_id(config_id)
# Step 1: Get config and workspace
db_query_start = time.time()
result = MemoryConfigRepository.get_config_with_workspace(self.db, config_id)
result = MemoryConfigRepository.get_config_with_workspace(self.db, validated_config_id)
db_query_time = time.time() - db_query_start
logger.info(f"[PERF] Config+Workspace query: {db_query_time:.4f}s")
if not result:
@@ -170,7 +164,7 @@ class MemoryConfigService:
# Step 2: Validate embedding model (returns both UUID and name)
embed_start = time.time()
embedding_uuid, embedding_name = validate_embedding_model(
config_id,
validated_config_id,
memory_config.embedding_id,
self.db,
workspace.tenant_id,
@@ -187,7 +181,7 @@ class MemoryConfigService:
self.db,
workspace.tenant_id,
required=True,
config_id=config_id,
config_id=validated_config_id,
workspace_id=workspace.id,
)
llm_time = time.time() - llm_start
@@ -204,7 +198,7 @@ class MemoryConfigService:
self.db,
workspace.tenant_id,
required=False,
config_id=config_id,
config_id=validated_config_id,
workspace_id=workspace.id,
)
rerank_time = time.time() - rerank_start
@@ -262,7 +256,7 @@ class MemoryConfigService:
extra={
"operation": "load_memory_config",
"service": service_name,
"config_id": str(config_id),
"config_id": validated_config_id,
"config_name": config.config_name,
"workspace_id": str(config.workspace_id),
"load_result": "success",

View File

@@ -505,29 +505,6 @@ async def search_edges(end_user_id: Optional[str] = None) -> List[Dict[str, Any]
)
return result
async def search_entity_graph(end_user_id: Optional[str] = None) -> Dict[str, Any]:
"""搜索所有实体之间的关系网络group 维度)。"""
result = await _neo4j_connector.execute_query(
DataConfigRepository.SEARCH_FOR_ENTITY_GRAPH,
end_user_id=end_user_id,
)
# 对source_node 和 target_node 的 fact_summary进行截取只截取前三条的内容需要提取前三条“来源”
for item in result:
source_fact = item["sourceNode"]["fact_summary"]
target_fact = item["targetNode"]["fact_summary"]
# 截取前三条“来源”
item["sourceNode"]["fact_summary"] = source_fact.split("\n")[:4] if source_fact else []
item["targetNode"]["fact_summary"] = target_fact.split("\n")[:4] if target_fact else []
# 与现有返回风格保持一致,携带搜索类型、数量与详情
data = {
"search_for": "entity_graph",
"num": len(result),
"detials": result,
}
return data
async def analytics_hot_memory_tags(
db: Session,
current_user: User,