/** * 通知 outbox 手动重发入口只允许超级管理员触发真实 provider 投递。 */ import { Controller, Param, Post, UseGuards } from '@nestjs/common'; import { ApiOkResponse, ApiTags } from '@nestjs/swagger'; import { AdminOnlyMessage } from '../../auth/admin-only-message.decorator'; import { AuthGuard } from '../../auth/auth.guard'; import { AuthenticatedUser } from '../../auth/auth.types'; import { CurrentUser } from '../../auth/current-user.decorator'; import { PasswordChangeGuard } from '../../auth/password-change.guard'; import { SuperAdminGuard } from '../../auth/super-admin.guard'; import { NotificationOutboxMessage } from '../outbox/notification-outbox.types'; import { NotificationOutboxManualRetryService } from './notification-outbox-manual-retry.service'; @ApiTags('通知 outbox') @Controller('notification-outbox') @UseGuards(AuthGuard, PasswordChangeGuard, SuperAdminGuard) @AdminOnlyMessage('无权限操作通知 outbox') export class NotificationOutboxManualRetryController { constructor( private readonly manualRetryService: NotificationOutboxManualRetryService, ) {} @Post(':id/retry') @ApiOkResponse({ description: '手动重发失败或已终止的通知 outbox。' }) async retryMessage( @Param('id') id: string, @CurrentUser() user: AuthenticatedUser, ): Promise { return this.manualRetryService.retryMessage(id, user); } }