b53c7fb736
Features: - Category viewer ranges + subcategory templates (admin group modal, tree workspace) - Nomination enrichment via TwitchTracker API (NominationEnrichmentService, TwitchTrackerViewerStatsProvider) with admin tracking rules editor - Nomination group tracker: CategoryGroupName as primary identifier, CategoryId stays as nullable legacy field; StreamerIdentity table - Dynamic showact application form builder (AdminShowactFormBuilder, ShowactApplicationSchedule) - Session idle timeout setting (AdminSessionTimeoutCard) - Share URLs for X and Discord (SiteSettings, public extras) - Workflow rules now stored per season (falls back to global SiteSettings) - New admin routes: settings/access, settings/workflows, tracking-rules - New admin review workspace with subcategory tabs - AdminCategoriesView rebuilt with group/subcategory modals Migrations (all additive): - AddShareUrls, AddShowactDynamicForm, AddCategoryViewerRanges, AddSessionIdleTimeoutSettings, AddSeasonSubcategoryTemplates, AddNominationGroupTrackerIdentity, AddShowactApplicationSchedule, AddSeasonWorkflowRulesJson Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
28 lines
660 B
C#
28 lines
660 B
C#
namespace Backend.Contracts;
|
|
|
|
public sealed record CandidateSummaryDto(
|
|
int Id,
|
|
string DisplayName,
|
|
string ChannelSlug,
|
|
string ChannelUrl,
|
|
string Platform,
|
|
string? ClipUrl,
|
|
string? ClipTitle,
|
|
string? ClipPlatform,
|
|
string? ClipEmbedStatus);
|
|
|
|
public sealed record PublicCategoryDetailDto(
|
|
int Id,
|
|
string Name,
|
|
string GroupName,
|
|
string Description,
|
|
int MaxNomineesPerUser,
|
|
int? ViewerRangeMin,
|
|
int? ViewerRangeMax,
|
|
IEnumerable<CandidateSummaryDto> Candidates);
|
|
|
|
public sealed record SeasonCategoriesResponse(
|
|
int SeasonId,
|
|
int Year,
|
|
IEnumerable<PublicCategoryDetailDto> Categories);
|