feat: 添加产品列表集合初始化脚本,包含字段定义、索引创建及校验逻辑
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-03-31
|
||||
@@ -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 暴露手动入口
|
||||
@@ -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/`
|
||||
- 本次只做预构建文件,不触发线上建表或数据迁移
|
||||
@@ -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
|
||||
@@ -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 待你确认后再执行实际建表与验收。
|
||||
Reference in New Issue
Block a user