dbd90ee52a
Player-service play-session tracker (floor + 3-bucket classify), SharePopover share tracker with debounce, sendBeacon interop, proxied rate-limited POST api/event/{play,share}, append-only event logs + incremental play_counter with server-side release resolution. Migration authored, not applied. No anonId, no read surface.
19 lines
657 B
C#
19 lines
657 B
C#
using DeepDrftModels.Enums;
|
|
|
|
namespace DeepDrftModels.DTOs;
|
|
|
|
/// <summary>
|
|
/// Wire payload for <c>POST api/event/play</c> (Phase 16 §2.2 / §4.3). The client sends only what it
|
|
/// cheaply knows — the track key and the client-computed completion bucket; the server resolves the
|
|
/// release. No duration or raw position is transmitted (a privacy plus — only a coarse bucket leaves
|
|
/// the browser). <see cref="AnonId"/> is reserved for wave 16.3 and stays null in wave 16.1.
|
|
/// </summary>
|
|
public class PlayEventDto
|
|
{
|
|
public string? TrackEntryKey { get; set; }
|
|
|
|
public PlayBucket Bucket { get; set; }
|
|
|
|
public string? AnonId { get; set; }
|
|
}
|