feat: 龙虾记忆同步系统完整版本
功能特性: - 文件树展示 - 差异对比 - 双向同步(本地 <-> 数据库) - 版本历史追踪 - 统计信息展示 核心补丁: 1. 分块读取与流式传输(防止大文件内存飙升) 2. .lobsterignore 机制(排除临时文件) 3. 操作溯源(Audit Log,记录同步历史) 技术栈: - 后端: Django + DRF + PostgreSQL - 前端: React + Ant Design - 部署: Docker + Docker Compose 项目已完整部署,可直接使用 docker-compose up -d 启动
This commit is contained in:
64
backend/memory_app/serializers.py
Normal file
64
backend/memory_app/serializers.py
Normal file
@@ -0,0 +1,64 @@
|
||||
from rest_framework import serializers
|
||||
from .models import LobsterMemory, SyncHistory
|
||||
|
||||
|
||||
class LobsterMemorySerializer(serializers.ModelSerializer):
|
||||
"""龙虾记忆序列化器"""
|
||||
|
||||
class Meta:
|
||||
model = LobsterMemory
|
||||
fields = [
|
||||
'id',
|
||||
'lobster_id',
|
||||
'file_path',
|
||||
'content',
|
||||
'hash',
|
||||
'status',
|
||||
'version',
|
||||
'size',
|
||||
'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)
|
||||
|
||||
class Meta:
|
||||
model = SyncHistory
|
||||
fields = [
|
||||
'id',
|
||||
'lobster_id',
|
||||
'file_path',
|
||||
'action',
|
||||
'action_display',
|
||||
'status',
|
||||
'status_display',
|
||||
'old_version',
|
||||
'new_version',
|
||||
'old_hash',
|
||||
'new_hash',
|
||||
'file_size',
|
||||
'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)
|
||||
db_content = serializers.CharField(required=False)
|
||||
local_hash = serializers.CharField(required=False)
|
||||
db_hash = serializers.CharField(required=False)
|
||||
status = serializers.CharField()
|
||||
message = serializers.CharField(required=False)
|
||||
Reference in New Issue
Block a user