Files
chat/README.md

375 lines
7.1 KiB
Markdown
Raw Permalink Normal View History

2026-04-25 16:36:34 +08:00
# Sales Chat Plugin for Tailchat
销售邀请追踪系统 - Tailchat 官方插件
## 功能特性
**邀请追踪**
- 创建邀请链接
- 生成二维码
- 点击/扫码/加入统计
- 邀请码管理
**数据统计**
- 个人业绩统计
- 团队排行榜
- 趋势分析
- 转化率追踪
**管理功能**
- 用户管理
- 群组管理
- 踢人/销户
- 权限控制
## 快速开始
### 1. 环境要求
- Node.js >= 18
- MongoDB >= 6
- Redis >= 6
- pnpm >= 8
### 2. 安装依赖
```bash
cd /Users/sion/Desktop/projects/tailchat-sales
pnpm install
```
### 3. 配置环境变量
```bash
# 复制配置文件
cp server/.env.example server/.env
# 编辑配置
vim server/.env
```
关键配置:
```env
MONGO_URL=mongodb://localhost:27017/tailchat
REDIS_URL=redis://localhost:6379
JWT_SECRET=your-secret-key
INVITE_BASE_URL=http://localhost:11000
```
### 4. 启动开发环境
```bash
# 启动 Tailchat
cd server
pnpm dev
```
### 5. 运行测试
```bash
# 运行集成测试
./tests/integration_test.sh
```
## API 文档
### 邀请管理
#### 创建邀请
```http
POST /api/plugin/com.msgbyte.saleschat/invite/create
Authorization: Bearer <token>
Content-Type: application/json
{
"groupId": "group-id",
"expiresIn": 7
}
```
#### 获取我的邀请列表
```http
GET /api/plugin/com.msgbyte.saleschat/invite/my
Authorization: Bearer <token>
```
#### 获取邀请详情
```http
GET /api/plugin/com.msgbyte.saleschat/invite/:code
```
#### 获取邀请统计
```http
GET /api/plugin/com.msgbyte.saleschat/invite/:code/stats
Authorization: Bearer <token>
```
#### 停用邀请
```http
POST /api/plugin/com.msgbyte.saleschat/invite/:code/deactivate
Authorization: Bearer <token>
```
#### 通过邀请加入
```http
POST /api/plugin/com.msgbyte.saleschat/invite/join
Authorization: Bearer <token>
Content-Type: application/json
{
"code": "invite-code"
}
```
### 数据统计
#### 获取我的统计
```http
GET /api/plugin/com.msgbyte.saleschat/stats/my
Authorization: Bearer <token>
```
#### 获取团队统计
```http
GET /api/plugin/com.msgbyte.saleschat/stats/team
Authorization: Bearer <token>
```
#### 获取排行榜
```http
GET /api/plugin/com.msgbyte.saleschat/stats/ranking
Authorization: Bearer <token>
```
### 管理功能
#### 踢出用户
```http
POST /api/plugin/com.msgbyte.saleschat/admin/kick
Authorization: Bearer <admin-token>
Content-Type: application/json
{
"groupId": "group-id",
"userId": "user-id",
"reason": "违规操作"
}
```
#### 删除用户
```http
POST /api/plugin/com.msgbyte.saleschat/admin/delete
Authorization: Bearer <super-admin-token>
Content-Type: application/json
{
"userId": "user-id",
"type": "soft",
"reason": "违规操作"
}
```
## 数据库结构
### sales_invites邀请表
```javascript
{
code: String, // 邀请码
salesId: ObjectId, // 销售ID
groupId: ObjectId, // 群组ID
link: String, // 邀请链接
qrCodeUrl: String, // 二维码URL
createdAt: Date, // 创建时间
expiresAt: Date, // 过期时间
clickCount: Number, // 点击次数
scanCount: Number, // 扫码次数
joinCount: Number, // 加入次数
status: String // 状态
}
```
### sales_stats统计表
```javascript
{
salesId: ObjectId, // 销售ID
date: Date, // 日期
period: String, // 周期daily/weekly/monthly
invitesCreated: Number, // 创建邀请数
joins: Number, // 加入数
conversions: Number, // 转化数
revenue: Number // 收入
}
```
### access_logs访问日志
```javascript
{
inviteCode: String, // 邀请码
visitorId: String, // 访客ID
accessType: String, // 访问类型click/scan/join
timestamp: Date, // 时间戳
ipAddress: String, // IP地址
userAgent: String // User Agent
}
```
## 部署
### Docker 部署
```bash
# 构建镜像
docker-compose build
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f tailchat
# 停止服务
docker-compose down
```
### 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| MONGO_URL | MongoDB 连接串 | mongodb://localhost:27017/tailchat |
| REDIS_URL | Redis 连接串 | redis://localhost:6379 |
| JWT_SECRET | JWT 密钥 | - |
| INVITE_BASE_URL | 邀请基础URL | http://localhost:11000 |
| ADMIN_USERNAME | 管理员用户名 | admin |
| ADMIN_PASSWORD | 管理员密码 | admin123 |
## 迁移指南
### 从独立服务迁移
1. **导出数据**
```bash
# 从原项目导出数据
cd /Users/sion/Desktop/projects/sales-chat/backend
node scripts/export-data.js > data-export.json
```
2. **导入数据**
```bash
# 导入到 Tailchat 数据库
cd /Users/sion/Desktop/projects/tailchat-sales/server
node scripts/import-data.js data-export.json
```
3. **更新前端配置**
```bash
# 修改 API 路径
# /api/invite/* → /api/plugin/com.msgbyte.saleschat/invite/*
# /api/stats/* → /api/plugin/com.msgbyte.saleschat/stats/*
```
4. **下线旧服务**
```bash
# 停止独立服务
pm2 stop sales-chat-backend
# 启动 Tailchat
docker-compose up -d
```
## 客户端
### Flutter 移动端
独立的 Flutter 应用,支持 iOS / Android / Web。
```bash
# 进入 Flutter 客户端目录
cd client/flutter
# 安装依赖
flutter pub get
# 运行应用
flutter run
# 构建 APK
flutter build apk
```
详见: [client/flutter/README.md](client/flutter/README.md)
### Tailchat Web
集成在 Tailchat Web 中的插件界面。
```bash
# 启动 Tailchat Web 开发环境
cd client/web
pnpm dev
```
## 开发
### 项目结构
```
tailchat-sales/
├── server/ # 后端服务
│ └── plugins/com.msgbyte.saleschat/ # 销售聊天插件
│ ├── package.json
│ ├── services/
│ │ ├── index.ts
│ │ ├── invite.service.ts
│ │ ├── stats.service.ts
│ │ └── admin.service.ts
│ ├── models/
│ └── test/
├── client/ # 客户端
│ ├── flutter/ # Flutter 独立应用 ⭐
│ │ ├── lib/
│ │ ├── android/
│ │ ├── ios/
│ │ └── web/
│ ├── web/ # Tailchat Web
│ ├── mobile/ # Tailchat Mobile (RN)
│ └── desktop/ # Tailchat Desktop
└── tests/ # 集成测试
```
### 添加新功能
1.`services/` 创建新服务
2.`models/` 创建数据模型
3.`services/index.ts` 注册服务
4. 编写测试
## 故障排除
### 插件加载失败
- 检查 `package.json` 依赖
- 验证服务名称格式
- 查看 Tailchat 日志
### API 404 错误
- 确认插件已加载
- 检查路由注册
- 验证权限配置
### 数据库连接失败
- 检查 MongoDB 运行状态
- 验证连接字符串
- 检查网络配置
## 贡献
欢迎提交 Issue 和 Pull Request
## 许可证
MIT
## 联系方式
- 原项目: `/Users/sion/Desktop/projects/sales-chat/`
- Tailchat: https://github.com/msgbyte/tailchat
- 文档: https://tailchat.msgbyte.com