fix(prompt-optimizer): 修复数据模型和业务逻辑问题

- 修复PromptOptimizerSessionHistory模型中session_id外键关系错误
- 统一会话ID的使用逻辑,区分内部ID和外部session_id
- 修复服务层create_update_model_config方法参数不匹配问题
- 优化会话历史查询逻辑,确保正确的数据关联
- 修复消息创建时的会话验证和ID映射问题
- 改进Repository层的类型注解准确性
This commit is contained in:
mengyonghao
2025-12-17 17:20:05 +08:00
parent 07273e4c03
commit 3950b718cd
4 changed files with 25 additions and 11 deletions

View File

@@ -141,7 +141,6 @@ class PromptOptimizerSessionRepository:
session = PromptOptimizerSession(
tenant_id=tenant_id,
user_id=user_id,
session_id=uuid.uuid4(),
)
self.db.add(session)
self.db.commit()
@@ -172,8 +171,17 @@ class PromptOptimizerSessionRepository:
f"user_id={user_id}, session_id={session_id}")
try:
# First get the internal session ID from the session list table
session = self.db.query(PromptOptimizerSession).filter(
PromptOptimizerSession.id == session_id,
PromptOptimizerSession.user_id == user_id
).first()
if not session:
return []
history = self.db.query(PromptOptimizerSessionHistory).filter(
PromptOptimizerSessionHistory.session_id == session_id,
PromptOptimizerSessionHistory.session_id == session.id,
PromptOptimizerSessionHistory.user_id == user_id
).order_by(PromptOptimizerSessionHistory.created_at.asc()).all()
return history
@@ -195,9 +203,20 @@ class PromptOptimizerSessionRepository:
This method is a placeholder for future implementation.
"""
try:
# Get the session to ensure it exists and belongs to the user
session = self.db.query(PromptOptimizerSession).filter(
PromptOptimizerSession.id == session_id,
PromptOptimizerSession.user_id == user_id,
PromptOptimizerSession.tenant_id == tenant_id
).first()
if not session:
db_logger.error(f"Session {session_id} not found for user {user_id}")
raise ValueError(f"Session {session_id} not found for user {user_id}")
message = PromptOptimizerSessionHistory(
tenant_id=tenant_id,
session_id=session_id,
session_id=session.id,
user_id=user_id,
role=role.value,
content=content,