package com.kaidi.oa.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; import java.time.Instant; /** * 内容稿件版本历史(品牌推广部·内容创作与审核发布·版本管理)。 * * 每次稿件升版(saveVersion)或进入发布状态时自动快照一条本记录, * 保存当时的正文(bodySnapshot)与标题(titleSnapshot), * 前端可通过 /versions 列表与 /versions/{vid}/diff 获取 diff 追溯能力。 * * action:草稿保存 / 提交审核 / 已通过 / 已发布 / 手动存版。 */ @Entity @Table(name = "cpc_version") public class ContentPieceVersion { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; /** 所属稿件 id。 */ private Long contentId; /** 版本标签,例如 V1、V2。 */ private String versionLabel; /** 快照时的动作语义。 */ private String action; /** 操作人。 */ private String operator; /** 修改说明。 */ private String changeNote; /** 标题快照。 */ private String titleSnapshot; /** 正文快照(完整内容,用于 diff 对比)。 */ @Column(name = "body_snapshot", columnDefinition = "TEXT") private String bodySnapshot; private Instant createdAt; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getContentId() { return contentId; } public void setContentId(Long contentId) { this.contentId = contentId; } public String getVersionLabel() { return versionLabel; } public void setVersionLabel(String versionLabel) { this.versionLabel = versionLabel; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getOperator() { return operator; } public void setOperator(String operator) { this.operator = operator; } public String getChangeNote() { return changeNote; } public void setChangeNote(String changeNote) { this.changeNote = changeNote; } public String getTitleSnapshot() { return titleSnapshot; } public void setTitleSnapshot(String titleSnapshot) { this.titleSnapshot = titleSnapshot; } public String getBodySnapshot() { return bodySnapshot; } public void setBodySnapshot(String bodySnapshot) { this.bodySnapshot = bodySnapshot; } public Instant getCreatedAt() { return createdAt; } public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } }