feat: 添加产品列表集合初始化脚本,包含字段定义、索引创建及校验逻辑

This commit is contained in:
2026-04-01 11:59:58 +08:00
parent 7a21b3e5db
commit c9c4b4aaf8
20 changed files with 2806 additions and 1 deletions

View File

@@ -0,0 +1,57 @@
# pb_tbl_product_list
> 来源:产品表字段草图(用户提供)与现有 PocketBase 表设计规范
> 类型:`base`
> 读写规则公开可读PocketBase `listRule = ""`、`viewRule = ""`);新增 / 修改 / 删除仅 `ManagePlatform` / 管理角色允许
## 表用途
用于存储产品主数据,承载型号、分类、方案、通讯、供电、标签、价格等信息,并为前端产品列表检索与筛选提供统一数据源。
## 字段清单
| 字段名 | 类型 | 必填 | 说明 |
| :--- | :--- | :---: | :--- |
| `id` | `text` | 是 | PocketBase 记录主键 |
| `prod_list_id` | `text` | 是 | 产品列表业务 ID唯一标识 |
| `prod_list_name` | `text` | 是 | 产品名称 |
| `prod_list_modelnumber` | `text` | 否 | 产品型号 |
| `prod_list_icon` | `text` | 否 | 产品图标,保存 `tbl_attachments.attachments_id` |
| `prod_list_description` | `text` | 否 | 产品说明editor 内容,建议保存 Markdown 或已净化 HTML |
| `prod_list_feature` | `text` | 否 | 产品特色 |
| `prod_list_parameters` | `json` | 否 | 产品参数JSON 对象/数组) |
| `prod_list_plantype` | `text` | 否 | 产品方案 |
| `prod_list_category` | `text` | 是 | 产品分类(必填,单选) |
| `prod_list_sort` | `number` | 否 | 排序值(同分类内按升序) |
| `prod_list_comm_type` | `text` | 否 | 通讯类型 |
| `prod_list_series` | `text` | 否 | 产品系列 |
| `prod_list_power_supply` | `text` | 否 | 供电方式 |
| `prod_list_tags` | `text` | 否 | 产品标签(辅助检索,以 `|` 聚合) |
| `prod_list_status` | `text` | 否 | 产品状态(有效 / 过期 / 主推等) |
| `prod_list_basic_price` | `number` | 否 | 基础价格 |
| `prod_list_remark` | `text` | 否 | 备注 |
## 索引
| 索引名 | 类型 | 说明 |
| :--- | :--- | :--- |
| `idx_tbl_product_list_prod_list_id` | `UNIQUE INDEX` | 保证 `prod_list_id` 唯一 |
| `idx_tbl_product_list_prod_list_name` | `INDEX` | 加速按产品名称检索 |
| `idx_tbl_product_list_prod_list_modelnumber` | `INDEX` | 加速按产品型号检索 |
| `idx_tbl_product_list_prod_list_status` | `INDEX` | 加速按产品状态过滤 |
| `idx_tbl_product_list_prod_list_category` | `INDEX` | 加速按产品分类过滤 |
| `idx_tbl_product_list_prod_list_sort` | `INDEX` | 加速按排序值检索 |
| `idx_tbl_product_list_category_sort` | `INDEX` | 加速分类内排序计算 |
| `idx_tbl_product_list_prod_list_series` | `INDEX` | 加速按产品系列过滤 |
| `idx_tbl_product_list_prod_list_tags` | `INDEX` | 加速标签检索(模糊筛选场景) |
## 补充约定
- `prod_list_icon` 仅保存附件业务 ID真实文件统一在 `tbl_attachments`
- 当前预构建脚本中已将 `listRule``viewRule` 设置为空字符串(`""`),对应 PocketBase 的“任何人可查看”。
- `prod_list_parameters` 使用 PocketBase `json` 字段,写入时应直接提交对象/数组,不建议再二次字符串化。
- `prod_list_description` 作为 editor 内容字段,建议统一为 Markdown 或净化后的 HTML若允许 HTML需在写入前做 XSS 白名单过滤。
- 前端渲染 `prod_list_description` 时应保持和存储格式一致Markdown 渲染器或受控 HTML 渲染),避免直接注入未净化内容。
- `prod_list_basic_price` 使用 `number`,如需货币精度策略建议后续统一为“分”或固定小数位。
- PocketBase 系统字段 `created``updated` 仍然存在,只是不在 collection 字段清单里单独声明。
- 本文档为预构建结构说明,尚未执行线上建表。