docs: update README and CLAUDE.md to v2.2.0
- Added documentation for audit tracking (IP address, invocation method). - Updated database model descriptions for enhanced WorkOrder and Conversation fields. - Documented the new UnifiedConfig system. - Reflected enhanced logging transparency for knowledge base parsing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -13,7 +13,7 @@ from sqlalchemy.orm import Session
|
||||
from ..core.database import db_manager
|
||||
from ..core.models import Conversation, WorkOrder, WorkOrderSuggestion, KnowledgeEntry
|
||||
from ..core.redis_manager import redis_manager
|
||||
from ..config.config import Config
|
||||
from src.config.unified_config import get_config
|
||||
from sqlalchemy import and_, or_, desc
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -43,11 +43,13 @@ class ConversationHistoryManager:
|
||||
work_order_id: Optional[int] = None,
|
||||
confidence_score: Optional[float] = None,
|
||||
response_time: Optional[float] = None,
|
||||
knowledge_used: Optional[List[int]] = None
|
||||
knowledge_used: Optional[List[int]] = None,
|
||||
ip_address: Optional[str] = None,
|
||||
invocation_method: Optional[str] = None
|
||||
) -> int:
|
||||
"""保存对话记录到数据库和Redis"""
|
||||
conversation_id = 0
|
||||
|
||||
|
||||
try:
|
||||
# 保存到数据库
|
||||
with db_manager.get_session() as session:
|
||||
@@ -58,12 +60,14 @@ class ConversationHistoryManager:
|
||||
confidence_score=confidence_score,
|
||||
response_time=response_time,
|
||||
knowledge_used=json.dumps(knowledge_used or [], ensure_ascii=False),
|
||||
ip_address=ip_address,
|
||||
invocation_method=invocation_method,
|
||||
timestamp=datetime.now()
|
||||
)
|
||||
session.add(conversation)
|
||||
session.commit()
|
||||
conversation_id = conversation.id
|
||||
|
||||
|
||||
# 保存到Redis缓存
|
||||
self._save_to_cache(
|
||||
user_id=user_id,
|
||||
@@ -72,7 +76,9 @@ class ConversationHistoryManager:
|
||||
assistant_response=assistant_response,
|
||||
conversation_id=conversation_id,
|
||||
confidence_score=confidence_score,
|
||||
response_time=response_time
|
||||
response_time=response_time,
|
||||
ip_address=ip_address,
|
||||
invocation_method=invocation_method
|
||||
)
|
||||
|
||||
logger.info(f"对话记录保存成功: ID={conversation_id}")
|
||||
@@ -90,16 +96,18 @@ class ConversationHistoryManager:
|
||||
assistant_response: str,
|
||||
conversation_id: int,
|
||||
confidence_score: Optional[float] = None,
|
||||
response_time: Optional[float] = None
|
||||
response_time: Optional[float] = None,
|
||||
ip_address: Optional[str] = None,
|
||||
invocation_method: Optional[str] = None
|
||||
):
|
||||
"""保存对话到Redis缓存"""
|
||||
redis_client = self._get_redis_client()
|
||||
if not redis_client:
|
||||
return
|
||||
|
||||
|
||||
try:
|
||||
cache_key = self._get_cache_key(user_id, work_order_id)
|
||||
|
||||
|
||||
# 构建对话记录
|
||||
conversation_record = {
|
||||
"id": conversation_id,
|
||||
@@ -107,7 +115,9 @@ class ConversationHistoryManager:
|
||||
"assistant_response": assistant_response,
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"confidence_score": confidence_score,
|
||||
"response_time": response_time
|
||||
"response_time": response_time,
|
||||
"ip_address": ip_address,
|
||||
"invocation_method": invocation_method
|
||||
}
|
||||
|
||||
# 添加到Redis列表
|
||||
@@ -205,6 +215,8 @@ class ConversationHistoryManager:
|
||||
"timestamp": conv.timestamp.isoformat(),
|
||||
"confidence_score": conv.confidence_score,
|
||||
"response_time": conv.response_time,
|
||||
"ip_address": conv.ip_address,
|
||||
"invocation_method": conv.invocation_method,
|
||||
"knowledge_used": json.loads(conv.knowledge_used) if conv.knowledge_used else []
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user