docs: 交接文档同步后台内容新增与分组 CRUD

This commit is contained in:
2026-10-30 12:53:49 +08:00
parent 5982e0db5a
commit 26042c3e3f
3 changed files with 24 additions and 9 deletions
+15 -8
View File
@@ -9,7 +9,7 @@ Stash 已从「只读本地导航站」升级为**可登录、可配置、可编
- 登录(单用户,argon2id + Cookie 会话); - 登录(单用户,argon2id + Cookie 会话);
- `/admin` 设置页(页头滚动信息 / 首页卡片 / 归类 / 侧栏 / 资料 / 系统); - `/admin` 设置页(页头滚动信息 / 首页卡片 / 归类 / 侧栏 / 资料 / 系统);
- 条目就地编辑(Drawer + 乐观锁); - 条目就地编辑(Drawer + 乐观锁);
- 分区新增/删除/归类编辑、侧栏子分类配置、浏览/点赞/分享/跳转; - 分区新增/删除、**条目新增/删除(可选分区与分组)**、分组(子分类)新建/改名/删除、侧栏子分类配置、浏览/点赞/分享/跳转;
- 数据库自动迁移到 **v17**; - 数据库自动迁移到 **v17**;
- 前端 100% 使用组件库 `@stash/ui`(v0.3.1,42 个组件)。 - 前端 100% 使用组件库 `@stash/ui`(v0.3.1,42 个组件)。
@@ -99,12 +99,13 @@ README.md 运行、路由、库结构、登录说明
| --- | --- | | --- | --- |
| 页头滚动信息 | 启用开关、速度 8–120、条目增删/排序、标签与色调、占位符 `{count}` `{project}` `{status}` | | 页头滚动信息 | 启用开关、速度 8–120、条目增删/排序、标签与色调、占位符 `{count}` `{project}` `{status}` |
| 首页卡片 | 显示/隐藏、标题覆盖、预览条数、顺序、**新增分类**、**删除分类**(不可删的显示灰色按钮) | | 首页卡片 | 显示/隐藏、标题覆盖、预览条数、顺序、**新增分类**、**删除分类**(不可删的显示灰色按钮) |
| 归类 | 每个分区的类型(应用/海报/图文)、标题、图标、色条、预览条数;改类型会自动迁移条目归属 | | 内容 | 新增应用/海报/图文条目(选分区 + 分组),删除条目;列出分区下已有条目 |
| 侧栏导航 | 分类显示/隐藏、顺序、删除/新增;应用类分区下的**子分类(分组)可单独显隐与排序** | | 分区 | 分区类型(应用/海报/图文)、标题、图标、色条、预览条数;首页卡片预览哪个分组;**分组新建/改名/显隐/删除** |
| 侧栏导航 | 分类显示/隐藏、顺序、删除/新增;应用的子分类(分组)单独显隐与排序 |
| 资料 | 头像 URL、名称、角色、简介、位置(应用到侧栏资料卡) | | 资料 | 头像 URL、名称、角色、简介、位置(应用到侧栏资料卡) |
| 系统 | 修改密码(清空所有会话)、下载备份(VACUUM INTO 快照) | | 系统 | 修改密码(清空所有会话)、下载备份(VACUUM INTO 快照) |
保存:`PATCH /api/settings`(`version` 乐观锁,冲突 409);成功用 Toast(2.4s 自动消失)。 保存:页头 / 首页卡片 / 资料走 `PATCH /api/settings`(`version` 乐观锁,冲突 409);「内容」「分区」逐项保存(条目、分区、分组各自接口);成功用 Toast(2.4s 自动消失)。
### 内容编辑 ### 内容编辑
- 详情页 `[编辑]` 只在登录后显示; - 详情页 `[编辑]` 只在登录后显示;
@@ -135,13 +136,18 @@ GET /api/settings -> {version, settings}
PATCH /api/settings {version, settings} 需登录 PATCH /api/settings {version, settings} 需登录
GET /api/items/{key} -> 原始字段(编辑表单) GET /api/items/{key} -> 原始字段(编辑表单)
PATCH /api/items/{key} {updatedAt, item} 需登录 POST /api/items {key,nodeKey,item} 需登录
PATCH /api/items/{key} {updatedAt, item, nodeKey?} 需登录,nodeKey 可移动条目
DELETE /api/items/{key} 需登录
POST /api/items/{key}/view POST /api/items/{key}/view
POST /api/items/{key}/like {liked} POST /api/items/{key}/like {liked}
POST /api/categories {id,title,kind} 需登录 POST /api/categories {id,title,kind} 需登录
PATCH /api/categories/{id} {title,icon,barColor,kind,previewLimit,emptyText} 需登录 PATCH /api/categories/{id} {title,icon,barColor,kind,previewLimit,emptyText,blockNodeKey} 需登录
POST /api/categories/{id}/groups {id,title} 需登录,仅应用分区
DELETE /api/categories/{id} 需登录,级联,local 不可删 DELETE /api/categories/{id} 需登录,级联,local 不可删
PATCH /api/groups/{id} {title,showInSidebar} 需登录
DELETE /api/groups/{id} 需登录,级联组内条目
GET /api/backup SQLite 快照附件 需登录 GET /api/backup SQLite 快照附件 需登录
``` ```
@@ -190,7 +196,8 @@ GET /api/backup SQLite 快照附件 需登录
| 拖拽排序 | 用上移/下移按钮替代 | | 拖拽排序 | 用上移/下移按钮替代 |
| 多用户/角色 | 未做,当前单管理员 | | 多用户/角色 | 未做,当前单管理员 |
| 分区编辑 UI | 已支持标题/图标/色条/类型/预览条数(`PATCH /api/categories/{id}`);改类型会自动迁移条目 | | 分区编辑 UI | 已支持标题/图标/色条/类型/预览条数(`PATCH /api/categories/{id}`);改类型会自动迁移条目 |
| 子分类(分组)管理 | 侧栏可显隐/排序;还不能新建、改名、删除分组 | | 条目移动 UI | 后端 `PATCH /api/items/{key}` 已支持 `nodeKey`;编辑器里还没做「移动到其它分组」入口(新增时可选) |
| 分组管理 | 已支持新建/改名/显隐/删除(删除级联组内条目);分组拖拽排序未做 |
| 登录限流 | 进程内计数,重启清空 | | 登录限流 | 进程内计数,重启清空 |
## 10. 约定与坑 ## 10. 约定与坑
@@ -206,5 +213,5 @@ GET /api/backup SQLite 快照附件 需登录
## 11. 新会话建议的下一步 ## 11. 新会话建议的下一步
1. 先跑 `cargo test` + 打开 8080 冒烟,确认基线; 1. 先跑 `cargo test` + 打开 8080 冒烟,确认基线;
2. 若要继续产品化:分组(子分类)的新建/改名/删除、回收站、图片上传、拖拽排序; 2. 若要继续产品化:条目移动 UI、回收站、图片上传、拖拽排序;
3. 若要发布:确认 `stash-ui` 以 `file:` 引入的方式在发布构建里如何锁定版本(建议改为 git tag 依赖或构建前 `npm pack`)。 3. 若要发布:确认 `stash-ui` 以 `file:` 引入的方式在发布构建里如何锁定版本(建议改为 git tag 依赖或构建前 `npm pack`)。
+1 -1
View File
@@ -34,7 +34,7 @@ cargo run -- --root ./sites --host 0.0.0.0 --port 3000
### 登录与设置(v0.1.1 起) ### 登录与设置(v0.1.1 起)
- 登录是**页内弹窗**:点右上角用户图标;首次使用弹窗里是「设置密码 + 确认」(至少 8 位); - 登录是**页内弹窗**:点右上角用户图标;首次使用弹窗里是「设置密码 + 确认」(至少 8 位);
- 登录后点「站点设置」进入 `/admin`,可编辑页头滚动信息(启用 / 速度 / 条目)、首页卡片(显隐 / 标题 / 条数 / 顺序)与侧栏顺序、显隐; - 登录后点「站点设置」进入 `/admin`,可编辑页头滚动信息、首页卡片、内容(新增/删除应用、海报、图文并选择分区/分组)、分区与分组(类型、标题、图标、色条、卡片预览分组、分组增删改)以及侧栏顺序、显隐;
- 详情页的 `[编辑]` 只在登录后显示;保存后局部刷新,`updated_at` 乐观锁; - 详情页的 `[编辑]` 只在登录后显示;保存后局部刷新,`updated_at` 乐观锁;
- `/admin` 的「系统」页可以改密码、下载整库备份(`VACUUM INTO` 快照); - `/admin` 的「系统」页可以改密码、下载整库备份(`VACUUM INTO` 快照);
- 密码用 argon2id 哈希存在 `data/stash.db` 的 `admin` 表,会话是 HttpOnly + SameSite=Strict 的 Cookie(7 天); - 密码用 argon2id 哈希存在 `data/stash.db` 的 `admin` 表,会话是 HttpOnly + SameSite=Strict 的 Cookie(7 天);
+8
View File
@@ -147,6 +147,14 @@ DELETE /api/items/:id
## 11. 实施记录 ## 11. 实施记录
### P6(2026-10-30)
- **后台新增内容**:`POST /api/items`(`key` + `nodeKey` + 条目字段)、`DELETE /api/items/{key}`;「内容」Tab 可选分区/分组新增应用、海报、图文,并列出条目删除;
- **分组 CRUD**:`POST /api/categories/{id}/groups`、`PATCH /api/groups/{id}`(改名/侧栏显隐)、`DELETE /api/groups/{id}`(级联组内条目);「分区」Tab 内联管理;
- **卡片预览分组**:`PATCH /api/categories/{id}` 增加 `blockNodeKey`,可在「分区」Tab 选择首页卡片预览哪个分组;
- 后端校验:应用类条目必须挂在分组上;条目移动通过 `PATCH /api/items/{key}` 的 `nodeKey`;
- 测试:59 passed(新增条目创建/移动/删除 3 例、分组 2 例)。
### P5(2026-10-30) ### P5(2026-10-30)
- **跳转修复**:保存条目时规范化 `href`(`www.zhihu.com` → `https://www.zhihu.com`,站内路径保留,`javascript:` / `data:` 等协议拒绝),前端渲染再做一次兜底; - **跳转修复**:保存条目时规范化 `href`(`www.zhihu.com` → `https://www.zhihu.com`,站内路径保留,`javascript:` / `data:` 等协议拒绝),前端渲染再做一次兜底;