using System.Collections.ObjectModel;
using System.Text.Json.Serialization;
namespace Jellyfin.Plugin.JRay.Models;
///
/// One actor entry in a , with the time windows during
/// which they are present in the scene.
///
///
/// "Present in the scene", not "visible on screen": a window is a claim about
/// scene membership, so an actor who turns away or is off-camera during a
/// reverse shot is still present. Two windows mean a genuine departure and
/// return, not a break in detection.
///
/// Identity is public identifiers — never a name alone, which is ambiguous and
/// unstable. jellyfin_id is preferred locally and stripped on
/// contribution, being meaningless outside the instance that produced it.
///
// TRACES: JR-004, JR-007 | SR-001, SR-002
public class TruthActor
{
///
/// Gets or sets the actor's display name.
///
[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
///
/// Gets or sets the actor's IMDB person id (e.g. "nm0000158"), or "" if unresolved.
///
[JsonPropertyName("imdb_id")]
public string ImdbId { get; set; } = string.Empty;
///
/// Gets or sets the actor's TMDB person id, or "" if unresolved.
///
[JsonPropertyName("tmdb_id")]
public string TmdbId { get; set; } = string.Empty;
///
/// Gets or sets the actor's Jellyfin Person item GUID, or "" if unresolved.
///
[JsonPropertyName("jellyfin_id")]
public string JellyfinId { get; set; } = string.Empty;
///
/// Gets the list of [start_sec, end_sec] windows during which the actor is on screen.
///
[JsonPropertyName("scenes")]
[JsonObjectCreationHandling(JsonObjectCreationHandling.Populate)]
public Collection Scenes { get; } = new();
}