dc3095a2d5
- internal/provenance: 全链路存证(送审/审核/发码/转码/入库/注入)+责任界定 - service: Provenance/Accountability(定位首次哈希变化节点)/CopyrightEvidence/MatchInfringement - api: /content/provenance, /accountability, /evidence, /infringe-match - 转码版哈希不误判为篡改; 感知哈希侵权比对分级(high/medium) - 11项新测试通过; 端到端: 审播一致判定+证据链+侵权命中
59 lines
2.5 KiB
Go
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 {
|
|
MACode 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 {
|
|
MACode 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 {
|
|
MACode 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 {
|
|
MACode string `json:"ma_code"`
|
|
Title string `json:"title"`
|
|
Distance int `json:"hamming_distance"` // 感知哈希汉明距离,越小越相似
|
|
Similarity string `json:"similarity"` // high/medium
|
|
}
|