namespace WordVersioning.Api.Models;
/// Snapshot ของเอกสารหนึ่ง version (spec ส่วน 7)
public class DocumentVersion
{
public Guid Id { get; set; }
public Guid DocumentId { get; set; }
public Document? Document { get; set; }
/// generate เริ่ม 0; add-in เริ่ม 1 — auto increment ต่อ document (unique index กัน race)
public int VersionNumber { get; set; }
/// MinIO object key: {documentId}/v{VersionNumber:D4}_{clientVersionId}.docx
public string ObjectKey { get; set; } = string.Empty;
/// FR-15: null เมื่อไม่มี PDF (v0 หรือ capture/upload ล้ม)
public string? PdfObjectKey { get; set; }
/// SHA256 hex ของไฟล์ (ตรวจ integrity ภายหลัง)
public string ContentHash { get; set; } = string.Empty;
/// จาก claim `sub` เท่านั้น — ห้ามรับจาก client
public string CreatedByUserId { get; set; } = string.Empty;
public DateTimeOffset CreatedAt { get; set; }
/// Snapshot ค่า fields ของ version นี้ (FR-11) — map tag→text แบบ JSON
public string? FieldsSnapshotJson { get; set; }
/// คำอธิบาย version จากผู้ใช้ แบบ git commit message (FR-13) — optional ยาวสูงสุด 2048
public string? Message { get; set; }
}