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)