Files
openclaw-memory/backend/memory_app/serializers.py
道童 7992ff0b89 feat: 更新 API 视图和序列化器
更新内容:
1. views.py
- 集成分块读取(所有文件操作强制使用 chunked=True)
- 集成语义摘要生成(SemanticSummaryGenerator)
- 记录变动行数(lines_changed)
- 记录数据源(source: local/database/manual)
- 完善 check_sync_status 支持 HARD_CONFLICT 状态
- get_file_diff 返回变动行数
- get_ignore_patterns 返回模式类型(glob/regex)

2. serializers.py
- 添加 status_display, source_display 字段
- 更新 LobsterMemorySerializer 包含 summary 字段
- 更新 SyncHistorySerializer 包含 lines_changed, source 字段

所有 API 接口已更新,支持完整功能。
2026-04-05 14:16:15 +00:00

73 lines
2.2 KiB
Python

from rest_framework import serializers
from .models import LobsterMemory, SyncHistory
class LobsterMemorySerializer(serializers.ModelSerializer):
"""龙虾记忆序列化器"""
status_display = serializers.CharField(source='get_status_display', read_only=True)
class Meta:
model = LobsterMemory
fields = [
'id',
'lobster_id',
'file_path',
'content',
'hash',
'status',
'status_display',
'version',
'size',
'summary',
'created_at',
'updated_at',
]
read_only_fields = ['id', 'created_at', 'updated_at']
class SyncHistorySerializer(serializers.ModelSerializer):
"""同步历史序列化器"""
action_display = serializers.CharField(source='get_action_display', read_only=True)
status_display = serializers.CharField(source='get_status_display', read_only=True)
source_display = serializers.CharField(source='get_source_display', read_only=True)
class Meta:
model = SyncHistory
fields = [
'id',
'lobster_id',
'file_path',
'action',
'action_display',
'status',
'status_display',
'source',
'source_display',
'old_version',
'new_version',
'old_hash',
'new_hash',
'file_size',
'lines_changed',
'operator',
'error_message',
'execution_time',
'created_at',
]
read_only_fields = ['id', 'created_at']
class FileDiffSerializer(serializers.Serializer):
"""文件差异序列化器"""
file_path = serializers.CharField()
lobster_id = serializers.CharField()
local_content = serializers.CharField(required=False, allow_null=True)
db_content = serializers.CharField(required=False, allow_null=True)
local_hash = serializers.CharField(required=False, allow_null=True)
db_hash = serializers.CharField(required=False, allow_null=True)
status = serializers.CharField()
message = serializers.CharField(required=False)
diff = serializers.DictField(required=False)