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; } }