Files
MAcode/tcs-iptv/internal/model/provenance.go
T
selfrelease dc3095a2d5 feat(phase2): 追责取证与确权举证(F19/F20)
- internal/provenance: 全链路存证(送审/审核/发码/转码/入库/注入)+责任界定
- service: Provenance/Accountability(定位首次哈希变化节点)/CopyrightEvidence/MatchInfringement
- api: /content/provenance, /accountability, /evidence, /infringe-match
- 转码版哈希不误判为篡改; 感知哈希侵权比对分级(high/medium)
- 11项新测试通过; 端到端: 审播一致判定+证据链+侵权命中
2026-06-14 17:13:58 +08:00

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
}