From 32448f097ebec97e8d3161bcf5ac9ed01bc69f33 Mon Sep 17 00:00:00 2001 From: chenxing Date: Mon, 7 Sep 2026 20:38:37 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E6=94=B6=E5=B0=BE):=20README=20=E5=A2=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=8F=98=E6=9B=B4=E5=A3=B0=E6=98=8E-site/sav?= =?UTF-8?q?e=20=E6=9D=83=E9=99=90=E6=8B=86=E5=88=86/attachment=20scene/unu?= =?UTF-8?q?sedCount/custom=5Fcss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 2351038..15eb09a 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,16 @@ > 本仓库由 projman 自动创建并注入 CI(`.gitea/workflows/build.yml`)与 Dockerfile(`docker/Dockerfile`)。 > 推送代码到 main 分支即自动构建镜像并推送到 Nexus,projman 收到通知后建档待部署,由运维在 projman「后端发布」手动点部署。 +## 接口变更声明(2026-09-07 产品优化批次 B1~B5) + +| 接口 | 变更 | 兼容性 | +| --- | --- | --- | +| `POST /api/site/save` | 权限语义拆分:原"仅超管"放宽为——校级角色(currentRole.schId 非空)可新建/编辑**本校主站下的院系子站**(parentSiteId>0 且主站属本校);顶层站新建/编辑/子站提升为顶层仍仅超管;请求体显式 schId 与角色不一致直接拒绝(留空由服务端继承主站) | 校级为新增放行面;超管行为不变;越权统一 403 | +| `POST /api/attachment/upload` | 新增可选 `scene` 参数(banner/link/site 白名单),落 `ref_type` 作场景引用初步标记;不传保持原行为 | 纯新增可选参数,旧调用方不受影响 | +| `GET /api/attachment/page` | "孤儿"语义改为"未使用":`articleId IS NULL AND ref_type IS NULL`;返回键 `orphanCount` 更名 `unusedCount`(无兼容别名,前端已同步);`orphanOnly=true` 过滤同语义 | **破坏性**:消费 orphanCount 的旧前端需同步(本仓库 front 已于同批改造) | +| `cms_attachment` 表 | 新增 `ref_type VARCHAR(16)`、`ref_id INT` 与 `idx_att_ref` 索引(B2 附件引用模型);存量数据不回填,旧场景图在重新保存前显示"未使用"为已知差异 | 加列向后兼容;开发库 ddl-auto=update 自动加列,生产执行 `sql/cms_init.sql` 增量 | +| `config_json.custom_css` | 新增站点级自定义样式键:服务端强校验(≤10240 字符;黑名单 ` 目标:把本地已有代码推上去,同时**保留** projman 注入的文件(`build.yml`、`Dockerfile`)。