Files
MAcode/tcs-iptv/internal/model/provenance.go
T

59 lines
2.5 KiB
Go

package model
import "time"
// 全链路存证与确权相关模型(二期 F19/F20,对应需求22/需求23)。
// ProvenanceNode 全链路节点标识。
type ProvenanceNode string
const (
NodeSubmit ProvenanceNode = "cp_submit" // CP 送审
NodeCSPSReview ProvenanceNode = "csps_review" // CSPS 合规审核
NodeIssue ProvenanceNode = "ma_issue" // 监管发码签发
NodeTranscode ProvenanceNode = "transcode" // 转码绑定
NodeIngest ProvenanceNode = "media_ingest" // 媒资库入库
NodeInject ProvenanceNode = "cdn_inject" // 运营商 CDN 注入
)
// ProvenanceEvent 全链路存证事件(需求22-AC1/AC3):带时间戳、操作方、不可篡改。
type ProvenanceEvent struct {
CCCode string `json:"ma_code"`
Node ProvenanceNode `json:"node"`
HashValue string `json:"hash_value"` // 该节点经手的内容哈希(可空,如纯审核结论)
Operator string `json:"operator"` // 操作方标识
Detail string `json:"detail"`
Timestamp time.Time `json:"timestamp"`
}
// AccountabilityReport 责任界定取证报告(需求22-AC2/AC4)。
type AccountabilityReport struct {
CCCode string `json:"ma_code"`
Trail []ProvenanceEvent `json:"trail"`
BaselineHash string `json:"baseline_hash"` // 发码时绑定的基准哈希
FirstChange *ProvenanceEvent `json:"first_change"` // 首次发生哈希变化的节点(nil=全程一致)
Consistent bool `json:"consistent"` // 全程审播一致
Conclusion string `json:"conclusion"`
}
// CopyrightEvidence 版权确权证据链(需求23-AC1/AC2)。
type CopyrightEvidence struct {
CCCode string `json:"ma_code"`
Title string `json:"title"`
ContentHash string `json:"content_hash"`
Issuer string `json:"issuer"`
IssueDate string `json:"issue_date"`
ChainAnchor string `json:"chain_anchor"` // 上链锚定(tx/摘要)
FirstSeenAt time.Time `json:"first_seen_at"` // 最早登记时间戳(谁先锁定谁有权)
Trail []ProvenanceEvent `json:"trail"`
Statement string `json:"statement"`
}
// InfringeMatch 疑似侵权命中(需求23-AC3)。
type InfringeMatch struct {
CCCode string `json:"ma_code"`
Title string `json:"title"`
Distance int `json:"hamming_distance"` // 感知哈希汉明距离,越小越相似
Similarity string `json:"similarity"` // high/medium
}