- 新增 openapi.yaml 文件,定义管理端与自定义 hooks 的接口文档,包括系统、微信认证、平台认证、字典管理、附件管理、文档管理、购物车和订单等接口。 - 新增 order.yaml 文件,定义订单相关的接口,包括查询订单列表、查询订单详情、新增订单记录、修改订单记录和删除订单记录的请求和响应结构。 - 新增 openapi-wx/openapi.yaml 文件,定义 PocketBase 原生 API 文档,包含企业信息、附件信息、产品信息、文档信息、购物车和订单的接口。 - 新增 pocketbase.scheme.js 文件,包含 PocketBase 集合的创建和更新逻辑,定义了多个集合的字段、索引和权限规则。
4.6 KiB
4.6 KiB
pb_tbl_scheme
来源:用户提供的结构草图(2026-04-08)与现有
tbl_cart/tbl_orderowner 行级权限模式 类型:base状态:draft,仅文档设计,尚未执行建表 读写规则:任意已登录用户可新增,但仅可访问scheme_owner = 当前 token 对应 openid且is_delete = 0的记录
表用途
用于存储用户自己的方案主表,承载方案名称、适用酒店类型、方案筛选条件、房型配置、设备偏好以及引用的高/中/低端模板。
字段清单
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
text |
是 | PocketBase 记录主键 |
scheme_id |
text |
是 | 方案业务 ID,唯一标识 |
scheme_name |
text |
是 | 方案名称 |
scheme_owner |
text |
是 | 方案所有者 openid,保存 tbl_auth_users.openid |
scheme_share_status |
text |
否 | 方案分享状态,便于快速识别是否已分享 |
scheme_expires_at |
date |
否 | 方案有效期 |
scheme_hotel_type |
text |
否 | 酒店类型,如经济型 / 中高端 / 连锁型 / 特色名宿 / 特色酒店 |
scheme_solution_type |
text |
否 | 方案类型,建议保存枚举或 ` |
scheme_solution_feature |
text |
否 | 方案特点,建议保存枚举或 ` |
scheme_room_type |
json |
否 | 房型配置,建议格式:[{"room_type":"大床房","qty":20}] |
scheme_curtains |
text |
否 | 窗帘类型 |
scheme_voice_device |
text |
否 | 语音设备 |
scheme_ac_type |
text |
否 | 空调类型 |
scheme_template_highend |
text |
否 | 高端模板 ID,建议保存 tbl_scheme_template.scheme_template_id |
scheme_template_midend |
text |
否 | 中端模板 ID,建议保存 tbl_scheme_template.scheme_template_id |
scheme_template_lowend |
text |
否 | 地端模板 ID,建议保存 tbl_scheme_template.scheme_template_id |
scheme_status |
text |
否 | 方案状态,如草稿 / 生效 / 失效 |
scheme_remark |
text |
否 | 备注 |
is_delete |
number |
否 | 软删除标记,0 表示未删除,1 表示已删除,默认 0 |
索引
| 索引名 | 类型 | 说明 |
|---|---|---|
idx_tbl_scheme_scheme_id |
UNIQUE INDEX |
保证 scheme_id 唯一 |
idx_tbl_scheme_scheme_owner |
INDEX |
加速按方案所有者查询 |
idx_tbl_scheme_scheme_name |
INDEX |
加速按方案名称检索 |
idx_tbl_scheme_scheme_share_status |
INDEX |
加速按分享状态过滤 |
idx_tbl_scheme_scheme_expires_at |
INDEX |
加速按有效期过滤 |
idx_tbl_scheme_scheme_hotel_type |
INDEX |
加速按酒店类型过滤 |
idx_tbl_scheme_scheme_solution_type |
INDEX |
加速按方案类型过滤 |
idx_tbl_scheme_scheme_solution_feature |
INDEX |
加速按方案特点过滤 |
idx_tbl_scheme_scheme_status |
INDEX |
加速按方案状态过滤 |
idx_tbl_scheme_owner_status |
INDEX |
加速同一用户下按状态查询 |
建议 PocketBase 原生权限规则
说明:
- 采用和
tbl_cart/tbl_order一致的 owner 行级隔离模式。 - 这里按“任意已登录用户可创建自己的方案”设计,因此
createRule仍要求携带有效 token。 - 若后续由 hooks 自动回填
scheme_owner,也建议保留@request.body.scheme_owner = @request.auth.openid约束,避免越权代建。
| Rule | 建议表达式 |
|---|---|
listRule |
@request.auth.id != "" && scheme_owner = @request.auth.openid && is_delete = 0 |
viewRule |
@request.auth.id != "" && scheme_owner = @request.auth.openid && is_delete = 0 |
createRule |
@request.auth.id != "" && @request.body.scheme_owner = @request.auth.openid |
updateRule |
@request.auth.id != "" && scheme_owner = @request.auth.openid && is_delete = 0 |
deleteRule |
@request.auth.id != "" && scheme_owner = @request.auth.openid && is_delete = 0 |
补充约定
scheme_template_highend/scheme_template_midend/scheme_template_lowend当前建议先保存模板业务 ID,不直接建立 relation,便于兼容现有 hooks 风格。scheme_room_type推荐使用json数组,避免后续字符串解析成本。scheme_solution_type与scheme_solution_feature如果后续要做模板筛选,建议统一保存字典枚举值,而不是自由文本。is_delete用于软删除控制;对外列表、详情、修改、删除规则都建议默认排除已删除数据。- PocketBase 系统字段
created、updated仍然存在,只是不在 collection 字段清单里单独声明。