feat: 更新CC码监管方案业务版文档,新增摘要、UGC专项、直播专项、存量处置、误判申诉、水印嵌入、CC码生命周期、组织保障等章节;同步macode到cccode重命名及其他代码变更

This commit is contained in:
freedakgmail
2026-07-20 22:25:40 +08:00
parent 9f1e2d0a21
commit eb4a82a877
76 changed files with 2600 additions and 2122 deletions
+2 -2
View File
@@ -6,7 +6,7 @@ import "time"
// Authorization 信息网络传播权授权(需求25-AC1)。
type Authorization struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Regions []string `json:"regions"` // 授权地域(省码),空=全国
Platforms []string `json:"platforms"` // 授权平台/运营商,空=不限
ExpiryAt time.Time `json:"expiry_at"` // 授权到期;零值=长期
@@ -22,7 +22,7 @@ type AuthCheckResult struct {
// CrossProvinceResult 跨省复用准入结果(需求13)。
type CrossProvinceResult struct {
Admitted bool `json:"admitted"`
MACodeValid bool `json:"ma_code_valid"`
CCCodeValid bool `json:"ma_code_valid"`
HashConsistent bool `json:"hash_consistent"`
NotBlacklisted bool `json:"not_blacklisted"`
ProvinceFlowNo string `json:"province_flow_no"` // 本省审核流水号
+11 -11
View File
@@ -16,7 +16,7 @@ const (
// Content 内容主表(Content Registry)。
type Content struct {
ContentTwinID string `json:"content_twin_id"`
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
MAType string `json:"ma_type"`
Title string `json:"title"`
EpisodeCount int `json:"episode_count"`
@@ -95,8 +95,8 @@ const (
StatusInLibrary = "in_library" // 已入媒资库
StatusPublished = "published" // 已发布
StatusRevoked = "revoked" // 已下架
StatusMerged = "merged" // 已合并入其他MA
StatusSplit = "split" // 已拆分为多个MA
StatusMerged = "merged" // 已合并入其他CC
StatusSplit = "split" // 已拆分为多个CC
)
// ContentQueryResult 多维度标识查询的统一返回结果。
@@ -110,16 +110,16 @@ type ContentQueryResult struct {
// MergeRequest MA 合并请求(将多个 MA 码合并为一个主 MA 码)。
type MergeRequest struct {
PrimaryMACode string `json:"primary_ma_code"` // 合并后保留的主 MA 码
SecondaryMACodes []string `json:"secondary_ma_codes"` // 被合并的 MA 码列表(合并后标记为 merged)
PrimaryCCCode string `json:"primary_ma_code"` // 合并后保留的主 MA 码
SecondaryCCCodes []string `json:"secondary_ma_codes"` // 被合并的 MA 码列表(合并后标记为 merged)
Reason string `json:"reason"` // 合并原因
Operator string `json:"operator"` // 操作人
}
// MergeResult MA 合并结果。
type MergeResult struct {
PrimaryMACode string `json:"primary_ma_code"` // 主 MA 码
MergedMACodes []string `json:"merged_ma_codes"` // 已合并的 MA 码列表
PrimaryCCCode string `json:"primary_ma_code"` // 主 MA 码
MergedCCCodes []string `json:"merged_ma_codes"` // 已合并的 MA 码列表
MigratedBindings int `json:"migrated_bindings"` // 迁移的哈希绑定数
MigratedMappings int `json:"migrated_mappings"` // 迁移的映射数
TxID string `json:"tx_id"` // 链上交易 ID
@@ -127,7 +127,7 @@ type MergeResult struct {
// SplitRequest MA 拆分请求(将一个 MA 码拆分为多个独立 MA 码)。
type SplitRequest struct {
SourceMACode string `json:"source_ma_code"` // 被拆分的源 MA 码
SourceCCCode string `json:"source_ma_code"` // 被拆分的源 MA 码
Splits []SplitTarget `json:"splits"` // 拆分目标列表
Reason string `json:"reason"` // 拆分原因
Operator string `json:"operator"` // 操作人
@@ -135,15 +135,15 @@ type SplitRequest struct {
// SplitTarget 拆分目标:每集或每组内容拆分后的新 MA 码信息。
type SplitTarget struct {
NewMACode string `json:"new_ma_code"` // 拆分后新分配的 MA 码
NewCCCode string `json:"new_ma_code"` // 拆分后新分配的 MA 码
Title string `json:"title"` // 拆分后内容标题
Episodes []int `json:"episodes"` // 关联的集号列表(空表示整剧拆分)
}
// SplitResult MA 拆分结果。
type SplitResult struct {
SourceMACode string `json:"source_ma_code"` // 源 MA 码
NewMACodes []string `json:"new_ma_codes"` // 拆分后生成的新 MA 码列表
SourceCCCode string `json:"source_ma_code"` // 源 MA 码
NewCCCodes []string `json:"new_ma_codes"` // 拆分后生成的新 MA 码列表
MigratedBindings int `json:"migrated_bindings"` // 迁移的哈希绑定数
MigratedMappings int `json:"migrated_mappings"` // 迁移的映射数
TxID string `json:"tx_id"` // 链上交易 ID
+3 -3
View File
@@ -15,7 +15,7 @@ const (
// PlaybackEvent 运营商以 MA 码为维度回传的播放/消费事件(需求9-AC1)。
type PlaybackEvent struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Episode int `json:"episode"` // 0=整剧/单体
PlatformID string `json:"platform_id"` // 运营商节点
UserHash string `json:"user_hash"` // 用户标识哈希(隐私保护)
@@ -27,7 +27,7 @@ type PlaybackEvent struct {
// PlaybackSummary 按 MA 码聚合的可信播放数据(需求9-AC2、需求21-AC1)。
type PlaybackSummary struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
TotalPlays int64 `json:"total_plays"`
TotalComplete int64 `json:"total_complete"`
TotalRevenue int64 `json:"total_revenue_cent"`
@@ -55,7 +55,7 @@ func DefaultShareConfig() RevenueShareConfig {
// Settlement 基于可信播放数据的分账结算结果(需求21-AC3)。
type Settlement struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Period string `json:"period"`
TotalRevenue int64 `json:"total_revenue_cent"`
CPShare int64 `json:"cp_share_cent"`
+4 -4
View File
@@ -18,7 +18,7 @@ const (
// ProvenanceEvent 全链路存证事件(需求22-AC1/AC3):带时间戳、操作方、不可篡改。
type ProvenanceEvent struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Node ProvenanceNode `json:"node"`
HashValue string `json:"hash_value"` // 该节点经手的内容哈希(可空,如纯审核结论)
Operator string `json:"operator"` // 操作方标识
@@ -28,7 +28,7 @@ type ProvenanceEvent struct {
// AccountabilityReport 责任界定取证报告(需求22-AC2/AC4)。
type AccountabilityReport struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Trail []ProvenanceEvent `json:"trail"`
BaselineHash string `json:"baseline_hash"` // 发码时绑定的基准哈希
FirstChange *ProvenanceEvent `json:"first_change"` // 首次发生哈希变化的节点(nil=全程一致)
@@ -38,7 +38,7 @@ type AccountabilityReport struct {
// CopyrightEvidence 版权确权证据链(需求23-AC1/AC2)。
type CopyrightEvidence struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Title string `json:"title"`
ContentHash string `json:"content_hash"`
Issuer string `json:"issuer"`
@@ -51,7 +51,7 @@ type CopyrightEvidence struct {
// InfringeMatch 疑似侵权命中(需求23-AC3)。
type InfringeMatch struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Title string `json:"title"`
Distance int `json:"hamming_distance"` // 感知哈希汉明距离,越小越相似
Similarity string `json:"similarity"` // high/medium
+1 -1
View File
@@ -4,7 +4,7 @@ package model
// FilingRecord 备案/网标关联(三期 A.1,对接广电总局备案/发行许可证系统)。
type FilingRecord struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
LicenseNo string `json:"license_no"` // 网络剧片发行许可证号(网标号)
FilingNo string `json:"filing_no"` // 重点网络影视剧备案号
BoundAt string `json:"bound_at"`
+5 -5
View File
@@ -44,7 +44,7 @@ type ParsedMA struct {
// ResolveResult 跨域解析网关返回(四期 C.1/C.2,大小屏统一解析)。
type ResolveResult struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Parsed ParsedMA `json:"parsed"`
Title string `json:"title"`
Status string `json:"status"` // 流通状态(published/revoked/...
@@ -58,7 +58,7 @@ type ResolveResult struct {
// ScanVerifyResult 用户扫码验真返回(四期 B.2)。
type ScanVerifyResult struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
Authentic bool `json:"authentic"` // MA 码真伪(链上存在且结构合法)
Compliant bool `json:"compliant"` // 是否合规流通(未下架)
Status string `json:"status"`
@@ -70,7 +70,7 @@ type ScanVerifyResult struct {
// PurchaseRecord 用户一次购买记录(四期 D.1)。
type PurchaseRecord struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
UserHash string `json:"user_hash"`
Screen ScreenType `json:"screen"` // 购买时所在屏
PurchasedAt time.Time `json:"purchased_at"`
@@ -79,12 +79,12 @@ type PurchaseRecord struct {
// UserRights 用户跨屏权益账户:以 MA 码为维度记录购买,任一屏购买即全屏通看。
type UserRights struct {
UserHash string `json:"user_hash"`
Purchases map[string]PurchaseRecord `json:"purchases"` // maCode -> record
Purchases map[string]PurchaseRecord `json:"purchases"` // ccCode -> record
}
// CrossScreenRightsResult 跨屏权益核验返回(四期 D.1)。
type CrossScreenRightsResult struct {
MACode string `json:"ma_code"`
CCCode string `json:"ma_code"`
UserHash string `json:"user_hash"`
Entitled bool `json:"entitled"` // 是否有权益(任一屏购买即全屏通看)
RequestScreen ScreenType `json:"request_screen"` // 当前请求屏