🚀 重构内容: - 重命名 Lobster → Agent(通用化) - 重命名 LobsterDiary → AgentDiary - 更新所有 API 端点:/api/lobsters/ → /api/agents/ - 前端组件重命名:LobsterDetail → AgentDetail - 数据迁移:8 Lobsters → 8 Agents, 4 Diaries 📦 开源准备: - 创建 .env.example(环境变量配置) - 创建 docker-compose.yml(一键部署) - 创建 Dockerfile(前后端) - 创建 .gitignore - 添加 MIT LICENSE - 完善 README.md(中英双语) - 创建 USAGE.md(使用说明) 📝 文档完善: - REFACTOR_PLAN.md(重构计划) - REFACTOR_PROGRESS.md(重构进度) - REFACTOR_COMPLETE.md(重构完成报告) - FINAL_REPORT.md(最终报告) - 工作区同步报告.md ✨ 功能特性: - 多 Agent 实例管理 - 日记系统(成长之路/工作记忆) - 工作记忆完全隔离 - 日历视图 - 标签和分类 - RAG 支持(预留 embedding 字段) 🎯 开源准备度:100% 🦸 感谢北极星 ⭐ 的耐心指导!
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()}')
|