book-meeting-room
Version:
## 项目简介
109 lines (92 loc) • 3.31 kB
Markdown
# meeting 会议室预约系统
## 项目简介
本项目是一个基于 Node.js 的命令行会议室预约系统,支持会议室查询、预约、冲突检测等功能,适用于企业内部会议室管理自动化。
## 主要功能
- 查询可用会议室
- 预约会议室(支持时间冲突检测)
- 会议室详情查看
- 预约信息填写与确认
## 技术栈
- Node.js (>=18)
- JavaScript (ES6+)
- [axios](https://github.com/axios/axios) 网络请求
- [inquirer](https://github.com/SBoudrias/Inquirer.js/) 交互式命令行
- [dayjs](https://github.com/iamkun/dayjs) 日期处理
- [chalk](https://github.com/chalk/chalk) 控制台美化
- [gulp](https://gulpjs.com/) 构建工具
## 目录结构
```
meeting/
├── CHANGELOG.md # 版本变更记录
├── gulpfile.mjs # 构建脚本
├── index.js # 主入口,命令行交互逻辑
├── meetingRoom.js # 会议室预约核心逻辑
├── package.json # 项目依赖与脚本
└── README.md # 项目说明文档
```
## 安装与依赖
1. 克隆项目:
```bash
git clone <repo-url>
cd meeting
```
2. 安装依赖:
```bash
npm install
```
## 使用方法
### 1. 配置环境变量
请在项目根目录下创建 `.env` 文件,配置以下环境变量:
```
BASE_URL=接口基础地址
COOKIES=认证 Cookie
CSRF_TOKEN=CSRF Token
REFERER=Referer 地址
CITY_ID=城市ID
BOOKING_USER=预约人工号
BOOKING_USER_NAME=预约人姓名
BOOKING_USER_MAIL=预约人邮箱
BOOKING_USER_DEPT=预约人部门
BOOKING_USER_MOBILE=预约人手机号
```
> 注:部分变量如 BOOKING_DATE、BOOKING_START_TIME、BOOKING_END_TIME 可选,若不设置则命令行交互选择。
### 2. 启动命令与参数
可直接运行:
```bash
npm start
# 或
node index.js
```
也可通过命令行参数直接预约:
```bash
node index.js -p 2025-06-26 -s 10:00 -e 11:00
```
参数说明:
- `-p` 预约日期(格式:YYYY-MM-DD)
- `-s` 开始时间(格式:HH:mm)
- `-e` 结束时间(格式:HH:mm)
> 注意:如果通过参数预约时该时间段无可用会议室,系统会自动进入交互模式让你重新选择。
### 3. 交互与预约流程
无论参数还是交互,流程如下:
1. 输入会议主题
2. 选择会议日期(仅显示未来8天内的工作日,自动过滤周末)
3. 选择开始/结束时间(10:00-20:00整点)
4. 系统自动过滤可用会议室
5. 选择会议室后自动发起预约
6. 控制台输出预约结果或错误信息
所有错误信息会在命令行统一输出,无需担心重复提示。
## 命令说明
- `npm start`:启动预约流程
- `npm run build`:构建项目(使用 gulp)
- `npm run release`:版本发布(standard-version)
## 注意事项
- 需提前获取接口认证信息(Cookie、CSRF Token 等)
- 预约冲突检测基于接口返回的会议室预定信息
- 仅支持预约未来8天内的工作日(周一至周五),周末不可预约
- 如无可用会议室,参数预约会自动切换为交互模式,无需重启
- 所有错误信息均在命令行统一输出
- 仅支持命令行交互,不支持 Web 界面
## 版本与变更
详见 [CHANGELOG.md](./CHANGELOG.md)
## 许可证
ISC