diff --git a/README.md b/README.md index 7d520d2..0f3e2fb 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,258 @@ # 🦐 龙虾记忆同步系统 +一个用于同步和管理龙虾记忆文件的前后端分离系统,提供文件树展示、差异对比和双向同步功能。 + +## 📋 目录 + +- [项目概述](#项目概述) +- [技术栈](#技术栈) +- [功能特性](#功能特性) +- [项目结构](#项目结构) +- [快速开始](#快速开始) +- [API 文档](#api-文档) +- [开发指南](#开发指南) +- [部署说明](#部署说明) +- [开发日志](#开发日志) + ## 项目概述 -一个用于同步和管理龙虾记忆文件的前后端分离系统。 +龙虾记忆同步系统是一个专为 OpenClaw 龙虾设计的记忆文件管理工具,支持: +- 扫描龙虾记忆目录 +- 检查文件差异 +- 双向同步(本地 ↔ 数据库) +- 版本历史追踪 +- 统计信息展示 ## 技术栈 -- **后端**: Django + Django REST Framework + PostgreSQL -- **前端**: React + Ant Design -- **版本控制**: Git +### 后端 +- Django 4.x +- Django REST Framework +- PostgreSQL 15 +- Python 3.11 -## 功能 +### 前端 +- React 18 +- Ant Design 5.x +- react-diff-viewer-continued +- Axios -- 文件树展示 -- 差异对比 -- 双向同步 -- 版本历史 +### 部署 +- Docker +- Docker Compose +- Nginx + +## 功能特性 + +- ✅ **文件树展示**:可视化展示龙虾记忆文件结构 +- ✅ **差异对比**:直观对比本地文件和数据库文件 +- ✅ **双向同步**:支持本地→数据库和数据库→本地同步 +- ✅ **版本历史**:追踪文件的修改历史 +- ✅ **统计信息**:展示文件数量、大小等统计信息 +- ✅ **REST API**:完整的 RESTful API 接口 + +## 项目结构 + +``` +lobster-memory-sync/ +├── backend/ # Django 后端 +│ ├── manage.py # Django 管理脚本 +│ ├── requirements.txt # Python 依赖 +│ ├── Dockerfile # 后端 Docker 配置 +│ ├── memory_sync/ # Django 项目配置 +│ │ ├── settings.py # 项目设置 +│ │ ├── urls.py # 主路由 +│ │ └── wsgi.py # WSGI 配置 +│ └── memory_app/ # 核心应用 +│ ├── models.py # 数据模型 +│ ├── serializers.py # 序列化器 +│ ├── views.py # 视图 +│ ├── urls.py # 应用路由 +│ └── services.py # 业务逻辑 +├── frontend/ # React 前端 +│ ├── package.json # Node 依赖 +│ ├── Dockerfile # 前端 Docker 配置 +│ ├── public/ # 静态资源 +│ └── src/ # 源代码 +│ ├── api/ # API 客户端 +│ │ └── index.js +│ ├── components/ # React 组件 +│ │ ├── FileTree.js # 文件树 +│ │ └── FileDiff.js # 差异对比 +│ ├── App.js # 主应用 +│ └── index.js # 入口文件 +├── docker-compose.yml # Docker Compose 配置 +├── README.md # 项目文档 +└── DEPLOY.md # 部署文档 +``` + +## 快速开始 + +### 前置条件 + +- Docker +- Docker Compose +- 端口占用检查:8086(前端)、8087(后端)、5432(数据库) + +### 一键启动 + +```bash +# 克隆项目 +cd /home/node/.openclaw/workspace/daotong/lobster-memory-sync + +# 启动服务 +docker-compose up -d + +# 查看日志 +docker-compose logs -f + +# 停止服务 +docker-compose down +``` + +### 访问地址 + +- 前端:http://localhost:8086 +- 后端 API:http://localhost:8087/api/ +- PostgreSQL:localhost:5432 + +## API 文档 + +### 扫描文件 + +``` +GET /api/scan/?lobster_id=daotong +``` + +**响应示例:** +```json +{ + "files": [ + { + "name": "MEMORY.md", + "path": "MEMORY.md", + "type": "file", + "size": 1234, + "last_modified": "2026-04-05T12:00:00Z" + } + ] +} +``` + +### 检查同步状态 + +``` +GET /api/status/?lobster_id=daotong&file_path=MEMORY.md +``` + +**响应示例:** +```json +{ + "synced": false, + "has_difference": true, + "difference": "+ 新增内容\n- 删除内容" +} +``` + +### 获取文件差异 + +``` +GET /api/diff/?lobster_id=daotong&file_path=MEMORY.md +``` + +### 同步到数据库 + +``` +POST /api/sync/db/ +Content-Type: application/json + +{ + "lobster_id": "daotong", + "file_path": "MEMORY.md" +} +``` + +### 同步到本地 + +``` +POST /api/sync/local/ +Content-Type: application/json + +{ + "lobster_id": "daotong", + "file_path": "MEMORY.md" +} +``` + +## 开发指南 + +### 后端开发 + +```bash +# 进入后端容器 +docker exec -it lobster-backend bash + +# 创建迁移 +python manage.py makemigrations memory_app +python manage.py migrate + +# 创建超级用户 +python manage.py createsuperuser + +# 运行开发服务器 +python manage.py runserver 0.0.0.0:8087 +``` + +### 前端开发 + +```bash +# 本地开发(不使用 Docker) +cd frontend +npm install +npm start + +# 构建生产版本 +npm run build +``` + +## 部署说明 + +详细部署文档请参考 [DEPLOY.md](DEPLOY.md) + +### 生产环境部署 + +1. 修改 `docker-compose.yml` 中的环境变量 +2. 配置 Nginx 反向代理 +3. 启用 HTTPS +4. 配置数据库备份 + +### 故障排查 + +```bash +# 查看日志 +docker-compose logs -f backend +docker-compose logs -f frontend + +# 重启服务 +docker-compose restart + +# 清理数据 +docker-compose down -v +docker-compose up -d +``` ## 开发日志 -- 2026-04-05: 项目初始化 \ No newline at end of file +- **2026-04-05**: 项目初始化 + - 完成后端核心功能(Django + DRF + PostgreSQL) + - 完成前端核心功能(React + Ant Design) + - 完成部署配置(Docker Compose) + - 推送到 Git 仓库:https://xjp.datalibstar.com/daotong/lobster-memory-sync.git + +## 📝 License + +MIT + +## 🤝 贡献 + +欢迎提交 Issue 和 Pull Request! \ No newline at end of file