feat(contracts,api): UI-01 cover, preview, scope=own and embed config extensions
契约扩展(全部可选/可空,旧客户端零感知)+ cn/ov 实现 + e2e 权限矩阵:
- AlbumSummary += cover(kind=cover state=effective 最新行的短期签名 URL,
列表/详情按页批量组装非 N+1;未配置为 null)
- AdminPhoto += preview{thumb,browse}(变体齐备且未删除才签发;隐藏仅
admin/owner;协作者仅自己上传,scope=own 服务端过滤 uploaderId,
成员资格逐请求裁决)
- listAlbumPhotos += scope=all|own(缺省 all 行为不变:仅 owner/admin,
协作者 403;own 任何有效成员)
- EmbedSlotSettings += imageFit/offsetX/offsetBottom/zIndex(cn PATCH 校验
→ slot-state 投影 → ov 公开回读;settings 为 Json 列免迁移,读侧
normalizeStoredSettings 兜旧形状默认值)
- Flutter 模型同步(SignedUrl/PhotoPreview/AlbumPhotoScope,可空容错)
e2e:ui01-contracts 9 例(封面选取/字节取回/N+1 计数断言、preview 权限
矩阵、scope 过滤与 403/404/400)+ embed ⑨ 配置链路;全量 e2e 257 通过。
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
// services/api/src/photos/photos.module.ts —— 照片管理模块(Task 24;P1b Task 4
|
||||
// 增补管理列表控制器)。装配:PhotosController/AlbumPhotosController/
|
||||
// PhotosService + PermissionsService(经 AlbumsModule 导入复用 A02 逐次权限
|
||||
// 判定;同 uploads 模块的装配先例)。
|
||||
// 增补管理列表控制器;UI-01 增补 StoragePort——管理列表 preview 现签)。
|
||||
// 装配:PhotosController/AlbumPhotosController/PhotosService +
|
||||
// PermissionsService(经 AlbumsModule 导入复用 A02 逐次权限判定;同 uploads
|
||||
// 模块的装配先例)+ storageProvider(与 AlbumsModule 同一 DI 模式:直接复用
|
||||
// provider 工厂而非 import UploadsModule,避免模块环)。
|
||||
import { Module } from '@nestjs/common';
|
||||
import { AlbumsModule } from '../albums/albums.module';
|
||||
import { storageProvider } from '../uploads/storage.provider';
|
||||
import { AlbumPhotosController } from './album-photos.controller';
|
||||
import { PhotosController } from './photos.controller';
|
||||
import { PhotosService } from './photos.service';
|
||||
@@ -11,6 +14,6 @@ import { PhotosService } from './photos.service';
|
||||
@Module({
|
||||
imports: [AlbumsModule],
|
||||
controllers: [PhotosController, AlbumPhotosController],
|
||||
providers: [PhotosService],
|
||||
providers: [PhotosService, storageProvider],
|
||||
})
|
||||
export class PhotosModule {}
|
||||
|
||||
Reference in New Issue
Block a user