feat: 添加 PocketBase MiniApp 公司 API 文档和文件字段迁移脚本

- 新增 openapi-miniapp-company.yaml 文件,定义 tbl_company 的基础 CRUD 接口文档,包括查询、创建、更新和删除公司记录的详细描述和示例。
- 新增 pocketbase.file-fields-to-attachments.js 脚本,用于迁移 PocketBase 中的文件字段到文本字段,并处理 tbl_attachments 集合的公开规则。
This commit is contained in:
2026-03-28 15:13:04 +08:00
parent eaf282ea24
commit 51a90260e4
50 changed files with 4250 additions and 113 deletions

View File

@@ -2,6 +2,110 @@
## 归档日期
- 2026-03-28
## 归档范围
本次归档覆盖 PocketBase hooks 项目在附件统一存储、文档管理页增强、字典项图片、用户图片字段附件化、SDK 直连权限页、文档文件字段 `document_file`、大文件上传 body limit 修复、以及对应 OpenAPI / 表结构文档同步方面的工作,涉及:
- 所有业务文件统一收敛到 `tbl_attachments`
- 业务表只保存 `attachments_id`,并由 hooks 联表返回文件流链接
- `tbl_document` 新增 `document_file`,与 `document_image``document_video` 一样支持多附件和 `|` 分隔存储
- `manage/document-manage` 页面新增文件附件区、初始隐藏编辑区、保存后保持当前编辑态、局部状态提示、拖拽上传与全屏图片预览
- `manage/dictionary-manage` 页面支持字典枚举项图片上传和全屏查看原图
- `manage/sdk-permission-manage` 页面支持按角色配置 collection CRUD 直连权限,并优化为即时保存
- 上传路由显式放宽 PocketBase custom route `bodyLimit`
- 使用 `POCKETBASE_AUTH_TOKEN` 在线补齐 `tbl_document.document_file`
- 新增 OpenSpec 归档目录 `openspec/changes/archive/2026-03-28-pocketbase-manage-media-and-sdk-permissions/`
---
## 一、附件集中存储
### 1. 附件表作为唯一文件存储点
-`tbl_attachments.attachments_link` 保留真实 `file` 字段
- 其他业务表不再保存实际文件
- 文档、字典、用户图片字段统一改为保存 `attachments_id`
### 2. 附件回读策略
hooks 查询时统一联查 `tbl_attachments`,并补充:
- 文件流链接
- 下载链接
- 附件元数据对象
适用对象包括:
- 文档图片 / 视频 / 文件
- 字典枚举项图片
- 用户头像 / 身份图 / 资质图
### 3. 附件访问控制
- PocketBase 原生 `tbl_attachments` 已放开公开读取与下载
- hooks 层原有 `ManagePlatform` 限制保持不变
- 业务访问控制继续由保存附件 ID 的业务表承担
---
## 二、文档管理增强
### 1. `tbl_document` 新增 `document_file`
- 新字段:`document_file`
- 类型:`text`
- 用途:保存多个文件类 `attachments_id`
- 存储格式:`id1|id2|id3`
### 2. 文档管理页行为
- 首次进入页面时只显示列表,不显示编辑区
- 点击“新建模式”或“编辑”后才进入编辑区
- 保存成功后保持当前文档编辑态,不再强制清空回到新建
- 保存 / 报错信息同时显示在顶部与保存按钮下方
- 图片、视频、文件三块附件区都支持拖拽上传
### 3. 上传链路修复
- 上传接口继续使用 `/pb/api/attachment/upload`
- 为自定义路由显式增加更大的 `bodyLimit`
- 解决了文件未超过数据库与网关限制但仍在 hooks 层被 413 拒绝的问题
---
## 三、SDK 直连权限管理
### 1. 管理页能力
- 新增 `/pb/manage/sdk-permission-manage`
- 支持创建角色后按角色给 `tbl_auth_users` 用户授权
- 支持逐 collection 配置 `list / view / create / update / delete`
### 2. 页面交互约束
- 页面不显示角色 ID只显示角色名称
- 勾选权限后立即保存
- `public``custom` 规则不允许在页面里继续勾选改写
- 支持集合级 `全选`
- 当某集合下所有操作都不可编辑时,`全选` 自动禁用
---
## 四、OpenSpec 记录
本次新增的 OpenSpec 记录包括:
- `openspec/specs/attachment-backed-media/spec.md`
- `openspec/specs/document-manage-console/spec.md`
- `openspec/specs/sdk-collection-permissions/spec.md`
- `openspec/changes/archive/2026-03-28-pocketbase-manage-media-and-sdk-permissions/`
---
## 归档日期
- 2026-03-23
## 归档范围