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,2 @@
schema: spec-driven
created: 2026-03-31

View File

@@ -0,0 +1,42 @@
## Overview
本次是“预构建变更”,目标是在不改动线上数据的前提下,先形成 `tbl_product_list` 的标准资料与可执行脚本。设计基线来自你给出的字段图,并对齐现有 `tbl_document``tbl_system_dict` 等表的命名与索引风格。
## Data Model Design
### Collection
- 名称:`tbl_product_list`
- 类型:`base`
- 规则默认公开可读list/view写操作由管理角色控制create/update/delete
### Fields
- `prod_list_id`:业务 ID唯一
- `prod_list_name`:产品名称
- `prod_list_modelnumber`:产品型号
- `prod_list_icon`:产品图标,对应 `tbl_attachments.attachments_id`
- `prod_list_description`:产品说明(富文本/编辑器内容)
- `prod_list_feature`:产品特色
- `prod_list_parameters`产品参数JSON 字符串
- `prod_list_plantype`:产品方案索引
- `prod_list_category`:功能类别索引
- `prod_list_comm_type`:通讯类型索引
- `prod_list_series`:产品系列索引
- `prod_list_power_supply`:供电方式索引
- `prod_list_tags`:产品标签(辅助检索)
- `prod_list_status`:产品状态(有效/过期/主推等)
- `prod_list_basic_price`:基础价格
- `prod_list_remark`:备注
## Index Strategy
- 唯一索引:`prod_list_id`
- 普通索引:`prod_list_name``prod_list_modelnumber``prod_list_status``prod_list_category``prod_list_series``prod_list_tags`
## Script Strategy
- 认证方式:`POCKETBASE_AUTH_TOKEN`(与 `script/pocketbase.documents.js` 一致)
- 执行行为:幂等 create-or-update
- 校验行为:回读字段类型/必填状态与索引是否齐全
- 风险控制:不在脚本中自动执行,仅通过 npm script 暴露手动入口

View File

@@ -0,0 +1,27 @@
## Why
当前 `docs/` 中尚未覆盖产品列表实体的 PocketBase 结构定义,且你已提供了 `tbl_product_list` 字段草图。如果不先把目标结构文档化并预置建表脚本,后续接口开发会出现前后端字段口径不一致、索引策略不统一的问题。
## What Changes
- 新增 `docs/pb_tbl_product_list.md`,按现有数据库文档规范沉淀字段、索引、读写规则与补充约定。
- 新增 `script/pocketbase.product-list.js`,提供 `tbl_product_list` 的幂等建表/更新与结构校验逻辑。
- 新增 npm script 入口 `init:product-list`,用于后续按需执行(本次不执行)。
- 新增 OpenSpec 变更,要求产品表文档必须纳入统一的 per-collection 文档体系。
## Capabilities
### Modified Capabilities
- `pocketbase-schema-docs`
## Implementation Strategy
- 继续沿用现有 Node.js + npm 工具链与 PocketBase JS SDK`pocketbase@^0.26.8`)。
- 建表脚本复用项目已验证的 `fields` payload 写法(避免 `schema` 兼容性问题)。
- 索引采用“业务唯一键 + 高频筛选字段普通索引”的策略,以兼容老库查询习惯。
## Impact
- 受影响目录:`docs/``script/``openspec/`
- 本次只做预构建文件,不触发线上建表或数据迁移

View File

@@ -0,0 +1,15 @@
## ADDED Requirements
### Requirement: Product list schema docs SHALL be present before rollout
When introducing `tbl_product_list`, the project SHALL provide a dedicated per-collection database document before executing any production schema change.
#### Scenario: Product list collection is planned
- **WHEN** the team plans to create `tbl_product_list`
- **THEN** `docs/pb_tbl_product_list.md` SHALL exist and describe fields, indexes, access rules, and supplementary constraints
#### Scenario: Product list doc follows unified format
- **WHEN** a reader opens the product list schema document
- **THEN** the document SHALL follow the same standard sections used by existing `pb_tbl_*` docs

View File

@@ -0,0 +1,17 @@
## 1. 文档预构建
- [x] 1.1 依据字段草图整理 `tbl_product_list` 字段清单。
- [x] 1.2 以统一模板新增 `docs/pb_tbl_product_list.md`
- [x] 1.3 定义索引与补充约定附件引用、JSON 字段、状态字段)。
## 2. 脚本预构建
- [x] 2.1 新增 `script/pocketbase.product-list.js`
- [x] 2.2 实现幂等创建/更新与结构校验。
- [x] 2.3 在 `script/package.json` 增加 npm script 入口。
## 3. OpenSpec 记录
- [x] 3.1 新建 change 提案并补充设计说明。
- [x] 3.2 为 `pocketbase-schema-docs` 增加 `tbl_product_list` 文档覆盖要求。
- [ ] 3.3 待你确认后再执行实际建表与验收。