Initial AI manga platform

This commit is contained in:
www
2026-06-15 17:45:28 +08:00
commit 7a8191650f
267 changed files with 105987 additions and 0 deletions
+320
View File
@@ -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);
}
}