# @bondsports/online-booking 中文文档

规范地址：https://npmcn.com/package/%40bondsports/online-booking/

版本：1\.0\.0
npm 元数据更新时间：2026-08-25T13:49:23.758Z
中文译文更新时间：2026-11-08T10:55:36.512Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bondsports/online-booking
原文对照：https://npmcn.com/package/%40bondsports/online-booking/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：47 kB，34 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：5 个
- 首次发布：2026-05-10T13:15:48.642Z
- 最新版本发布：2026-06-08T07:04:40.436Z
- 近 30 天下载量：3553（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 6 个）

## 中文简介

Bond Sports 在线预订软件包

## 安装

```sh
npm install @bondsports/online-booking
```

也可以使用：`pnpm add @bondsports/online-booking`、`yarn add @bondsports/online-booking`、`bun add @bondsports/online-booking`

## README

# @ bondsports/在线预订

在线订票流程的验证和设置分辨率工具.

软件包回答了两个问题:

1.  **现在对该用户适用什么预订设置?** —— 说 `resolveBookingSettings` 将默认产品类设置与用户活动成员中最有利的覆盖合并.
2.  **用户想要预订的插槽是否实际允许 ?** —— 说 `validateBookingSlots` 对照已解析的设置检查请求的插槽( 与用户已订入的插槽合并)并返回打入的验证结果 .

## 安装

```
npm install @bondsports/online-booking
```

## 使用量

### `resolveBookingSettings`

选择有效 `IBookingSettings` 用于用户。 如果用户没有活动成员(或者没有一个成员推翻类别设置),则返回默认值. 否则是最低的 `minimumBookingNotice` 和最高 `advanceBookingWindow` 超越会员的优势.

```typescript
import { resolveBookingSettings } from '@bondsports/online-booking';

const settings = resolveBookingSettings(productCategory.onlineBookingSettings, user.activeMemberships);
```

-   `productCategory.onlineBookingSettings` —— 说 `TProductCategoryOnlineBookingSettings` (单位:千美元)`{ default, memberships }`(中文(简体) )
-   `user.activeMemberships` —— 说 `{ membershipId: number }[]` (可选;通过) `undefined` 或者说 `[]` (给客人)

### `validateBookingSlots`

对照已解析的设置验证请求的时段列表 .

```typescript
import { validateBookingSlots } from '@bondsports/online-booking';

const result = validateBookingSlots(requestedSlots, userBookedSlots, settings, facilityTimezone);

if (!result.success) {
    // result.error is a ValidationError with a stable `code` (see ONLINE_BOOKING_ERRORS)
    throw result.error;
}
```

验证符 :

-   将所请求的插槽与用户现有的订位( 密闭到订位窗口) 合并 ,
-   执行 `maxBookingHours` 每个日历日(设施时区),
-   执行 `maxSequentialBookings` 每个连续的街道,
-   执行 `minimumBookingNotice` 财务报告和审定财务报表 `advanceBookingWindow` 反对"现在".

### 处理错误

所有失败返回 `{ success: false, error }` 地点 `error` 是一个 `ValidationError` 带稳定器的子级 `code` 从 `ONLINE_BOOKING_ERRORS`数字 :

| 错误类 | 代码 | 含义 |
| --- | --- | --- |
| `InvalidTimesError` | `INVALID_TIMES` | 开始日期不严格在结束日期之前 |
| `MinimumNoticeError` | `MINIMUM_NOTICE_DATE` | 开始日期是之前 `now + minimumBookingNotice` |
| `AdvanceBookingError` | `ADVANCE_BOOKING_DATE` | 开始日期超过 `now + advanceBookingWindow` |
| `MaxSequentialHoursError` | `MAX_SEQUENTIAL_HOURS` | 毗连区块超过 `maxSequentialBookings` |
| `MaxBookingHoursError` | `MAX_BOOKING_HOURS` | 超过一天的预订时间总数 `maxBookingHours` |

```typescript
import { ONLINE_BOOKING_ERRORS, ValidationError } from '@bondsports/online-booking';

if (!result.success && result.error.code === ONLINE_BOOKING_ERRORS.MINIMUM_NOTICE_DATE) {
    // show "book at least N hours in advance" message
}
```

## API 密码

```typescript
import {
    validateBookingSlots,
    resolveBookingSettings,
    ONLINE_BOOKING_ERRORS,
    ValidationError,
    InvalidTimesError,
    MinimumNoticeError,
    AdvanceBookingError,
    MaxSequentialHoursError,
    MaxBookingHoursError,
    IBookingValidation,
    IBookingSettings,
    IMembershipBookingSettings,
    TProductCategoryOnlineBookingSettings,
} from '@bondsports/online-booking';
```

## 脚本

```
npm run build      # compile to ./dist
npm test           # run jest
npm run lint       # eslint + prettier check
npm run lint:fix   # autofix
```

## 常见问题

### @bondsports/online-booking 是什么？

Bond Sports 在线预订软件包

### 如何安装 @bondsports/online-booking？

在项目目录运行 npm install @bondsports/online-booking，或使用 pnpm add / yarn add / bun add。

### @bondsports/online-booking 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @bondsports/online-booking 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @bondsports/online-booking 可以商用吗？

@bondsports/online-booking 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @bondsports/online-booking 的下载量有多少？

根据 npm 官方下载统计，@bondsports/online-booking 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,553 次，日均约 118 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @bondsports/online-booking 还在维护吗？

最新版本 1\.0\.0 发布于 2026/06/08（5 个月前）；至今共发布 6 个版本，其中过去 12 个月发布了 6 个；首次发布于 2026/05/10。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

