feat(memory): make config_id optional and improve configuration validation

- Make config_id optional in UserInput and Write_UserInput schemas
- Update write_memory and read_memory method signatures to accept Optional[str] for config_id
- Implement automatic config retrieval from end_user connection when config_id is not provided
- Add explicit error handling for missing memory configurations with descriptive error messages
- Improve emotion_controller to validate config_id using MemoryConfigService when provided
- Fallback to get_end_user_connected_config when config_id is None
- Distinguish between specific "no configuration found" errors and other exceptions for better debugging
- Ensures users can operate without explicitly providing config_id if they have a connected configuration
This commit is contained in:
Ke Sun
2025-12-24 16:06:54 +08:00
parent b515e76efb
commit 0fff23d2a2
3 changed files with 35 additions and 10 deletions

View File

@@ -210,13 +210,28 @@ async def get_emotion_suggestions(
"""
try:
# 验证 config_id如果提供
# 获取终端用户关联的配置
config_id = request.config_id
if config_id is not None:
from app.controllers.memory_agent_controller import validate_config_id
if config_id is None:
# 如果没有提供 config_id尝试获取用户关联的配置
try:
config_id = validate_config_id(config_id, db)
from app.services.memory_agent_service import (
get_end_user_connected_config,
)
connected_config = get_end_user_connected_config(request.group_id, db)
config_id = connected_config.get("memory_config_id")
except ValueError as e:
return fail(BizCode.INVALID_PARAMETER, "配置ID无效", str(e))
return fail(BizCode.INVALID_PARAMETER, "无法获取用户关联的配置", str(e))
else:
# 如果提供了 config_id验证其有效性
from app.services.memory_config_service import MemoryConfigService
try:
config_service = MemoryConfigService(db)
config = config_service.get_config_by_id(config_id)
if not config:
return fail(BizCode.INVALID_PARAMETER, "配置ID无效", f"配置 {config_id} 不存在")
except Exception as e:
return fail(BizCode.INVALID_PARAMETER, "配置ID验证失败", str(e))
api_logger.info(
f"用户 {current_user.username} 请求获取个性化情绪建议",