fix diff
All checks were successful
Build and Deploy Backend / build-and-deploy (push) Successful in 2m37s
All checks were successful
Build and Deploy Backend / build-and-deploy (push) Successful in 2m37s
This commit is contained in:
parent
35e4ef2256
commit
4736f63040
@ -73,7 +73,7 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
UserDevice.objects.filter(
|
UserDevice.objects.filter(
|
||||||
user=request.user,
|
user=request.user,
|
||||||
is_active=True
|
is_active=True
|
||||||
).select_related('device', 'device__device_type', 'spirit', 'role_memory')
|
).select_related('device', 'device__device_type', 'spirit', 'role_memory', 'role_memory__device_type')
|
||||||
.order_by('-bind_time')[:1]
|
.order_by('-bind_time')[:1]
|
||||||
)
|
)
|
||||||
if not devices:
|
if not devices:
|
||||||
@ -132,7 +132,7 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
if existing and existing.user != request.user:
|
if existing and existing.user != request.user:
|
||||||
return error(code=ErrorCode.DEVICE_ALREADY_BOUND, message='设备已被其他用户绑定')
|
return error(code=ErrorCode.DEVICE_ALREADY_BOUND, message='设备已被其他用户绑定')
|
||||||
|
|
||||||
# 创建角色记忆
|
# 创建角色记忆(始终创建新的)
|
||||||
role_memory = None
|
role_memory = None
|
||||||
if device.device_type:
|
if device.device_type:
|
||||||
role_memory = RoleMemory.objects.create(
|
role_memory = RoleMemory.objects.create(
|
||||||
@ -175,7 +175,7 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
user_devices = UserDevice.objects.filter(
|
user_devices = UserDevice.objects.filter(
|
||||||
user=request.user,
|
user=request.user,
|
||||||
is_active=True
|
is_active=True
|
||||||
).select_related('device', 'device__device_type', 'spirit', 'role_memory')
|
).select_related('device', 'device__device_type', 'spirit', 'role_memory', 'role_memory__device_type')
|
||||||
|
|
||||||
serializer = UserDeviceSerializer(user_devices, many=True)
|
serializer = UserDeviceSerializer(user_devices, many=True)
|
||||||
return success(data=serializer.data)
|
return success(data=serializer.data)
|
||||||
@ -356,9 +356,9 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
# ==================== 角色记忆相关端点 ====================
|
# ==================== 角色记忆相关端点 ====================
|
||||||
|
|
||||||
@action(detail=True, methods=['get'], url_path='role-memory')
|
@action(detail=True, methods=['get'], url_path='role-memory')
|
||||||
def get_role_memory(self, request, pk=None):
|
def role_memory_detail(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
获取设备的角色记忆
|
获取当前设备的角色记忆
|
||||||
GET /api/v1/devices/{user_device_id}/role-memory/
|
GET /api/v1/devices/{user_device_id}/role-memory/
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
@ -369,12 +369,12 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
return error(code=ErrorCode.DEVICE_NOT_FOUND, message='绑定记录不存在')
|
return error(code=ErrorCode.DEVICE_NOT_FOUND, message='绑定记录不存在')
|
||||||
|
|
||||||
if not user_device.role_memory:
|
if not user_device.role_memory:
|
||||||
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='角色记忆不存在')
|
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='该设备暂无角色记忆')
|
||||||
|
|
||||||
return success(data=RoleMemorySerializer(user_device.role_memory).data)
|
return success(data=RoleMemorySerializer(user_device.role_memory).data)
|
||||||
|
|
||||||
@action(detail=True, methods=['put'], url_path='role-memory/settings')
|
@action(detail=True, methods=['put'], url_path='role-memory/settings')
|
||||||
def update_role_memory_settings(self, request, pk=None):
|
def role_memory_settings(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
更新角色记忆-设备设置
|
更新角色记忆-设备设置
|
||||||
PUT /api/v1/devices/{user_device_id}/role-memory/settings/
|
PUT /api/v1/devices/{user_device_id}/role-memory/settings/
|
||||||
@ -387,7 +387,7 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
return error(code=ErrorCode.DEVICE_NOT_FOUND, message='绑定记录不存在')
|
return error(code=ErrorCode.DEVICE_NOT_FOUND, message='绑定记录不存在')
|
||||||
|
|
||||||
if not user_device.role_memory:
|
if not user_device.role_memory:
|
||||||
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='角色记忆不存在')
|
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='该设备暂无角色记忆')
|
||||||
|
|
||||||
serializer = RoleMemorySettingsUpdateSerializer(data=request.data)
|
serializer = RoleMemorySettingsUpdateSerializer(data=request.data)
|
||||||
if not serializer.is_valid():
|
if not serializer.is_valid():
|
||||||
@ -401,9 +401,9 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
return success(data=RoleMemorySerializer(rm).data, message='设置已保存')
|
return success(data=RoleMemorySerializer(rm).data, message='设置已保存')
|
||||||
|
|
||||||
@action(detail=True, methods=['put'], url_path='role-memory/agent')
|
@action(detail=True, methods=['put'], url_path='role-memory/agent')
|
||||||
def update_role_memory_agent(self, request, pk=None):
|
def role_memory_agent(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
更新角色记忆-Agent信息(提示词、音色)
|
更新角色记忆-Agent信息
|
||||||
PUT /api/v1/devices/{user_device_id}/role-memory/agent/
|
PUT /api/v1/devices/{user_device_id}/role-memory/agent/
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
@ -414,7 +414,7 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
return error(code=ErrorCode.DEVICE_NOT_FOUND, message='绑定记录不存在')
|
return error(code=ErrorCode.DEVICE_NOT_FOUND, message='绑定记录不存在')
|
||||||
|
|
||||||
if not user_device.role_memory:
|
if not user_device.role_memory:
|
||||||
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='角色记忆不存在')
|
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='该设备暂无角色记忆')
|
||||||
|
|
||||||
serializer = RoleMemoryAgentUpdateSerializer(data=request.data)
|
serializer = RoleMemoryAgentUpdateSerializer(data=request.data)
|
||||||
if not serializer.is_valid():
|
if not serializer.is_valid():
|
||||||
@ -428,7 +428,7 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
return success(data=RoleMemorySerializer(rm).data, message='Agent信息已更新')
|
return success(data=RoleMemorySerializer(rm).data, message='Agent信息已更新')
|
||||||
|
|
||||||
@action(detail=True, methods=['put'], url_path='role-memory/memory')
|
@action(detail=True, methods=['put'], url_path='role-memory/memory')
|
||||||
def update_role_memory_summary(self, request, pk=None):
|
def role_memory_summary(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
更新角色记忆-聊天记忆摘要
|
更新角色记忆-聊天记忆摘要
|
||||||
PUT /api/v1/devices/{user_device_id}/role-memory/memory/
|
PUT /api/v1/devices/{user_device_id}/role-memory/memory/
|
||||||
@ -441,17 +441,16 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
return error(code=ErrorCode.DEVICE_NOT_FOUND, message='绑定记录不存在')
|
return error(code=ErrorCode.DEVICE_NOT_FOUND, message='绑定记录不存在')
|
||||||
|
|
||||||
if not user_device.role_memory:
|
if not user_device.role_memory:
|
||||||
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='角色记忆不存在')
|
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='该设备暂无角色记忆')
|
||||||
|
|
||||||
serializer = RoleMemoryMemoryUpdateSerializer(data=request.data)
|
serializer = RoleMemoryMemoryUpdateSerializer(data=request.data)
|
||||||
if not serializer.is_valid():
|
if not serializer.is_valid():
|
||||||
return error(message=str(serializer.errors))
|
return error(message=str(serializer.errors))
|
||||||
|
|
||||||
rm = user_device.role_memory
|
user_device.role_memory.memory_summary = serializer.validated_data['memory_summary']
|
||||||
rm.memory_summary = serializer.validated_data['memory_summary']
|
user_device.role_memory.save(update_fields=['memory_summary', 'updated_at'])
|
||||||
rm.save(update_fields=['memory_summary', 'updated_at'])
|
|
||||||
|
|
||||||
return success(data=RoleMemorySerializer(rm).data, message='记忆摘要已更新')
|
return success(message='聊天记忆已更新')
|
||||||
|
|
||||||
@action(detail=False, methods=['get'], url_path='role-memories')
|
@action(detail=False, methods=['get'], url_path='role-memories')
|
||||||
def role_memory_list(self, request):
|
def role_memory_list(self, request):
|
||||||
@ -459,18 +458,13 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
获取角色记忆列表
|
获取角色记忆列表
|
||||||
GET /api/v1/devices/role-memories/?device_type_id=1&is_bound=false
|
GET /api/v1/devices/role-memories/?device_type_id=1&is_bound=false
|
||||||
"""
|
"""
|
||||||
qs = RoleMemory.objects.filter(
|
qs = RoleMemory.objects.filter(user=request.user).select_related('device_type')
|
||||||
user=request.user
|
|
||||||
).select_related('device_type').order_by('-created_at')
|
|
||||||
|
|
||||||
device_type_id = request.query_params.get('device_type_id')
|
device_type_id = request.query_params.get('device_type_id')
|
||||||
if device_type_id:
|
if device_type_id:
|
||||||
qs = qs.filter(device_type_id=device_type_id)
|
qs = qs.filter(device_type_id=device_type_id)
|
||||||
|
|
||||||
is_bound = request.query_params.get('is_bound')
|
is_bound = request.query_params.get('is_bound')
|
||||||
if is_bound is not None:
|
if is_bound is not None:
|
||||||
qs = qs.filter(is_bound=is_bound.lower() == 'true')
|
qs = qs.filter(is_bound=is_bound.lower() == 'true')
|
||||||
|
|
||||||
return success(data=RoleMemorySerializer(qs, many=True).data)
|
return success(data=RoleMemorySerializer(qs, many=True).data)
|
||||||
|
|
||||||
@action(detail=True, methods=['put'], url_path='switch-role-memory')
|
@action(detail=True, methods=['put'], url_path='switch-role-memory')
|
||||||
@ -489,12 +483,12 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
|
|
||||||
role_memory_id = request.data.get('role_memory_id')
|
role_memory_id = request.data.get('role_memory_id')
|
||||||
if not role_memory_id:
|
if not role_memory_id:
|
||||||
return error(message='请指定角色记忆ID')
|
return error(message='role_memory_id 不能为空')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
new_rm = RoleMemory.objects.get(id=role_memory_id, user=request.user)
|
new_rm = RoleMemory.objects.get(id=role_memory_id, user=request.user)
|
||||||
except RoleMemory.DoesNotExist:
|
except RoleMemory.DoesNotExist:
|
||||||
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='角色记忆不存在')
|
return error(code=ErrorCode.ROLE_MEMORY_NOT_FOUND, message='该设备暂无角色记忆')
|
||||||
|
|
||||||
# 校验: 目标记忆必须是同一设备类型
|
# 校验: 目标记忆必须是同一设备类型
|
||||||
if user_device.device.device_type_id and new_rm.device_type_id != user_device.device.device_type_id:
|
if user_device.device.device_type_id and new_rm.device_type_id != user_device.device.device_type_id:
|
||||||
@ -504,17 +498,15 @@ class DeviceViewSet(viewsets.ViewSet):
|
|||||||
if new_rm.is_bound:
|
if new_rm.is_bound:
|
||||||
return error(code=ErrorCode.ROLE_MEMORY_ALREADY_BOUND, message='该角色记忆正在被其他设备使用')
|
return error(code=ErrorCode.ROLE_MEMORY_ALREADY_BOUND, message='该角色记忆正在被其他设备使用')
|
||||||
|
|
||||||
# 旧记忆标记闲置
|
# 执行切换:旧记忆标记闲置,新记忆标记绑定
|
||||||
old_rm = user_device.role_memory
|
old_rm = user_device.role_memory
|
||||||
if old_rm:
|
if old_rm:
|
||||||
old_rm.is_bound = False
|
old_rm.is_bound = False
|
||||||
old_rm.save(update_fields=['is_bound', 'updated_at'])
|
old_rm.save(update_fields=['is_bound', 'updated_at'])
|
||||||
|
|
||||||
# 新记忆标记绑定
|
|
||||||
new_rm.is_bound = True
|
new_rm.is_bound = True
|
||||||
new_rm.save(update_fields=['is_bound', 'updated_at'])
|
new_rm.save(update_fields=['is_bound', 'updated_at'])
|
||||||
|
|
||||||
# 更新绑定关系
|
|
||||||
user_device.role_memory = new_rm
|
user_device.role_memory = new_rm
|
||||||
user_device.save(update_fields=['role_memory'])
|
user_device.save(update_fields=['role_memory'])
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user