Initial AI manga platform
This commit is contained in:
@@ -0,0 +1,320 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Get,
|
||||
Inject,
|
||||
Param,
|
||||
Patch,
|
||||
Post,
|
||||
Query,
|
||||
UseGuards
|
||||
} from '@nestjs/common';
|
||||
import type { AuthRequestUser } from '../auth/auth.types';
|
||||
import { CurrentUser } from '../auth/current-user.decorator';
|
||||
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
|
||||
import {
|
||||
AdminListAssetsQueryDto,
|
||||
AdminListCharactersQueryDto,
|
||||
AdminListCopyrightRecordsQueryDto,
|
||||
AdminListGlobalCharactersQueryDto,
|
||||
AdminListHitAnalysesQueryDto,
|
||||
AdminListNovelChaptersQueryDto,
|
||||
AdminListNovelSourcesQueryDto,
|
||||
AdminListOperationLogsQueryDto,
|
||||
AdminBindCharacterGlobalDto,
|
||||
AdminAnalyzeHitCaseDto,
|
||||
AdminCreateHitAnalysisCaseDto,
|
||||
AdminListProjectsQueryDto,
|
||||
AdminListRouterAuditsQueryDto,
|
||||
AdminListStoryboardShotsQueryDto,
|
||||
AdminListUsersQueryDto,
|
||||
AdminListWorksQueryDto,
|
||||
AdminListCreativePatternsQueryDto,
|
||||
AdminPromoteHitCasePatternsDto,
|
||||
AdminResetUserPasswordDto,
|
||||
AdminSaveGlobalCharacterDto,
|
||||
AdminUpdateRouterAuditQualityDto,
|
||||
AdminUpdateCreativePatternDto,
|
||||
AdminUpdateCreativePatternStatusDto,
|
||||
AdminUpdateProjectStatusDto,
|
||||
AdminUpdateUserRoleDto,
|
||||
AdminUpdateUserStatusDto,
|
||||
AdminUpdateSystemConfigDto
|
||||
} from './admin.dto';
|
||||
import { AdminService } from './admin.service';
|
||||
|
||||
@Controller('admin')
|
||||
@UseGuards(JwtAuthGuard)
|
||||
export class AdminController {
|
||||
constructor(@Inject(AdminService) private readonly adminService: AdminService) {}
|
||||
|
||||
@Get('dashboard')
|
||||
getDashboard(@CurrentUser() user: AuthRequestUser) {
|
||||
return this.adminService.getDashboard(user);
|
||||
}
|
||||
|
||||
@Get('rbac/me')
|
||||
getRbacProfile(@CurrentUser() user: AuthRequestUser) {
|
||||
return this.adminService.getRbacProfile(user);
|
||||
}
|
||||
|
||||
@Get('projects')
|
||||
listProjects(@CurrentUser() user: AuthRequestUser, @Query() query: AdminListProjectsQueryDto) {
|
||||
return this.adminService.listProjects(user, query);
|
||||
}
|
||||
|
||||
@Get('projects/:projectId')
|
||||
getProjectDetail(@CurrentUser() user: AuthRequestUser, @Param('projectId') projectId: string) {
|
||||
return this.adminService.getProjectDetail(user, projectId);
|
||||
}
|
||||
|
||||
@Patch('projects/:projectId/status')
|
||||
updateProjectStatus(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('projectId') projectId: string,
|
||||
@Body() dto: AdminUpdateProjectStatusDto
|
||||
) {
|
||||
return this.adminService.updateProjectStatus(user, projectId, dto);
|
||||
}
|
||||
|
||||
@Get('users')
|
||||
listUsers(@CurrentUser() user: AuthRequestUser, @Query() query: AdminListUsersQueryDto) {
|
||||
return this.adminService.listUsers(user, query);
|
||||
}
|
||||
|
||||
@Get('users/:userId/detail')
|
||||
getUserDetail(@CurrentUser() user: AuthRequestUser, @Param('userId') userId: string) {
|
||||
return this.adminService.getUserDetail(user, userId);
|
||||
}
|
||||
|
||||
@Patch('users/:userId/status')
|
||||
updateUserStatus(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('userId') userId: string,
|
||||
@Body() dto: AdminUpdateUserStatusDto
|
||||
) {
|
||||
return this.adminService.updateUserStatus(user, userId, dto);
|
||||
}
|
||||
|
||||
@Patch('users/:userId/role')
|
||||
updateUserRole(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('userId') userId: string,
|
||||
@Body() dto: AdminUpdateUserRoleDto
|
||||
) {
|
||||
return this.adminService.updateUserRole(user, userId, dto);
|
||||
}
|
||||
|
||||
@Post('users/:userId/reset-password')
|
||||
resetUserPassword(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('userId') userId: string,
|
||||
@Body() dto: AdminResetUserPasswordDto
|
||||
) {
|
||||
return this.adminService.resetUserPassword(user, userId, dto);
|
||||
}
|
||||
|
||||
@Get('assets')
|
||||
listAssets(@CurrentUser() user: AuthRequestUser, @Query() query: AdminListAssetsQueryDto) {
|
||||
return this.adminService.listAssets(user, query);
|
||||
}
|
||||
|
||||
@Get('novel-sources')
|
||||
listNovelSources(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListNovelSourcesQueryDto
|
||||
) {
|
||||
return this.adminService.listNovelSources(user, query);
|
||||
}
|
||||
|
||||
@Get('novel-chapters')
|
||||
listNovelChapters(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListNovelChaptersQueryDto
|
||||
) {
|
||||
return this.adminService.listNovelChapters(user, query);
|
||||
}
|
||||
|
||||
@Get('characters')
|
||||
listCharacters(@CurrentUser() user: AuthRequestUser, @Query() query: AdminListCharactersQueryDto) {
|
||||
return this.adminService.listCharacters(user, query);
|
||||
}
|
||||
|
||||
@Get('global-characters')
|
||||
listGlobalCharacters(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListGlobalCharactersQueryDto
|
||||
) {
|
||||
return this.adminService.listGlobalCharacters(user, query);
|
||||
}
|
||||
|
||||
@Post('global-characters')
|
||||
createGlobalCharacter(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Body() dto: AdminSaveGlobalCharacterDto
|
||||
) {
|
||||
return this.adminService.createGlobalCharacter(user, dto);
|
||||
}
|
||||
|
||||
@Patch('global-characters/:globalCharacterId')
|
||||
updateGlobalCharacter(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('globalCharacterId') globalCharacterId: string,
|
||||
@Body() dto: AdminSaveGlobalCharacterDto
|
||||
) {
|
||||
return this.adminService.updateGlobalCharacter(user, globalCharacterId, dto);
|
||||
}
|
||||
|
||||
@Post('characters/:characterId/bind-global')
|
||||
bindCharacterGlobal(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('characterId') characterId: string,
|
||||
@Body() dto: AdminBindCharacterGlobalDto
|
||||
) {
|
||||
return this.adminService.bindCharacterGlobal(user, characterId, dto);
|
||||
}
|
||||
|
||||
@Get('storyboard-shots')
|
||||
listStoryboardShots(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListStoryboardShotsQueryDto
|
||||
) {
|
||||
return this.adminService.listStoryboardShots(user, query);
|
||||
}
|
||||
|
||||
@Get('router-audits')
|
||||
listRouterAudits(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListRouterAuditsQueryDto
|
||||
) {
|
||||
return this.adminService.listRouterAudits(user, query);
|
||||
}
|
||||
|
||||
@Get('hit-analyses')
|
||||
listHitAnalyses(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListHitAnalysesQueryDto
|
||||
) {
|
||||
return this.adminService.listHitAnalyses(user, query);
|
||||
}
|
||||
|
||||
@Post('hit-analyses')
|
||||
createHitAnalysisCase(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Body() dto: AdminCreateHitAnalysisCaseDto
|
||||
) {
|
||||
return this.adminService.createHitAnalysisCase(user, dto);
|
||||
}
|
||||
|
||||
@Post('hit-analyses/:caseId/analyze')
|
||||
analyzeHitCase(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('caseId') caseId: string,
|
||||
@Body() dto: AdminAnalyzeHitCaseDto
|
||||
) {
|
||||
return this.adminService.analyzeHitCase(user, caseId, dto);
|
||||
}
|
||||
|
||||
@Post('hit-analyses/:caseId/patterns')
|
||||
promoteHitCasePatterns(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('caseId') caseId: string,
|
||||
@Body() dto: AdminPromoteHitCasePatternsDto
|
||||
) {
|
||||
return this.adminService.promoteHitCasePatterns(user, caseId, dto);
|
||||
}
|
||||
|
||||
@Get('creative-patterns')
|
||||
listCreativePatterns(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListCreativePatternsQueryDto
|
||||
) {
|
||||
return this.adminService.listCreativePatterns(user, query);
|
||||
}
|
||||
|
||||
@Patch('creative-patterns/:patternId')
|
||||
updateCreativePattern(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('patternId') patternId: string,
|
||||
@Body() dto: AdminUpdateCreativePatternDto
|
||||
) {
|
||||
return this.adminService.updateCreativePattern(user, patternId, dto);
|
||||
}
|
||||
|
||||
@Patch('creative-patterns/:patternId/status')
|
||||
updateCreativePatternStatus(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('patternId') patternId: string,
|
||||
@Body() dto: AdminUpdateCreativePatternStatusDto
|
||||
) {
|
||||
return this.adminService.updateCreativePatternStatus(user, patternId, dto);
|
||||
}
|
||||
|
||||
@Post('creative-patterns/:patternId/refresh-metrics')
|
||||
refreshCreativePatternMetrics(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('patternId') patternId: string
|
||||
) {
|
||||
return this.adminService.refreshCreativePatternMetrics(user, patternId);
|
||||
}
|
||||
|
||||
@Get('router-audits/video-clips/:clipId/timeline')
|
||||
getRouterAuditClipTimeline(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('clipId') clipId: string
|
||||
) {
|
||||
return this.adminService.getRouterAuditClipTimeline(user, clipId);
|
||||
}
|
||||
|
||||
@Patch('router-audits/video-clips/:clipId/quality')
|
||||
updateRouterAuditClipQuality(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('clipId') clipId: string,
|
||||
@Body() dto: AdminUpdateRouterAuditQualityDto
|
||||
) {
|
||||
return this.adminService.updateRouterAuditClipQuality(user, clipId, dto);
|
||||
}
|
||||
|
||||
@Get('works')
|
||||
listWorks(@CurrentUser() user: AuthRequestUser, @Query() query: AdminListWorksQueryDto) {
|
||||
return this.adminService.listWorks(user, query);
|
||||
}
|
||||
|
||||
@Get('copyright-records')
|
||||
listCopyrightRecords(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListCopyrightRecordsQueryDto
|
||||
) {
|
||||
return this.adminService.listCopyrightRecords(user, query);
|
||||
}
|
||||
|
||||
@Get('operation-logs')
|
||||
listOperationLogs(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListOperationLogsQueryDto
|
||||
) {
|
||||
return this.adminService.listOperationLogs(user, query);
|
||||
}
|
||||
|
||||
@Get('operation-logs/export')
|
||||
exportOperationLogs(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Query() query: AdminListOperationLogsQueryDto
|
||||
) {
|
||||
return this.adminService.exportOperationLogs(user, query);
|
||||
}
|
||||
|
||||
@Get('system-configs')
|
||||
listSystemConfigs(@CurrentUser() user: AuthRequestUser) {
|
||||
return this.adminService.listSystemConfigs(user);
|
||||
}
|
||||
|
||||
@Patch('system-configs/:configKey')
|
||||
updateSystemConfig(
|
||||
@CurrentUser() user: AuthRequestUser,
|
||||
@Param('configKey') configKey: string,
|
||||
@Body() dto: AdminUpdateSystemConfigDto
|
||||
) {
|
||||
return this.adminService.updateSystemConfig(user, configKey, dto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user