feat: 初始化 ChatOA 企业协作 OA 系统
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
# ChatOA — 基于 IM 的 OA 客户端工具
|
||||
|
||||
通过即时通讯的方式实现对话、文件互传、表单签批等,面向办公室人员,整体结构参考微信电脑端(三列布局)。
|
||||
|
||||
## 功能规划
|
||||
|
||||
| 模块 | 优先级 | 状态 |
|
||||
| ---- | ------ | ---- |
|
||||
| 1. 即时通讯(单聊 + 文字/图片消息) | P0 | 第一阶段完成 |
|
||||
| 2. 联系人 | P0 | 第一阶段完成 |
|
||||
| 3. 日程 | P0 | 第一阶段完成 |
|
||||
| 4. 表单(自定义表单,Json 存储) | P1 | Demo 版 |
|
||||
| 5. 笔记 | P1 | Demo 版 |
|
||||
| 6. 应用 | P2 | 扩展,导航占位 |
|
||||
| 7. 网盘 | P2 | 扩展,导航占位 |
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **客户端**:Electron + React + TypeScript + Ant Design 5 + Zustand + Socket.IO Client
|
||||
- **服务端**:Node.js + NestJS + TypeScript + Socket.IO
|
||||
- **数据库(规划)**:MongoDB + Redis
|
||||
- **当前存储**:开发期使用「内存 + JSON 文件持久化」模拟存储,业务层通过统一的存储抽象接口访问,后续无缝切换到 MongoDB / Redis
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
ChatOA/
|
||||
├── server/ # NestJS 服务端(端口 3000)
|
||||
│ ├── data/ # JSON 持久化文件(自动生成)
|
||||
│ ├── uploads/ # 图片上传目录(自动生成)
|
||||
│ └── src/
|
||||
│ ├── common/storage/ # 存储抽象层(内存 + JSON 持久化)
|
||||
│ ├── auth/ # JWT 认证
|
||||
│ ├── users/ # 用户
|
||||
│ ├── contacts/ # 联系人
|
||||
│ ├── chat/ # IM(REST + Socket.IO 网关)
|
||||
│ ├── presence/ # 在线状态(模拟 Redis)
|
||||
│ ├── schedule/ # 日程
|
||||
│ ├── forms/ # 表单 Demo
|
||||
│ ├── knowledge/ # 笔记 Demo
|
||||
│ └── seed/ # 演示数据初始化
|
||||
└── client/ # Electron + React 客户端
|
||||
├── electron/ # 主进程 / preload
|
||||
└── src/
|
||||
├── layout/ # 三列布局
|
||||
├── pages/ # 登录 / 聊天 / 联系人 / 日程 / 表单 / 笔记
|
||||
├── api/ # HTTP 客户端
|
||||
├── socket/ # Socket.IO 客户端
|
||||
└── store/ # Zustand 状态
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 启动服务端
|
||||
|
||||
```bash
|
||||
cd server
|
||||
npm install
|
||||
npm run start:dev # http://localhost:3000
|
||||
```
|
||||
|
||||
### 2. 启动客户端(浏览器调试模式)
|
||||
|
||||
```bash
|
||||
cd client
|
||||
npm install
|
||||
npm run dev:web # http://localhost:5173
|
||||
```
|
||||
|
||||
### 3. 启动客户端(Electron 桌面模式)
|
||||
|
||||
```bash
|
||||
cd client
|
||||
npm run dev # 同时启动 Vite + Electron
|
||||
```
|
||||
|
||||
### 4. 打包 Windows 桌面客户端
|
||||
|
||||
```bash
|
||||
cd client
|
||||
npm run build # 仅前端构建(dist/)
|
||||
npm run build:win # 构建并打包,产物在 client/release/
|
||||
```
|
||||
|
||||
打包产物(需服务端在 3000 端口运行):
|
||||
|
||||
| 文件 | 说明 |
|
||||
| ---- | ---- |
|
||||
| `ChatOA-Setup-<version>-x64.exe` | NSIS 安装版,可自定义安装目录、生成桌面快捷方式 |
|
||||
| `ChatOA-Portable-<version>-x64.exe` | 免安装版,双击即用 |
|
||||
|
||||
> 打包后的客户端以 `file://` 加载页面,会自动直连 `http://localhost:3000` 的 API 与 Socket;也可用 `VITE_API_BASE` / `VITE_SOCKET_URL` 环境变量覆盖服务端地址。
|
||||
> Windows 打包若遇 `win-unpacked.tmp` 重命名被占用(Defender 实时扫描),已在构建配置中通过 `electronDist` 复用本地 Electron 绕过。
|
||||
|
||||
## 演示账号
|
||||
|
||||
服务端启动时会自动初始化以下账号(密码均为 `123456`):
|
||||
|
||||
| 用户名 | 昵称 |
|
||||
| ------ | ---- |
|
||||
| demo | 演示用户 |
|
||||
| alice | 小艾 |
|
||||
| bob | 小波 |
|
||||
| carol | 小卡 |
|
||||
|
||||
登录后可在联系人页找到其他用户发起单聊、发送文字/图片消息;日程、表单、笔记均为可用 Demo。
|
||||
|
||||
## 当前已知限制(开发期)
|
||||
|
||||
- 存储为 JSON 文件,重启服务数据保留;未接 MongoDB / Redis
|
||||
- 图片消息通过 base64 / 上传接口传输,未做压缩与断点续传
|
||||
- 支持单聊,群聊、已读回执细粒度、消息撤回等留待后续版本
|
||||
Reference in New Issue
Block a user