feat(M03-B): 完成装修广告与媒体管理

This commit is contained in:
Codex
2026-06-18 15:06:16 +08:00
parent 7e9b53487b
commit f74624296d
19 changed files with 1241 additions and 13 deletions
@@ -0,0 +1,11 @@
# M03-B 装修、广告与媒体 API
- `POST /admin-api/media/images`:二进制图片上传;通过 `x-file-name``x-image-content-type` 和可选 `x-store-id` 提供元数据。
- `POST /admin-api/decorations`:保存版本化装修草稿。
- `POST /admin-api/decorations/:id/publish?storeId=...`:发布指定版本并归档旧版本。
- `GET /admin-api/advertisements`
- `POST /admin-api/advertisements`
图片仅接受 JPEG、PNG、WebP,最大 8 MiB、最大 4000 万输入像素,最长边压缩至 1920 并转为 WebP。文件按租户和门店目录隔离。
广告范围分为平台、租户和门店。平台广告仅平台管理员可创建,门店广告必须通过门店数据范围校验。
@@ -0,0 +1,8 @@
# M03-B 装修、广告与媒体数据库变更
- 迁移版本:`2026061808`
- `qipai_media_assets`:租户素材、尺寸、哈希和公开 URL。
- `qipai_store_decorations`:模板代码、Schema 版本、内容 JSON、发布版本。
- `qipai_advertisements`:平台/租户/门店广告、投放时间、跳转和排序。
同一门店每次保存装修都会生成递增版本;发布新版本时旧版本转为 `ARCHIVED`。素材唯一索引包含 `tenant_id`,禁止跨租户引用。
@@ -0,0 +1,28 @@
# M03-B 装修、广告与媒体
- 日期:2026-06-18
- 起始 commit`7e9b534`
- 工程 commit:本阶段工程提交
- ENGINEERING_DELTA=YES
- 子阶段状态:待 push 与远端校验
## 工程增量
- 平台、租户、门店三级广告及权限边界。
- 门店装修草稿、版本递增、发布和旧版本归档。
- JPEG/PNG/WebP 上传、解码校验、限像素、压缩转 WebP。
- 租户/门店目录隔离、素材哈希去重和数据库归属校验。
- 装修组件采用版本化 Schema,首版支持 HERO、NOTICE、GALLERY、CONTACT、ROOM_LIST。
## 验证
- Windows 全量 `npm test` 通过。
- WSL MySQL 8.4.9`up → verify → down → up → verify` 通过。
- 真实迁移语句:up 44、verify 26、down 41。
- 实测装修版本 1 发布后被版本 2 归档、门店广告读取和平台广告越权拒绝。
## 影响
- 新增 `sharp` 图片处理依赖。
- 生产上传根目录仍为后端 `shared/uploads`,由部署目录映射到统一上传目录。
- 生产迁移和目录权限配置必须通过 Ubuntu 菜单执行。