package com.kaidi.oa.domain; import java.time.Instant; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Column; import jakarta.persistence.Table; /** * 知识产权资产的生命周期事件流水(合规与审计追溯,需求功能5)。每一次状态机流转 / 法律状态变更 / * 官方编号录入 / 缴费确认 / 内部复核 都追加一条不可删除的事件,保留操作人、时间、变更前后值, * 满足"关键数据不可删除,只可变更并保留历史版本"的合规要求,构成可举证的电子证据链。 * * eventType:流程流转 / 法律状态变更 / 编号登记 / 缴费 / 内部复核 / 备注。 */ @Entity @Table(name = "ip_asset_event") public class IpAssetEvent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Long ipAssetId; private String eventType; /** 变更字段(如 stage / legalStatus)。 */ private String field; private String fromValue; private String toValue; @Column(columnDefinition = "TEXT") private String note; /** 操作人(跟案人/复核人)。 */ private String operator; /** 操作 IP(合规审计缺口补完:事件记录采集操作方 IP,满足"查看证书/修改状态确认缴费记录IP"要求)。 */ private String clientIp; private Instant createdAt; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getIpAssetId() { return ipAssetId; } public void setIpAssetId(Long ipAssetId) { this.ipAssetId = ipAssetId; } public String getEventType() { return eventType; } public void setEventType(String eventType) { this.eventType = eventType; } public String getField() { return field; } public void setField(String field) { this.field = field; } public String getFromValue() { return fromValue; } public void setFromValue(String fromValue) { this.fromValue = fromValue; } public String getToValue() { return toValue; } public void setToValue(String toValue) { this.toValue = toValue; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } public String getOperator() { return operator; } public void setOperator(String operator) { this.operator = operator; } public String getClientIp() { return clientIp; } public void setClientIp(String clientIp) { this.clientIp = clientIp; } public Instant getCreatedAt() { return createdAt; } public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } }