113 lines
3.4 KiB
Markdown
113 lines
3.4 KiB
Markdown
|
|
# Sales Chat 插件项目说明
|
|||
|
|
|
|||
|
|
## 项目信息
|
|||
|
|
- **类型**: Tailchat 插件 + Flutter 移动端
|
|||
|
|
- **位置**: `/Users/sion/Desktop/projects/tailchat-sales/`
|
|||
|
|
- **插件目录**: `server/plugins/com.msgbyte.saleschat/`
|
|||
|
|
- **推荐 Node 版本**: 18(Dockerfile 基础镜像 node:18.18.0-alpine)
|
|||
|
|
- **推荐 pnpm 版本**: 8(通过 corepack 或 `npm install -g pnpm@8`)
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
```
|
|||
|
|
tailchat-sales/
|
|||
|
|
├── server/ # 后端服务(Tailchat)
|
|||
|
|
│ ├── plugins/com.msgbyte.saleschat/ # 销售聊天插件
|
|||
|
|
│ ├── admin/ # 管理后台(独立前端)
|
|||
|
|
│ └── packages/sdk/ # Tailchat Server SDK
|
|||
|
|
├── client/
|
|||
|
|
│ ├── web/ # Web 前端(Tailchat 聊天界面)
|
|||
|
|
│ ├── flutter/ # Flutter 移动端(独立应用)
|
|||
|
|
│ └── shared/ # 前端共享代码
|
|||
|
|
├── Dockerfile # 生产构建(Node 18)
|
|||
|
|
└── docker-compose.yml # 全套服务编排
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 启动方式
|
|||
|
|
|
|||
|
|
### 方式一:Docker(推荐)
|
|||
|
|
```bash
|
|||
|
|
docker-compose up -d # 启动全部服务
|
|||
|
|
docker-compose logs -f tailchat # 查看日志
|
|||
|
|
docker-compose down # 停止服务
|
|||
|
|
```
|
|||
|
|
- 后端 + 前端: `http://localhost:3000`
|
|||
|
|
- MinIO Console: `http://localhost:9001`
|
|||
|
|
- 管理员: tailchat / com.msgbyte.tailchat
|
|||
|
|
|
|||
|
|
### 方式二:本地开发(需要 Node 18)
|
|||
|
|
```bash
|
|||
|
|
npx pnpm@8 install
|
|||
|
|
DISABLE_REPL=true TS_NODE_TRANSPILE_ONLY=true npx pnpm@8 --filter tailchat-server dev:main # 后端
|
|||
|
|
NODE_OPTIONS='--no-experimental-strip-types' npx pnpm@8 --filter tailchat-web dev # 前端
|
|||
|
|
```
|
|||
|
|
- 后端: `http://localhost:11000`
|
|||
|
|
- 前端: `http://localhost:11011`
|
|||
|
|
|
|||
|
|
> **注意**: 本地开发需要先启动 MongoDB、Redis、MinIO(可用 `docker-compose up -d mongo redis minio`)
|
|||
|
|
|
|||
|
|
## 环境变量
|
|||
|
|
|
|||
|
|
### 开发环境(server/.env)
|
|||
|
|
```
|
|||
|
|
PORT=11000
|
|||
|
|
SECRET=dev-secret-key
|
|||
|
|
MONGO_URL=mongodb://tailchat:tailchat_secret@127.0.0.1:27017/tailchat?authSource=admin
|
|||
|
|
REDIS_URL=redis://127.0.0.1:6379/
|
|||
|
|
MINIO_URL=127.0.0.1:9000
|
|||
|
|
MINIO_USER=tailchat
|
|||
|
|
MINIO_PASS=tailchat_secret
|
|||
|
|
ADMIN_USER=tailchat
|
|||
|
|
ADMIN_PASS=com.msgbyte.tailchat
|
|||
|
|
DISABLE_TRACING=true
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Docker 环境(docker-compose.yml)
|
|||
|
|
已内置配置,无需额外 .env 文件。
|
|||
|
|
|
|||
|
|
## 插件开发
|
|||
|
|
|
|||
|
|
### 插件结构
|
|||
|
|
```
|
|||
|
|
server/plugins/com.msgbyte.saleschat/
|
|||
|
|
├── package.json
|
|||
|
|
├── services/
|
|||
|
|
│ ├── invite.service.ts # 邀请管理
|
|||
|
|
│ ├── stats.service.ts # 数据统计
|
|||
|
|
│ └── admin.service.ts # 管理功能
|
|||
|
|
├── models/
|
|||
|
|
│ ├── invite.model.ts
|
|||
|
|
│ └── stats.model.ts
|
|||
|
|
└── test/
|
|||
|
|
└── integration.spec.ts
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 构建 & 测试
|
|||
|
|
```bash
|
|||
|
|
cd server/plugins/com.msgbyte.saleschat
|
|||
|
|
pnpm build
|
|||
|
|
pnpm test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Flutter 移动端
|
|||
|
|
```bash
|
|||
|
|
cd client/flutter
|
|||
|
|
flutter pub get
|
|||
|
|
flutter run
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 已知问题
|
|||
|
|
|
|||
|
|
### Node 23 不兼容
|
|||
|
|
本项目依赖 moleculer 0.14、typegoose 9、ts-node 10,与 Node 23 不兼容:
|
|||
|
|
- `performance.now()` this 上下文问题
|
|||
|
|
- ts-node ESM 模块解析冲突
|
|||
|
|
- typegoose 装饰器类型推断失败
|
|||
|
|
|
|||
|
|
**解决方案**: 使用 Node 18(Docker 已内置),或用 `fnm` 管理多版本:
|
|||
|
|
```bash
|
|||
|
|
fnm install 18 && fnm use 18
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### pnpm 版本
|
|||
|
|
lockfile 是 v6 格式(pnpm 8),pnpm 10 不兼容。用 `npx pnpm@8` 或 `corepack` 管理。
|