Files
AzuTear b53c7fb736 Add viewer-range categories, nomination tracking, dynamic showact form, session timeout, share URLs, and workflow-per-season
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>
2026-06-28 23:32:21 +02:00

54 lines
1.3 KiB
C#

namespace Backend.Contracts;
public sealed record SponsorDto(
int Id,
int SeasonId,
string Name,
string WebsiteUrl,
string LogoUrl,
string Description,
string Tier,
int SortOrder,
bool IsVisible);
public sealed record PublicSponsorsResponse(int Year, SponsorDto[] Items);
public sealed record UpsertSponsorRequest(
string Name,
string WebsiteUrl,
string LogoUrl,
string Description,
string Tier,
int SortOrder,
bool IsVisible);
public sealed record ShowactApplicationDto(
int Id,
int SeasonId,
string ArtistName,
string ContactEmail,
string ContactDiscord,
string PlatformUrl,
string PerformanceType,
string Description,
string TechnicalNotes,
string ReferenceUrl,
string Status,
string? ReviewNote,
DateTimeOffset CreatedAt,
DateTimeOffset? ReviewedAt,
string FieldResponsesJson);
public sealed record CreateShowactApplicationRequest(
string? ArtistName = null,
string? ContactEmail = null,
string? ContactDiscord = null,
string? PlatformUrl = null,
string? PerformanceType = null,
string? Description = null,
string? TechnicalNotes = null,
string? ReferenceUrl = null,
string? FieldResponsesJson = null);
public sealed record UpdateShowactStatusRequest(string Status, string? ReviewNote);