feat(api): photo visibility lifecycle with audit and outbox events

Serializes turbo tasks (concurrency=1): api and worker e2e suites share
one MySQL/MinIO and resetDb TRUNCATEs raced when run in parallel.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-17 23:51:29 +08:00
parent 1f1c8ce191
commit 6d61d117d5
10 changed files with 1199 additions and 1 deletions
+3
View File
@@ -19,6 +19,7 @@ import { AlbumsModule } from './albums/albums.module';
import { AllExceptionsFilter } from './all-exceptions.filter';
import { AuthModule } from './auth/auth.module';
import { HealthController } from './health.controller';
import { PhotosModule } from './photos/photos.module';
import { PrismaModule } from './prisma/prisma.module';
import { PublicModule } from './public/public.module';
import { RequestIdMiddleware, resolveRequestId } from './request-id.middleware';
@@ -37,6 +38,8 @@ import type { ServerRequestWithId } from './shared/request-with-id';
UploadsModule,
// 公开(观众端)域(Task 22 getPublicAlbum;Task 23 公开照片读)。
PublicModule,
// 照片管理域(Task 24:可见性生命周期 PATCH/DELETE)。
PhotosModule,
LoggerModule.forRoot({
pinoHttp: {
// 与 RequestIdMiddleware 共用同一解析函数:优先透传 x-request-id,