70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
|
|
#!/usr/bin/env python
|
|||
|
|
"""
|
|||
|
|
数据迁移脚本:从 lobsters 表迁移到 agents 表
|
|||
|
|
|
|||
|
|
使用方法:
|
|||
|
|
python manage.py migrate_data
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from django.core.management.base import BaseCommand
|
|||
|
|
from lobsters.models import Lobster, LobsterDiary
|
|||
|
|
from agents.models import Agent, AgentDiary
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Command(BaseCommand):
|
|||
|
|
help = '从 lobsters 表迁移数据到 agents 表'
|
|||
|
|
|
|||
|
|
def handle(self, *args, **kwargs):
|
|||
|
|
self.stdout.write('🚀 开始数据迁移...\n')
|
|||
|
|
|
|||
|
|
# 迁移 Lobster → Agent
|
|||
|
|
self.stdout.write('📊 迁移 Lobster 数据...')
|
|||
|
|
lobsters = Lobster.objects.all()
|
|||
|
|
agent_count = 0
|
|||
|
|
|
|||
|
|
for lobster in lobsters:
|
|||
|
|
Agent.objects.update_or_create(
|
|||
|
|
id=lobster.id,
|
|||
|
|
defaults={
|
|||
|
|
'name': lobster.name,
|
|||
|
|
'emoji': lobster.emoji,
|
|||
|
|
'port': lobster.port,
|
|||
|
|
'specialty': lobster.specialty,
|
|||
|
|
'container': lobster.container,
|
|||
|
|
'app_name': lobster.app_name,
|
|||
|
|
'app_id': lobster.app_id,
|
|||
|
|
'workspace': lobster.workspace,
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
agent_count += 1
|
|||
|
|
|
|||
|
|
self.stdout.write(self.style.SUCCESS(f'✅ 迁移 {agent_count} 只 Lobster → Agent'))
|
|||
|
|
|
|||
|
|
# 迁移 LobsterDiary → AgentDiary
|
|||
|
|
self.stdout.write('\n📝 迁移 Diary 数据...')
|
|||
|
|
diaries = LobsterDiary.objects.all()
|
|||
|
|
diary_count = 0
|
|||
|
|
|
|||
|
|
for diary in diaries:
|
|||
|
|
AgentDiary.objects.update_or_create(
|
|||
|
|
id=diary.id,
|
|||
|
|
defaults={
|
|||
|
|
'agent_id': diary.lobster_id,
|
|||
|
|
'date': diary.date,
|
|||
|
|
'title': diary.title,
|
|||
|
|
'content': diary.content,
|
|||
|
|
'category': diary.category,
|
|||
|
|
'tags': diary.tags,
|
|||
|
|
'embedding': diary.embedding,
|
|||
|
|
'embedding_model': diary.embedding_model,
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
diary_count += 1
|
|||
|
|
|
|||
|
|
self.stdout.write(self.style.SUCCESS(f'✅ 迁移 {diary_count} 篇 Diary'))
|
|||
|
|
|
|||
|
|
# 统计
|
|||
|
|
self.stdout.write(self.style.SUCCESS(f'\n🎉 迁移完成!'))
|
|||
|
|
self.stdout.write(f' Agents: {Agent.objects.count()}')
|
|||
|
|
self.stdout.write(f' AgentDiaries: {AgentDiary.objects.count()}')
|