# 畅联 PC 端（pc-client）

公司内部通讯工具「畅联」的 PC 客户端，基于 OpenIM 官方 Electron 样板（openim-electron-demo，Electron + React 18 + TypeScript + antd 5 + zustand）改造：

- 登录改为**工号 + 密码**，走自研账号服务（不部署 OpenIM 官方 chat 业务服务 :10008）
- 用户信息、音视频通话令牌等原走 chat 服务的调用，已全部改道 OpenIM SDK 或自研账号服务
- 界面文案全中文，默认语言简体中文

## 依赖的服务端

见仓库根目录 `README.md`：OpenIM 服务端（REST :10002 / WS :10001）、自研账号服务（:10010，接口见 `account-service/README.md`）、LiveKit（:17880）。客户端连接地址在 `.env` 里配置（`VITE_ACCOUNT_URL`、`VITE_WS_URL`、`VITE_API_URL` 等）。

## 本地开发

```bash
npm install
npm run dev
```

- `npm install` 时注意：本仓库用 allow-scripts 白名单管理依赖安装脚本，需批准 `electron` / `esbuild` / `koffi` 等包的 postinstall（package.json 里已配好 `allowScripts` 字段）。
- `npm run dev` 启动 Vite 开发服务器（默认同时拉起 Electron 窗口）。
- `npm install` 若在中文/嵌套路径下提示 husky 找不到 `.git`：属已知非阻塞问题，`prepare` 已写成 `husky install || true` 容错，git 钩子不可用但不影响安装与构建。

### 本地 mock 登录服务（联调用）

真实员工账号由管理员在服务器上开通。本地开发没有真实账号时，可以起一个 mock 账号服务：

```bash
npm run mock:account
```

然后新建 `.env.local`（已被 gitignore）写入 `VITE_ACCOUNT_URL=http://127.0.0.1:11010` 覆盖 `.env` 里的真实地址，用 `test001 / test123`（或 `test002 / test123`）登录。mock 服务实现了与真实账号服务相同的 `/api/login` 和 `/api/rtc_token` 接口（登录时会真实调用 OpenIM 管理接口换取 imToken；`/api/rtc_token` 同样要求 `Authorization: Bearer <imToken>`）。

> ⚠️ mock 服务内置测试环境默认密钥，仅供本地开发，禁止打包、禁止用于正式环境。

## 打包

先 `npm run build`（vite build，产物在 `dist/`），再用 electron-builder 打包安装包。打包用的脚本在 `package_electron.json` 里（打包前按原样板说明用它替换 `package.json`）：

```bash
npm run build:win     # Windows 安装包
```

验收安装包为 `release/Base/1.0.1/畅联_1.0.1.exe`（旧版 `畅联_1.0.0.exe` 已作废）。

如果只想验证构建不产出安装包：`npm run build && npx electron-builder`（此命令未验证，以 `package_electron.json` 里的脚本为准）。

## 其他

- 本项目基于 openim-electron-demo（AGPL-3.0 附加条款），仅作公司内部使用。
- 原样板说明（英文、功能清单等）见上游仓库 <https://github.com/openimsdk/openim-electron-demo>。
